fujinhai 发表于 2009-3-1 16:56

画二维图像时反余弦值大于一时的问题

以下是我的一个方程:
t=;y=acos(((55*t/3-55/(2*pi)*sin(2*pi*t/3)+27.5).^2+(2*t/3-(1/(2*pi))*sin(4*pi*t/3)+21).^2+48.75)/(22*sqrt((55*t/3-55/(2*pi)*sin(2*pi*t/3)+27.5).^2+(2*t/3-(1/(2*pi))*sin(4*pi*t/3)+21).^2)))+atan((55*t/3-(55/(2*pi))*sin(2*pi*t/3)+27.5)/(2*t/3-(1/(2*pi))*sin(4*pi*t/3)+21));plot(t,y);
画出图是一条多点的直线,代入数之后发现acos中的值是大于一的,所以会出现这种情况。按道理来说这应该是错误的,因为余弦值最大才为1,这种情况下的matlab是怎样计算出来的数值,虚部、实部又分别代表什么,在不改变算式的情况下,怎样才能算出确切的角度,希望高手回答,谢谢。

friendchj 发表于 2009-3-1 17:08

你的acos(x)中的x值会大于1,导致y的值为复数。当x大于1时,计算式看acos的有关帮助文件。

fujinhai 发表于 2009-3-2 16:50

谢谢friendchj的回答。问题已得到解决。但是还有一个问题。就是加了acosh后开始问题还是没有得到解决。我把除号前加了一个“.”,然后图像才能正常画出来,并且不是每一个除号前都加点,只是反余弦或者反正切中总体的分子分母相除是加“.”。不知道什么原因,也没有提示错误,帮忙解答一下。
t=;y=acosh(((55*t/3-55/(2*pi)*sin(2*pi*t/3)+27.5).^2+(2*t/3-(1/(2*pi))*sin(4*pi*t/3)+21).^2+48.75)./(22*sqrt((55*t/3-55/(2*pi)*sin(2*pi*t/3)+27.5).^2+(2*t/3-(1/(2*pi))*sin(4*pi*t/3)+21).^2)))+atan((55*t/3-(55/(2*pi))*sin(2*pi*t/3)+27.5)./(2*t/3-(1/(2*pi))*sin(4*pi*t/3)+21));plot(t,y);

friendchj 发表于 2009-3-2 20:24

回复 板凳 fujinhai 的帖子

注意你的t是个向量,当含有他的计算式与标量运算时无需加’.‘,而与另外的矢量(如你的算式,含t)运算时,需要加’.‘。除非你先要的就是矩阵运算,此事要遵循矩阵运算规则。
页: [1]
查看完整版本: 画二维图像时反余弦值大于一时的问题