首页 > 解决方案 > Python 麦克劳林系列 ln(x+1)

问题描述

我必须在 Python 上编写一个 Maclaurin 系列 ln(x+1) 的程序。

我需要对两个值使用输入函数:x,n。然后检查这些值是否合法并计算围绕点 x 的表达式 ln (1 + ) 的 Maclaurin 近似值(n 阶)。

*麦克劳林级数 ln(x+1)= ((-1)^n/n)*x^n 之和

当我计算到表达式时,我最后堆叠了我写的内容(在之前的所有检查之后):

for i in range(n + 1):
    if i <= 1:
        continue
    else:
        x = x + (((-1) ** (i + 1)) * (x ** i) / i)

当我输入测试时,我得到一个数字,但这是一个错误的答案。

请帮助我理解这段代码有什么问题。

标签: pythonmath

解决方案


您正在修改x循环的每次迭代中的值。添加并将部分和存储在另一个变量中。

def maclaurin_ln(x, n):
    mac_sum = 0
    for i in range(1, n + 1):
        mac_sum += (((-1) ** (i + 1)) * (x ** i) / i)
    return mac_sum

您可以使用内置函数对此进行测试,log1p以查看它们的接近程度。

  1. 对于ln(2)不同的 n,
from tabulate import tabulate
res = []
for n in [1, 10, 100, 1000, 10000]:
    p = math.log1p(1)
    q = maclaurin_ln(1, n)
    res.append([1, n, p, q, q-p])
tabulate(res, headers=["x", "n", "log1p", "maclaurin_ln", "maclaurin_ln-log1p"])
  x      n     log1p    maclaurin_ln    maclaurin_ln-log1p
---  -----  --------  --------------  --------------------
  1      1  0.693147        1                  0.306853
  1     10  0.693147        0.645635          -0.0475123
  1    100  0.693147        0.688172          -0.004975
  1   1000  0.693147        0.692647          -0.00049975
  1  10000  0.693147        0.693097          -4.99975e-05
  1. 对于不同的 x,
res = []
for x in range(10):
    p = math.log1p(x/10)
    q = maclaurin_ln(x/10, 100)
    res.append([x/10, 1000, p, q, q-p])
tabulate(res, headers=["x", "n", "log1p", "maclaurin_ln", "maclaurin_ln-log1p"])
  x     n      log1p    maclaurin_ln    maclaurin_ln-log1p
---  ----  ---------  --------------  --------------------
0    1000  0               0                   0
0.1  1000  0.0953102       0.0953102           1.38778e-17
0.2  1000  0.182322        0.182322            2.77556e-17
0.3  1000  0.262364        0.262364           -1.11022e-16
0.4  1000  0.336472        0.336472            0
0.5  1000  0.405465        0.405465           -1.11022e-16
0.6  1000  0.470004        0.470004            5.55112e-17
0.7  1000  0.530628        0.530628           -4.44089e-16
0.8  1000  0.587787        0.587787           -9.00613e-13
0.9  1000  0.641854        0.641854           -1.25155e-07

推荐阅读