在Python上评估衍生产品时出错(使用.subs,.evalf和.lambdify)

问题描述 投票:0回答:1

我试图分别计算泰勒展开的元素,但没有得到我应该得到的结果。近似函数是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

我显然只是从语言开始,所以谢谢你的帮助。

python evaluate lambdify evalf
1个回答
0
投票

我找到了一个初学者如何在python中扩展Taylor。检查一下,也许你的所有问题都在那里得到解答:

http://firsttimeprogrammer.blogspot.com/2015/03/taylor-series-with-python-and-sympy.html

我测试了你的代码,它工作正常。就像Bazingaa在评论中指出的那样,python如何在内部保存函数只是一个问题。有人可以说,对于计算机来说,需要更少的RAM来保存321*x - 321而不是321*(x - 1)**1。在你的第一个输出行,它也给你1而不是(x - 1)**0

© www.soinside.com 2019 - 2024. All rights reserved.