在MATLAB中使用asin(x)函数时,有一个函数值看上去是1.0000,但由于精度问题,导致acos(x)变为复数我的代码如下:A=zeros(25,1);B=zeros(25,1);C=zeros(25,1);D=zeros(25,1);E=zeros(25,1);F=zeros(25,1);i=1;for phi=pi/3:-pi/1

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 07:43:28
在MATLAB中使用asin(x)函数时,有一个函数值看上去是1.0000,但由于精度问题,导致acos(x)变为复数我的代码如下:A=zeros(25,1);B=zeros(25,1);C=zeros(25,1);D=zeros(25,1);E=zeros(25,1);F=zeros(25,1);i=1;for phi=pi/3:-pi/1

在MATLAB中使用asin(x)函数时,有一个函数值看上去是1.0000,但由于精度问题,导致acos(x)变为复数我的代码如下:A=zeros(25,1);B=zeros(25,1);C=zeros(25,1);D=zeros(25,1);E=zeros(25,1);F=zeros(25,1);i=1;for phi=pi/3:-pi/1
在MATLAB中使用asin(x)函数时,有一个函数值看上去是1.0000,但由于精度问题,导致acos(x)变为复数
我的代码如下:
A=zeros(25,1);B=zeros(25,1);C=zeros(25,1);
D=zeros(25,1);E=zeros(25,1);F=zeros(25,1);i=1;
for phi=pi/3:-pi/18:pi/9
for lam=95*pi/180:pi/18:135*pi/180
A(i)=phi;F(i)=lam;B(i)=lam-lam0;
C(i)=acos(sin(phi)*sin(2*pi/9)+cos(phi)*cos(2*pi/9)*cos(lam-23*pi/36));
if C(i)~=0
D(i)=(sin(phi)*cos(2*pi/9)-cos(phi)*sin(2*pi/9)*cos(lam-23*pi/36))/sin(C(i));
i=i+1;
else C(i)=1;D(i)=1;i=i+1;
end
end
end
就是D这个数组中的D(3),本程序中尚未进行D=acos(D)这一操作

在MATLAB中使用asin(x)函数时,有一个函数值看上去是1.0000,但由于精度问题,导致acos(x)变为复数我的代码如下:A=zeros(25,1);B=zeros(25,1);C=zeros(25,1);D=zeros(25,1);E=zeros(25,1);F=zeros(25,1);i=1;for phi=pi/3:-pi/1
你的所有结果都是实数,而只有第三个是复数
由于只是很微小的误差,导致出现复数
所以第三个数的虚部是很小的数,可以忽略
所以你只要取结果的实部就可以了
D=real(acos(D));