繁体   English   中英

带有 Sympy 的 ln(1 + x) 的泰勒级数

[英]Taylorseries of ln(1 + x) with Sympy

我试图创建一个函数,它计算 ln(1 + x) 的 taylorseries,它接受一个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM