mfp吧 关注:777贴子:4,990
  • 12回复贴,共1

我用泰勒公式写的ln(1+x)函数误差太大怎么办?

只看楼主收藏回复

function myln(x1)
variable x=x1-1,a=0
for variable n=1 to 100 step 1
a=a+(-1)**(n-1)/n*x**(n)
next
return a
endf



来自Android客户端1楼2021-09-11 08:02回复
    将(-1)**(n-1)改成
    variable b = 1
    if mod(n, 2) == 0
    b = -1
    endif
    然后
    a = a + b/(n*x**(n))
    另外,你的代码是不是少了一对括号?
    a=a+(-1)**(n-1)/n*x**(n)
    还是
    a=a+(-1)**(n-1)/(n*x**(n))


    2楼2021-09-11 14:30
    收起回复
      怎么回事???



      来自Android客户端3楼2021-09-11 19:03
      回复
        我知道是怎么回事了。麦克劳林公式最后一项是R_n(x),意思是说除了前面按照傅里叶分解出的x个各项,还有一个x高次方(也就是n次方以上)error,这个x高次方的error在x小于1时随n的增大趋近于0,但是如果x大于1,这个x高次方的error随n的增大趋近于无穷,所以你当然算不出来。你把代码改成
        function myln(x1)
        variable x=x1-1277.1,a=ln(1277.1)
        for variable n=1 to 100 step 1
        print_line("add " + ((-1)**(n-1)/n*x**(n)))
        a=a+(-1)**(n-1)/n*x**(n)
        next
        return a
        endf
        就可以了。


        4楼2021-09-12 07:10
        收起回复