24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 1136  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

小鱼118

银虫 (小有名气)

[求助] MATLAB程序调试

i=1; %设定从1开始计数
lamda=0.0019;
LengthCrystal=14;
RefractiveIndex=1.44;
l1=5;
h= LengthCrystal/2/ RefractiveIndex;
l2=10;
l31=20;
l32=40;
l33=60;
d1=l1+h;
d2=l2+h;
Radius=300;  
FundamentalModeRadius11=zeros(1,10000); %设定第一基模有10000个矩阵元,初值都为0
FundamentalModeRadius12=zeros(1,10000);
FundamentalModeRadius13=zeros(1,10000);
FundamentalModeRadius21=zeros(1,10000); %设定第二基模有10000个矩阵元,初值都为0
FundamentalModeRadius22=zeros(1,10000);
FundamentalModeRadius23=zeros(1,10000);
y=zeros(1,10000);
for f=1:0.1:1000   
M1=[1,d1;0,1]*[1,0;0,1]*[1,d1;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f]*[1,d2;0,1]*...
    [1,0;0,1]*[1,l31;0,1]*[1,0;-2/ Radius,1]*[1,l31;0,1]*[1,0;0,1]*[1,d2;0,1]*...
    [1-h/f,2*h-h*h/f;-1/f,1-h/f];
A1=M1(1,1); %第一行第一列矩阵元
B1=M1(1,2); %第一行第二列矩阵元
D1=M1(2,2); %第二行第二列矩阵元
M2=[1,d1;0,1]*[1,0;0,1]*[1,d1;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f]*[1,d2;0,1]*...
    [1,0;0,1]*[1,l32;0,1]*[1,0;-2/ Radius,1]*[1,l32;0,1]*[1,0;0,1]*[1,d2;0,1]*...
    [1-h/f,2*h-h*h/f;-1/f,1-h/f]; %第一基模的ABCD矩阵
A2=M2(1,1); %第一行第一列矩阵元
B2=M2(1,2); %第一行第二列矩阵元
D2=M2(2,2); %第二行第二列矩阵元
M3=[1,d1;0,1]*[1,0;0,1]*[1,d1;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f]*[1,d2;0,1]*...
    [1,0;0,1]*[1,l33;0,1]*[1,0;-2/ Radius,1]*[1,l33;0,1]*[1,0;0,1]*[1,d2;0,1]*...
    [1-h/f,2*h-h*h/f;-1/f,1-h/f]; %第一基模的ABCD矩阵
A3=M3(1,1); %第一行第一列矩阵元
B3=M3(1,2); %第一行第二列矩阵元
D3=M3(2,2); %第二行第二列矩阵元
N1=[1,d2;0,1]*[1,0;0,1]*[1,l31;0,1]*[1,0;-2/ Radius,1]*[1,l31;0,1]*[1,0;0,1]*...
    [1,d2;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f]*[1,d1;0,1]*[1,0;0,1]*...
    [1,d1;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f];
a1=N1(1,1); %第一行第一列矩阵元
b1=N1(1,2); %第一行第二列矩阵元
d1=N1(2,2); %第二行第二列矩阵元
N2=[1,d2;0,1]*[1,0;0,1]*[1,l32;0,1]*[1,0;-2/ Radius,1]*[1,l32;0,1]*[1,0;0,1]*...
    [1,d2;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f]*[1,d1;0,1]*[1,0;0,1]*...
    [1,d1;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f];
a2=N2(1,1); %第一行第一列矩阵元
b2=N2(1,2); %第一行第二列矩阵元
d2=N2(2,2); %第二行第二列矩阵元
N3=[1,d2;0,1]*[1,0;0,1]*[1,l33;0,1]*[1,0;-2/ Radius,1]*[1,l33;0,1]*[1,0;0,1]*...
    [1,d2;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f]*[1,d1;0,1]*[1,0;0,1]*...
    [1,d1;0,1]*[1-h/f,2*h-h*h/f;-1/f,1-h/f];
a3=N3(1,1); %第一行第一列矩阵元
b3=N3(1,2); %第一行第二列矩阵元
d3=N3(2,2); %第二行第二列矩阵元
if abs((A1+D1)/2)<=1&abs((A2+D2)/2)<=1&abs((A3+D3)/2)<=1
FundamentalModeRadius11(i)=abs((2*lamda*B1)/(pi*sqrt(4-(A1+D1)^2)))^(1/2);
FundamentalModeRadius21(i)=abs((2*lamda*b1)/(pi*sqrt(4-(a1+d1)^2)))^(1/2);
FundamentalModeRadius12(i)=abs((2*lamda*B2)/(pi*sqrt(4-(A2+D2)^2)))^(1/2);
FundamentalModeRadius22(i)=abs((2*lamda*b2)/(pi*sqrt(4-(a2+d2)^2)))^(1/2);
FundamentalModeRadius13(i)=abs((2*lamda*B3)/(pi*sqrt(4-(A3+D3)^2)))^(1/2);
FundamentalModeRadius23(i)=abs((2*lamda*b3)/(pi*sqrt(4-(a3+d3)^2)))^(1/2);
y(i)=f;
i=i+1;
end
end
FundamentalModeRadius11n= FundamentalModeRadius11(1:i-1); FundamentalModeRadius21n= FundamentalModeRadius21(1:i-1); FundamentalModeRadius12n= FundamentalModeRadius12(1:i-1); FundamentalModeRadius22n= FundamentalModeRadius22(1:i-1); FundamentalModeRadius13n= FundamentalModeRadius13(1:i-1); FundamentalModeRadius23n= FundamentalModeRadius23(1:i-1);
yn=y(1:i-1); wp=0.4*ones(1,i-1)
plot(yn, FundamentalModeRadius11n,yn, FundamentalModeRadius21n,yn,FundamentalModeRadius12n,':',yn,FundamentalModeRadius22n,':',yn,FundamentalModeRadius13n,'-.',yn, FundamentalModeRadius23n,'-.',yn,wp)

运行结果什么也没有
求助高手调试
回复此楼

» 收录本帖的淘帖专辑推荐

Better One

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

好好爱自己
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小鱼118

银虫 (小有名气)


fegg7502: 金币+1, 鼓励交流 2012-11-28 08:05:34
引用回帖:
6楼: Originally posted by csgt0 at 2012-11-27 17:20:38
问题确实出在计算MN的矩阵乘法上面,但是什么原因我没找到,估计还是精度或内存方面的问题。。如果其它参数已知的话,你可以先单独用符号计算得到ABD关于f的表达式,然后直接在循环里用这些表达式计算。而且可以在i ...

符号计算这块不会,之前试过计算符号,结果不对
好好爱自己
7楼2012-11-27 18:10:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖


感谢参与,应助指数 +1
dbb627: 金币+1, 感谢应助 2012-11-27 19:18:32
M和N计算时超范围了,都无限大了,检查一下它们的计算方法是否正确
showmethemoney
2楼2012-11-27 10:34:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小鱼118

银虫 (小有名气)


fegg7502: 金币+1, 鼓励交流 2012-11-28 08:05:14
引用回帖:
2楼: Originally posted by csgt0 at 2012-11-27 10:34:16
M和N计算时超范围了,都无限大了,检查一下它们的计算方法是否正确

之前只计算了M1和N1都没问题的,我只是在原来的基础上多加了M2 M3和N2 N3。想取不同的l3的值多画几条线的。
好好爱自己
3楼2012-11-27 11:01:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖


fegg7502: 金币+1, 鼓励交流 2012-11-28 08:05:23
M1也有问题啊,你看f=1.4的时候算算看
showmethemoney
4楼2012-11-27 11:08:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见