上面的赋值应该都没问题,感觉就是这段不对劲
for i=1:0.5:10
s= @(x, y)z1*(1-sqrt(x^2+y^2)/a)^2/(z3*(B*(1-0.5*149/151*besselk(0,2*pi/0.15*sqrt(x^2+y^2))))^2-c^2*w^2)+z2*(1-sqrt(x^2+y^2)/a)^2/((z4*(B*(1-0.5*149/151*besselk(0,2*pi/0.15*sqrt(x^2+y^2)))))^2-c^2*w^2)-i;
f=ezplot(s);
set(f,'color','r');
hold on
end
上面的赋值:syms x y;a=0.025;k1=0.9;k2=0.1;B=0.1;ne0=8.723e+20;w=1.356e+8;m1=4.676e-26;m2=1.66053886e-27;q1=1.602e-19;q2=1.602e-19;E=8.8542e-12;c=2.99799248e+8;pi=3.1415926535898;z1=w^2*k1*q1^2*ne0/(E*m1);z2=w^2*k2*q2^2*ne0/(E*m2);z3=c^2*((q1)/m1)^2;z4=c^2*((q2)/m2)^2;
度娘搞出 @Du知道君 这个智能回答机器人是用来逗比的吗?
真特么恶心。。。
原因在于,你定义的匿名函数 s(x,y) = 0 是无解的。
这一点很容易可以验证:i 取值在1~10之间,我们即使取最小的 i=1,可以很容易验证
>> s(0,0)而且(0, 0)就是其最大值(不为0是数值误差造成的):
>> fminunc(@(x)-s(x(1),x(2)),randn(2,1))或者用ezmesh(s)画出曲面来看的更清楚:
追问感谢!那么现在我想把图像作出来,这段程序应该怎么改进呢?这程序是别人给我的,我对matlab了解的不多……
追答画曲面图很简单,把ezplot改成ezmesh就行了。
公式挺复杂,太费眼睛了,来龙去脉也不清楚,检查算是纯体力活,抱歉就不帮您核对了。
好吧,麻烦你了,感谢!
追答唉,费不少眼力帮你看这个公式。。。
公式中两项都是分子能和程序对上号,分母对不上。
建议你问一下给你程序的人是怎么回事吧。
或者你把公式的来龙去脉说清楚,每一个符号都是什么值,那样才好继续帮你查。