www.pudn.com > myNeff_2fen.rar > myNeff_2fen.m, change:2011-09-02,size:1414b


%本程序是计算二维光波导的有效折射率和传播常数 
%Neff(lamada,n,d,m,e)计算平板波导的有效折射率和传播常数 
%返回值为[有效折射率 传播常数] 
%lamada为光波长,n为1*4数组,其值分别为覆盖层、波导层、衬底层折射率以及有效折射率的初始值 
%d为波导层厚,m为模的阶数,当m=0时d=1、3、6、7能进入循环中 
function y=myNeff_2fen(lamada,n,d,m,e) 
format long                                   %将数据显示为长整型科学计数 
k=2*pi/lamada; 
Kc=k*n(1); 
Kf=k*n(2); 
Ks=k*n(3); 
if n(1)>n(3) 
    a=n(3); 
else 
    a=n(1);%求根区间左端 
end 
b=n(2); %求根区间右端 
fa=atan((((k*a)^2-Ks^2)^0.5*d)/((Kf^2-(k*a)^2)^0.5*d))+atan((((k*a)^2-Kc^2)^0.5*d)/((Kf^2-(k*a)^2)^0.5*d))-(Kf^2-(k*a)^2)^0.5*d+m*pi; 
fb=atan((((k*b)^2-Ks^2)^0.5*d)/((Kf^2-(k*b)^2)^0.5*d))+atan((((k*b)^2-Kc^2)^0.5*d)/((Kf^2-(k*b)^2)^0.5*d))-(Kf^2-(k*b)^2)^0.5*d+m*pi; 
while abs(a-b)>e; %判断f(c)是否为零点 
    c=(a+b)/2; %计算区间中点 
    fc=atan((((k*c)^2-Ks^2)^0.5*d)/((Kf^2-(k*c)^2)^0.5*d))+atan((((k*c)^2-Kc^2)^0.5*d)/((Kf^2-(k*c)^2)^0.5*d))-(Kf^2-(k*c)^2)^0.5*d+m*pi;  
    if fa*fc>=0 %判断左侧区间是否有根 
        a=c;  
    else 
        b=c; 
    end 
    fa=atan((((k*a)^2-Ks^2)^0.5*d)/((Kf^2-(k*a)^2)^0.5*d))+atan((((k*a)^2-Kc^2)^0.5*d)/((Kf^2-(k*a)^2)^0.5*d))-(Kf^2-(k*a)^2)^0.5*d+m*pi; 
    fb=atan((((k*b)^2-Ks^2)^0.5*d)/((Kf^2-(k*b)^2)^0.5*d))+atan((((k*b)^2-Kc^2)^0.5*d)/((Kf^2-(k*b)^2)^0.5*d))-(Kf^2-(k*b)^2)^0.5*d+m*pi; 
 
 
end 
y=c; 
end