Taylor系列在Matlab中使用while循环

时间:2018-03-31 00:01:18

标签: matlab while-loop taylor-series

我正在尝试使用Maclaurin系列近似cos(x)。 x和错误界限的值需要是用户输入,并且用户需要查看达到该答案所需的估计值和迭代次数。我试图用x = 2和错误< = .001来演示它。使用这些参数,我的代码总是返回8次迭代,答案为-.0476。我做错了什么?

function [CosApprox, Numberofterms] = cos_approx(x, E)
    k(1)=1;
    T=1;
    cos_approx(1)=1
    while T>=E
        k=k+1;
        cos_approx(k)= cos_approx(k-1) + ((-1)^(k-1))*(x^(2*(k-1)))/(2*(factorial(k-1)));
        T=abs(cos_approx(k) - cos(x));
    end
    CosApprox=cos_approx(k)
    Numberofterms=k

我是matlab的新手,所以如果我错过了一些明显的东西,我会道歉。

1 个答案:

答案 0 :(得分:0)

你的代码没有返回8次迭代,它在我的计算机上返回513次迭代并且终止,因为我们在分子中划分了一个非常大的数字,超过2 ^(512)而另一个非常大的数字512!在分母中评估为Inf。

您使用的是错误的数学公式。

2*(factorial(k-1))
分母中的

应该是

factorial(2*(k-1))

只需改变它就可以得到-0.4159的答案,而cos(2)近似为-0.4161。

既然你弄清楚了什么是错的,你可以尝试在速度和可读性方面改进代码。

备注:尽量不要给矢量和函数赋予相同的名称,这很令人困惑。