永发信息网

MATLAB用for循环解个方程

答案:2  悬赏:0  手机版
解决时间 2021-02-15 06:45
  • 提问者网友:不爱我么
  • 2021-02-14 22:32
syms n i q
H=1.8;lanmuda=1.4;n1=1.55;n2=1.67;n3=1.50;
k0=2*pi/lanmuda;
for q=0:2
i=q;
Si=solve(sqrt(n2*n2-n^2)*k0*H-atan(sqrt(n^2-n1*n1)/sqrt(n2*n2-n^2))-atan(sqrt(n^2-n3*n3)/sqrt(n2*n2-n^2))-q*pi==0,n);
end
主要是是想求在q=0,1,2,3.....下的不同的n值,循环程序不对,求帮忙修改。
最佳答案
  • 五星知识达人网友:北方的南先生
  • 2021-02-14 23:28
把“solve”那行里最后的==0去掉即可。
全部回答
  • 1楼网友:西风乍起
  • 2021-02-15 00:03
clear syms a1 a2 b1 b2 r1 r2 t41 t42 k=0.01 n=1; for d=0:300 for q=1:10 eq1=a1+a2+b1+b2-sqrt(2)*(1+r1); eq2=a1-a2+b1-b2-sqrt(2)*(1+r2); eq3=1+r1-t41; eq4=1+r2-t42; eq5=a1*exp(i*(q-k)*d)+a2*exp(i*(q+k)*d)+b1*exp(-i*(q+k)*d)+b2*exp(-i*(q-k)*d); eq6=a1*exp(i*(q-k)*d)-a2*exp(i*(q+k)*d)+b1*exp(-i*(q+k)*d)-b2*exp(-i*(q-k)*d); eq7=t41*(k-q)+r1*(q+k)+(a1*(k-q)-a2*(q+k)+b1*(q+k)+b2*(q-k))/sqrt(2)+(k-q)*t41; eq8=t42*(-k-q)+r2*(q-k)+(a1*(k-q)+a2*(q+k)+b1*(q+k)-b2*(q-k))/sqrt(2)-(k+q)*t42; [a01(n),a02(n),b01(n),b02(n),r01(n),r02(n),t041(n),t042(n)]=solve(eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,a1,a2,b1,b2,r1,r2,t41,t42); n=n+1; end end disp(' a01 a02 b01 b02 r01 r02 t041 t042 ') x=[double(a01);double(a02);double(b01);double(b02);double(r01);double(r02);double(t041);double(t042)]'
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯