0

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

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

4

1 回答 1

0

我找到了一个初学者指南如何在 python 中扩展泰勒。看看吧,也许你所有的问题都在那里得到了回答:

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

于 2018-09-14T11:51:32.090 回答