⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shiyuyouxianchafen.m

📁 这个程序是利用时域有限差分方法求多层介质中的电场分布的
💻 M
字号:
%时域有限差分方法
%本程序是利用麦克斯韦方程组的微分形式变成差分形式,把空间分成许多很小的细网格
%利用在时间上的逐步推进来求得空间上的电磁场分布
clear;
%入射波中的常数
E0=1;
N0=377;
c=3*10^8;
w=1.7773585*10^15;
delt_z=8.83333*10^(-8);%空间步长
delt_t=1.47222*10^(-16);%时间步长
%空气中的介电系数和磁导率
Ea=1;
%二氧化硅的介电系数和磁导率
Es=2.1;
%二氧化铪的介电系数和磁导率
Eh=3.73;
%导磁系数
h=1;


%各层介质中的介电系数,共分为5层,其中第一层为1/2波长,之后为1/4波长
%SIO2和HFO2交替分布
int n;%N表示时间
int k;%K表示空间
k==0;
while(k<142)
if k>=0&k<120
    e(k)=Ea; k=k+1;
elseif k==120
    e(k)=(Ea+Es)/2;  k=k+1;
elseif k>120&k<128
    e(k)=Es; k=k+1;
elseif k==128
    e(k)=(Es+Eh)/2; k=k+1;
elseif k>128&k<131
    e(k)=Eh; k=k+1;
elseif k==131
    e(k)=(Es+Eh)/2; k=k+1;
elseif k>131&k<135
    e(k)=Es; k=k+1;
elseif k==135
    e(k)=(Es+Eh)/2; k=k+1;
elseif k>135&k<138
    e(k)=Eh; k=k+1;
elseif k==138
    e(k)=(Es+Eh)/2; k=k+1;
elseif k>138&k<142
    e(k)=Es; k=k+1;
end
end
plot(e);
%初始值

%初始时刻,即n=0时空间各点的值
 E(0,0)=E0;
 H(0,0)=(E0/N0)*sin(w((-1/2)*delt_z/c-(-1/2)*delt_t));
 n==0;
 k==1;
while(n==0&(k>0&k<143))
    E(k,n)=0;
    H(k,n)=0;
    k=k+1;
end

%入射波的起始位置即k=0时任意时刻的值
k==0;
n==1;
while(k==0&(n>0&n<286))
    E(k,n)=E0*cos(n*w*delt_t);
    H(k,n)=(E0/N0)*sin(w((-1/2)*delt_z/c-(n-1/2)*delt_t));
    n=n+1;
end


%迭代过程
n==1;
while (n<285)    %在时间上逐步推进
    k==1;
    while (k<142)  %在空间上逐步推进
        H(k,n)=H(k,n-1)-(delt_t/h*delt_z)*(E(k,n-1)-E(k-1,n-1));
        k=k+1;
    end
    k==1;
    while (k<142)
        E(k,n)=E(k,n-1)-(delt_t/e(k)*delt_z)*(H(k+1,n)-H(k,n));
        k=k+1;
    end
    n=n+1;
end


%吸收边界条件
n==285;
k==142;
E(k,n)=E(k-1,n-1)+((c*delt_t-delt_z)/(c*delt_t+delt_z))*(E(k-1,n)-E(k,n-1));
plot(H);
plot(E);

%画出电场E(k,n)随空间z的变化
n=285;
k=0:1:142;
plot(k,E(k,n));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -