[英]How does sympy simplify ln((exp(x)+1)/exp(x)) to log(1+exp(-x))?
[英]Taylorseries of ln(1 + x) with Sympy
我试图创建一个函数,它计算 ln(1 + x) 的 taylorseries,它接受一个z 参数( x的值)和一个k 参数(直到它应该计算哪个术语)。
当我检查函数(带有一些打印)时,它在第三个术语中出错,因为它给出2/3而不是1/3 。 我已经在我的计算器上计算了它,它应该是正确的,但我想我错过了一些东西。 我希望我能得到进一步的帮助!
代码:
# !{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.