我在数值计算给定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循环修改为任何单个值而不是范围,它就完美了。我的代码出了什么问题?我该如何解决这个问题?谢谢你的帮助!