我刚来这地方。我想编写一个简洁的小程序来检查我的考试准备的解决方案,因为我的教授没有提供任何解决方案。对于非线性微分方程 f,我想找到第一个泰勒多项式。因此,我对每个变量取 f 的导数。现在我的问题是:我必须计算某个给定点的每个导数的值。对于仅存储在变量中且在计算时未明确知道的此类复杂表达式,我该如何做到这一点?
这就是我现在所做的,没有评估:
f = input('Enter function: ')
fy1 = diff(f,y1)
fy = diff(f,y)
fu2 = diff(f,u2)
fu1 = diff(f,u1)
fu = diff(f,u)
我尝试了这个函数,因为我希望它会自动识别 f 中的变量:
def calculate(f,y1,y,u2,u1,u):
return f
...
fy1 = calculate(diff(f,y1),0,-1,0,0,-4)
fy = calculate(diff(f,y),0,-1,0,0,-4)
fu2 = calculate(diff(f,u2),0,-1,0,0,-4)
fu1 = calculate(diff(f,u1),0,-1,0,0,-4)
fu = calculate(diff(f,u),0,-1,0,0,-4)
编辑:
我尝试了其他方法:对于 f= -5 y y1+4*yu(y1 是 y 的导数),fy1 是 f 对 y1 的导数:
fy1= diff(f, y1)
fy1.subs([(y1,0),(y,-1),(u2,0),(u1,0),(u,-4)])
print("{}".format(fy1))
但是 subs() 没有替换任何值,因为输出如下:
-5*y
我想这与将变量定义为 sympy 符号有关吗?
y1 = symbols('y1')
y = symbols('y')
u2 = symbols('u2')
u1 = symbols('u1')
u = symbols('u')
但我需要 sympy diff() 函数