下面的代码与您要查找的代码非常接近。这是为了解析函数的代码,你想把它展开成泰勒级数,用Sympy把它转换成符号表示,然后计算泰勒展开。在
一个限制是需要有一个显式函数定义,这样就不能使用lambda表达式。这可以通过进一步的工作来解决。否则代码就可以满足您的要求。请注意,当您定义一个函数时,它必须包含y = ...形式的一行代码才能工作from inspect import *
import sympy
def f(x):
# a very complicated function
y = sin(x) + cos(x) + log(abs(x)+2)**2/e**2 + sin(cos(x/2)**2) + 1
return y
def my_sin(x):
y = sin(x)
return y
def my_exp(x):
y = e**x
return y
x = sympy.Symbol('x')
def get_polynomial(function, x0, degree):
# parse function definition code
lines_list = getsource(function).split("\n")
for line in lines_list:
if '=' in line:
func_def = line
elements = func_def.split('=')
line = ' '.join(elements[1:])
sympy_function = sympy.sympify(line)
# compute taylor expansion symbolically
i = 0
taylor_exp = sympy.Integer(0)
while i <= degree:
taylor_exp = taylor_exp + (sympy.diff(sympy_function,x,i).subs(x,x0))/(sympy.factorial(i))*(x-x0)**i
i += 1
return taylor_exp
print (get_polynomial(my_sin,0,5))
print (get_polynomial(my_exp,0,5))
print (get_polynomial(f,0,5))
如果觉得《python 泰勒展开式_python函数的Taylor级数sympy表达式》对你有帮助,请点赞、收藏,并留下你的观点哦!