将(-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))
我知道是怎么回事了。麦克劳林公式最后一项是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 就可以了。