第一次迭代后,Matlab循环失败

时间:2015-03-28 03:22:54

标签: matlab for-loop

我在数值计算给定theta的正弦和余弦方面有一个单一的任务。我在Matlab中编写的程序只有在我给它一个θ值而不是使用for循环时才能工作,这是我需要做的。这是代码:

x_old = 1;
y_old = 0;
for theta = 0:pi/3:2*pi
    theta_i = theta;
    for i = 1:16
        phi_i = atan(10^(-i+1));
        n_i = floor(theta_i/phi_i);
        for j=1:n_i
            x_new = x_old - y_old*10^(-i+1);
            y_new = y_old + x_old*10^(-i+1);
            x_old = x_new;
            y_old = y_new;
        end
        theta_i = theta_i - n_i*phi_i;
    end
    Sin = y_old/sqrt(x_old^2 + y_old^2);
    Cos = x_old/sqrt(x_old^2 + y_old^2);
    disp([theta, Sin, Cos])
end

这里是输出:

 0     0     1

1.0472    0.8660    0.5000

2.0944    0.0000   -1.0000

3.1416   -0.0000    1.0000

4.1888   -0.8660   -0.5000

5.2360    0.0000   -1.0000

6.2832    0.0000   -1.0000

上面的代码在pi / 3之后失败但是如果我将第一个for循环修改为任何单个值而不是范围,它就完美了。我的代码出了什么问题?我该如何解决这个问题?谢谢你的帮助!

0 个答案:

没有答案