作业帮 > 综合 > 作业

高手请出手:matlab解非线性方程问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 20:32:55
高手请出手:matlab解非线性方程问题
目的是解方程:(e2*sqrt(w^2*(e1-e2)+x^2)+e1*x)*(e3*x+e2*sqrt(w^2*(e1-e3)+x^2))+(e2*sqrt(w^2*(e1-e2)+x^2)-e1*x)*(e3*x-e2*sqrt(w^2*(e1-e3+x^2))*exp(i*2*x*d)=0 其中只有x是未知的.
先写了一个m文件:
function f=fun1(x)
bochang=441*10^(-9);
w=2*pi/bochang;
e1=1.94;
e2=-8.9175+0.2231*i;
e3=1.53;
d=50*10^(-9);
f=[(e2*sqrt(w^2*(e1-e2)+x^2)+e1*x)*(e3*x+e2*sqrt(w^2*(e1-e3)+x^2))
+(e2*sqrt(w^2*(e1-e2)+x^2)-e1*x)*(e3*x-e2*sqrt(w^2*(e1-e3)+x^2))*exp(i*2*x*d)];
end
然后在命令窗口输入:
[x,f,flag]=fsolve('fun1',3.0000e+006 +8.8000e+007i)
最后得到:
Warning:Default trust-region dogleg method of FSOLVE cannot
handle non-square systems; switching to Gauss-Newton method.
> In fsolve at 232
Maximum number of function evaluations exceeded.Increase OPTIONS.MaxFunEvals.
x =
4.7279e+005 +4.8115e+007i
f =
1.0e+014 *
-1.6472 + 5.3559i
7.5414 - 0.0156i
flag =
0
然后换了n次初值,结果还是有这样的警告.没有算出结果来,试初值的程序如下:
clear
bochang=441*10^(-9);
w=2*pi/bochang;
e1=1.94;
e2=-8.9175+0.2231*i;
e3=1.53;
d=50*10^(-9);
a=-10^8:10^6:10^8;
[X Y]=meshgrid(a,a);
x2=X+i.*Y;
x1=sqrt(w^2*(e1-e2)+x2.^2);
x3=sqrt(w^2*(e1-e3)+x2.^2);
kz2=(e2*x1+e1*x2)*(e3*x2+e2*x3)+(e2*x1-e1*x2)*(e3*x2-e2*x3).*exp(i*2*x2.*d);
z1=real(kz2);
z2=imag(kz2);
for k=1:190;
for h=1:190;
if z1(k,h)
你可以到专业的论坛,或者看看教程学习一下
好人终有好报,采纳答案是一种美德,
楼主果然是一表人才,威风凛凛,学贯古今,博闻强识,励精图治,才华横溢,盖世无双,虚怀若谷,风华正茂,神机妙算,足智多谋,伶牙俐齿,聪明伶俐,彬彬有礼,神通广大,多才多艺,卓尔不群,出口成章,滔滔不绝 对答如流,掷地有声,一诺千金,平易近人,和蔼可亲,能说会道,眉清目秀,智勇双全,大名鼎鼎,妙手回春