Matlab用于第一次迭代后循环失败

Matlab用于第一次迭代后循环失败,matlab,for-loop,Matlab,For Loop,我有一个关于数值计算给定θ的正弦和余弦的uni赋值。我用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_

我有一个关于数值计算给定θ的正弦和余弦的uni赋值。我用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循环修改为任何单个值而不是范围,那么它就可以完美地工作。我的代码有什么问题?如何解决此问题?谢谢你的帮助

您已经使用
disp([theta,Sin,Cos])
显示了这些值。而
for
循环一直运行到
theta=2*pi
。从
theta
的最后一个值,即
6.2832
我认为
for
循环工作正常。结果怎么了?你期望得到什么样的结果?循环似乎工作正常,是的,它显示了正确的θ。但是对于每个θ,我得到了不正确的对应的正弦和余弦值。第2列表示正弦值,第3列表示余弦值。正如您在第一行和第二行看到的,即θ=0和π/3,我得到了正确的正弦和余弦值。然而,在那之后,它失败了。希望这是有意义的。另外,如果我将代码的第3行修改为:for theta=“any value I coose”,那么计算将非常有效。只要我给出一系列值,循环就会失败。这是因为您正在修改循环中的
x_old
y_old
变量。对于单次运行,您的
x_old
值和
y_old
值分别为
1
0
。但是,当您作为循环运行时,您的值会随着循环中的每次迭代而变化。^^^^^^非常感谢!这就是问题所在!谢谢,谢谢!!