我在评估 Sympy 光学模块的 TWave 实例时遇到问题。
起初,我尝试lambdify()使用此代码:
from sympy import symbols
from sympy.physics.optics import TWave
import numpy as np
A, f, phi = symbols('A f phi')
wave = TWave(A, f, phi)
# the evaluation
xpoint = tpoint = np.linspace(0, 10, 100)
fb = lambdify([A, f, phi, x, t, n], wave.rewrite('cos'))
fb(1, 1000, 0.5*np.pi, xpoint, tpoint, 1)
但是,我收到了这个错误:AttributeError: 'Float' object has no attribute 'cos'相反。
然后我尝试了一个简单evalf()的一点,只是为了确定。
# evaluation with evalf()
data = {
'A0': 1,
'f' : 100,
'phi' : np.pi/2,
}
ff = wave.subs(data).rewrite('cos')
ff
# result: TWave instance, rewritten in cosine term, with variable substituted
现在,后来发生的事情让我感到奇怪:我一眼就看到需要替换的变量有 3 个,即x, t, n. 但是,当我尝试这样做时:
ff.subs({'x':1, 't':10, 'n':1})
我得到了ValueError: summation of quantities of incompatible dimensions错误。我试图n从 subs 字典中删除:
ff.subs({'x':1, 't':10})
它起作用了,但n仍然是一个象征性的例子。因此,我无法从中获得任何数值ff.subs({'x':1, 't':10}).evalf()
任何想法?我只想能够评估任何给定点的横波值。
谢谢,
PS:可能不相关,但我在 Anaconda 上使用 Sympy 1.2
一只甜甜圈
相关分类