ln(1 + x)的泰勒级数



我试图创建一个函数,它计算ln(1 + x)的泰勒级数,它接受z参数x的值)和k参数(直到它应该计算哪一项)。

当我检查函数时(使用一些打印))第三项出错,因为它给出2/3代替1/3. 我用计算器算过了,应该是对的,但我想我漏掉了什么。希望能得到进一步的帮助!

ln(1 + x)的泰勒级数

代码:

# !{sys.executable} -m pip install sympy
import math
from sympy import *
from sympy import diff, sin, exp 
from sympy.abc import x,y 

def sum_deff_ln(z , k):
expr = ln(1 + x)
g = 0
for aantal in range(g, k, 1):
if aantal == 0:
getal = diff(expr,x)
q = g + 1 
subantwoord = lambdify(x, getal)
antwoord = subantwoord((g))*z**(q)
elif aantal == 1:
getal = diff(getal,x)
print(getal)
subantwoord = lambdify(x, getal)
q += 1
antwoord = antwoord + (subantwoord((g))/q)*z**(q)
print(antwoord)
else:
getal = diff(getal,x)
subantwoord = lambdify(x, getal)
print(getal)
q += 1
antwoord = antwoord + (subantwoord((g))/q)*z**(q)
print(antwoord)
if aantal == k-1:
print(antwoord)

sum_deff_ln(1, 3)

输出:

-1/(x + 1)**2
0.5
2/(x + 1)**3
3
1.1666666666666665
1.1666666666666665

可以简化为(不需要任何包):

def approx_ln(z,k):
antwoord = 0
for i in range(1 , k+1):
subantwoord = ((-1)**(i+1) / i) * z**i
antwoord += subantwoord
return antwoord

相关内容

  • 没有找到相关文章

最新更新