我试图绘制这个函数:
t=linspace(0,2*pi,100);
a=input('a= ');
b=input('b= ');
c=input('c= ');
k = a*(1-(sin(3*t)).^(2*b))+c;
polar(t,k)
% a=2.6
% b=0.4
% c=5
每次,我收到以下消息:
警告:忽略复杂X和/或Y参数的虚部。
我已经尝试了pol2cart方法:
t=linspace(0,2*pi,100);
a=input('a= ');
b=input('b= ');
c=input('c= ');
k = a*(1-(sin(3*t)).^(2*b))+c;
[x,y] = pol2cart(t,k);
plot(x,y)
我又收到了同样的消息。 我试图将其转换为球坐标,但它不起作用。我也尝试过在论坛答案中建议的arrayfun方法,它也没有用。 有人可以帮帮我吗? 谢谢!
答案 0 :(得分:2)
你的问题在于你的功能。 k
包含虚数,因为:
sin(3*t).^(0.8)
如果您想确保它不包含虚数,则需要增加b
。底线是,修复你的公式。我只能假设你的意思是这样,但可能有其他解决方案。从本质上讲,我认为你的意思是采取1罪的指数,而不是罪。
k=a*((1-sin(3*t)).^(2*b))+c;
这给出了下面的图(从Octave,但它应该是相同的)
我用'plot(k)来解决这个问题。如果k包含虚数,它将绘制实部与虚部。如果它是纯粹的真实,它将绘制线与时间的关系。