【发布时间】:2018-09-14 11:28:05
【问题描述】:
我试图单独计算泰勒展开的元素,但没有得到我应该得到的结果。逼近的函数是 x**321,围绕 x=1 的泰勒展开式的前三个元素应该是: 1 + 321(x-1) + 51360(x-1)**2 出于某种原因,与第二个术语关联的代码不起作用。 请参阅下面的代码。
import sympy as sy
import numpy as np
import math
import matplotlib.pyplot as plt
x = sy.Symbol('x')
f = x**321
x0 = 1
func0 = f.diff(x,0).subs(x,x0)*((x-x0)**0/factorial(0))
print(func0)
func1 = f.diff(x,1).subs(x,x0)*((x-x0)**1/factorial(1))
print(func1)
func2 = f.diff(x,2).subs(x,x0)*((x-x0)**2/factorial(2))
print(func2)
我运行这段代码得到的打印结果是
1
321x - 321
51360*(x - 1)**2
我也使用了 .evalf 和 .lambdify 但结果是一样的。我不明白错误来自哪里。
f = x**321
x = sy.Symbol('x')
def fprime(x):
return sy.diff(f,x)
DerivativeOfF = sy.lambdify((x),fprime(x),"numpy")
print(DerivativeOfF(1)*((x-x0)**1/factorial(1)))
321*x - 321
我显然只是从语言开始,所以谢谢你的帮助。
【问题讨论】:
-
你的 sy 后面是什么包?您可以在代码的开头包含您的导入吗?
-
错误在哪里?从您的输出看来,一切正常。您已经打印了正确的输出
-
不,我认为她的意思是在第二行应该有 321*(x-1)
-
但这只是输出的打印问题,而不是错误。两种形式是等价的
-
告诉她不是我。哦,等等,你刚刚做了:P
标签: python evaluate lambdify evalf