matlab编程,求教下面这段出了什么问题,完全作不出图像,急!!

上面的赋值应该都没问题,感觉就是这段不对劲

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)
ans =
         -1.00

而且(0, 0)就是其最大值(不为0是数值误差造成的):

>> fminunc(@(x)-s(x(1),x(2)),randn(2,1))
Optimization terminated: relative infinity-norm of gradient less than options.TolFun.
ans =
         -0.01
         -0.02

或者用ezmesh(s)画出曲面来看的更清楚:

追问

感谢!那么现在我想把图像作出来,这段程序应该怎么改进呢?这程序是别人给我的,我对matlab了解的不多……

追答

画曲面图很简单,把ezplot改成ezmesh就行了。
公式挺复杂,太费眼睛了,来龙去脉也不清楚,检查算是纯体力活,抱歉就不帮您核对了。

追问

好吧,麻烦你了,感谢!

追答

唉,费不少眼力帮你看这个公式。。。
公式中两项都是分子能和程序对上号,分母对不上。
建议你问一下给你程序的人是怎么回事吧。
或者你把公式的来龙去脉说清楚,每一个符号都是什么值,那样才好继续帮你查。

温馨提示:答案为网友推荐,仅供参考
相似回答