一、任务要求

(a) Writea finite difference (FD) code to compute the cutoff frequencies of the firsttwenty TM modes of a rectangular waveguide with dimensions 1 cm by 2 cm.Compare your results to the analytical cutoff frequencies. How rapidly do theFD results approach the exact results as the number of grid.points increases?

(b) Same as (a), but forTE modes.

(c)  Which case (TE or TM) has moreaccurate results

comparing with the analytical results? Why?

二、波导问题分析

求解波导问题相当于求解亥姆霍兹方程:

                                        (1)

上式中,对于TM模式, ,对于TE模式, ,其中 是波数。

二者边界条件为:

1)对于TM波,

2)对于TE波,

在上述方程的本征值问题中, 和 都是待定,截止波长  ,对截止波长的每一个值都有一个本征函数对应,代表一个传播模式。

使用有限差分法,用正方形来剖分波导横截面得到:

  (2)

式中: 为网格尺寸。

可以得到N个方程

求解A矩阵的特征值可得到截止波数即:  。

三、matlab代码实现

1) FD for TM

对于一个20mm*10mm的波导,

网格划分图:

边缘节点为固定矩阵,TM边界为0 ,网格大小为a/nx

通过计算得到前20个截止频率为:

由上表可以看出:点数越多,计算越精确。当网格长度是波长的0.1倍时,可以计算出较为准确值。

2)    FD for TE

边缘节点为虚拟节点,网格大小为a/nx-1

TE前20截止频率

由上表可以看出:点数越多,计算越精确。但TE计算没TM较为准确,是由于在边界条件上多了一阶近似。

Matlab:代码

FD:TM

clc

clear all

a=20*1e-3;         %长边20mm
b=10*1e-3;         %短边10mm
c=2.99792458*1e8;  %光速
nx=10;             %x方向剖分网格
ny=nx*0.5;         %y方向剖分网格保证为正方形
h=a/nx;            %网格大小
 N=(nx-1)*(ny-1);  %未知数个数
 A=zeros(N,N);      
 k=0 ;              %用于填充m
 y1=zeros(2,20);    %前20个截止频率比较    
  for j=1:ny-1
      for i=1:nx-1  
       k=k+1
        NL(j,i) = k;
      end             %NL用于i、j和m的对应关系
  end 
 %%%%%填充A矩阵%%%%%%%
  for m=1:N
      for n=1:N
  [jm,im]=find(NL==m)
  [jn,in]=find(NL==n);
  if m==n
           A(m,n)=4;
  elseif im==in&jm==jn+1
        A(m,n)=-1;
  elseif im==in&jm==jn-1
        A(m,n)=-1;
  elseif im==in+1&jm==jn
        A(m,n)=-1;
  elseif im==in-1&jm==jn
               A(m,n)=-1;
       else
           A(m,n)=0;
  end
      end
  end
 %%%%%%%填充A矩阵%%%%%%% 
  la=eig(A);            %求特征值la
  la=round(la,4);       %保留小数点后4位
  la=unique(la);        %去除相同元素
  Kc_fd=sqrt(la)./h;   
  lamda_fd=2*pi./Kc_fd;
  f_fd=c./lamda_fd;
  B1=f_fd;           
 
for i=1:20
    [p,q]=min(B1);     %取截止频率最小前20
    B1(q)=inf;
    y1(1,i)=p;         %fd
end
%%%%%%%理论计算截止频率 TM11-88 %%%%%%%%%%%
for m=1:8
   for n=1:8
Kc_cal(m,n)=sqrt( (m*pi/a)^2 +(n*pi/b)^2   )
lambda_cal(m,n)=2*pi/Kc_cal(m,n)
f_cal(m,n)=c/lambda_cal(m,n);
   end
end
B2=sort(f_cal(:),1,'ascend')
B2=round(B2,4)    %保留小数点后4位
B2=unique(B2)     %去除相同元素
for i=1:20
    [p,q]=min(B2);
    B2(q)=inf;
    y1(2,i)=p;        %cal
end
y1=y1*1e-9;           %换算为GHz
y1=round(y1,4);       %保留小数点后4位
disp(y1)             % y1第一行为FD计算值    第二行为理论计算值

FD:TE

clc
clear all
a=20*1e-3;         %长边20mm
b=10*1e-3;         %短边10mm
c=2.99792458*1e8;  %光速
nx=10;             %x方向剖分网格
ny=nx*0.5;         %y方向剖分网格
h=a/nx;            %网格大小
 N=(nx-1)*(ny-1);  %未知数个数
 A=zeros(N,N);      
 k=0 ;              %用于填充m
 y1=zeros(2,20);    %前20个截止频率比较
  for j=1:ny-1
      for i=1:nx-1  
       k=k+1
        NL(j,i) = k;
      end             %NL用于i、j和m的对应关系
  end 
 %%%%%填充A矩阵%%%%%%%
  for m=1:N
      for n=1:N
  [jm,im]=find(NL==m)
  [jn,in]=find(NL==n);
  if m==n
           A(m,n)=4;
  elseif im==in&jm==jn+1
        A(m,n)=-1;
  elseif im==in&jm==jn-1
        A(m,n)=-1;
  elseif im==in+1&jm==jn
        A(m,n)=-1;
  elseif im==in-1&jm==jn
        A(m,n)=-1;
   else
           A(m,n)=0;
  end
  
  %%%%%%%%%%%  TE边界条件 %%%%%%%%%
  
   if im==in&jm==jn-1&jm==1                %下边界
         A(m,n)=-2;
   elseif im==in&jm==jn+1&jm==(ny-1)        %上边界
         A(m,n)=-2;
   elseif im==in-1&jm==jn& im==1            %左边界
         A(m,n)=-2;
   elseif im==in+1&jm==jn&im==(nx-1)        %右边界
         A(m,n)=-2;
   end
 
end
end
 %%%%%%%填充A矩阵%%%%%%% 
 la=eig(A);            %求特征值la
  la=round(la,4);       %保留小数点后4位
  la=unique(la);        %去除相同元素
  Kc_fd=sqrt(la)./h;   
  lamda_fd=2*pi./Kc_fd;
  f_fd=c./lamda_fd;
  B1=f_fd;           
  B1(find(B1==0))=[];    %去除0
for i=1:20
    [p,q]=min(B1);     %取截止频率最小前20
    B1(q)=inf;
    y1(1,i)=p;         %fd
end
%%%%%%%理论计算截止频率 TE10- TE87 %%%%%%%%%%%
for m=1:8
   for n=1:8
Kc_cal(m,n)=sqrt( (m*pi/a)^2 +((n-1)*pi/b)^2   )
lambda_cal(m,n)=2*pi/Kc_cal(m,n)
f_cal(m,n)=c/lambda_cal(m,n);
   end
end
B2=sort(f_cal(:),1,'ascend')
B2=round(B2,4)    %保留小数点后4位
B2=unique(B2)     %去除相同元素
for i=1:20
    [p,q]=min(B2);
    B2(q)=inf;
    y1(2,i)=p;        %cal
end
y1=y1*1e-9;           %换算为GHz
y1=round(y1,4);       %保留小数点后4位
disp(y1)  % y1第一行为FD计算值    第二行为理论计算值
 
 
 
 新人贴,好紧张呐

使用差分法计算矩形波导前20截止频率(matlab实现)相关推荐

  1. python有一分数序列求前20项和答案_求分数序列前20项和matlab

    有一个分数序列1/2,2/3,3/5,5/8,8/13,13/21.求这个序列的前20项之和.C语言编程 #includeintmain(void){inta=1,b=2,i;doublesum=0; ...

  2. 中心差分法 matlab,(最新整理)结构动力学使用中心差分法计算单自由度体系动力反应的MATLAB程序...

    <(最新整理)结构动力学使用中心差分法计算单自由度体系动力反应的MATLAB程序>由会员分享,可在线阅读,更多相关<(最新整理)结构动力学使用中心差分法计算单自由度体系动力反应的MA ...

  3. 【Java】计算1+1/2+1/3+1/4....前20项

    package com.company; //计算1+1/2+1/3+1/4....前20项public class Main {public static void main(String arg[ ...

  4. 【Java】计算1+1/2!+1/3!+1/4!....前20项

    package com.company; //计算1+1/2!+1/3!+1/4!....前20项public class Main {public static void main(String a ...

  5. 如何用电子表格计算考试成绩各科前20名均分,计算机合格率?

    假设某科成绩在B2:B500,则该科前20名的均分为: =average(if(b2:b500>large(b2:b500,20),b2:b500)) 按ctrl+shift+enter三键结束 ...

  6. 2022年4月编程语言排行榜:MATLAB 即将跌出前20名

    好老的MATLAB即将跌出前20名,这是10多年来的第一次.MATLAB编程语言主要用于数值分析领域,通常与来自同一家公司的Simulink模型结合使用.尽管MATLAB有一个半年一次的发布周期,但该 ...

  7. python利用列表计算斐波那契数列前30项并输出_python分享斐波那契数列示例分享 Python 分享斐波那契数列前20项和...

    分享助python大神.斐波那契数列,编写程序,利用列具体内容 拜托拜托有时候,最痛苦的其实不是失去,而是你得到以后其实不快乐. ##缩进格式看图 l=[1,1] for i in range(28) ...

  8. 编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的空间中

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的空间中. 代码: #inc ...

  9. 视觉机器学习20讲-MATLAB源码示例(2)-KNN学习算法

    视觉机器学习20讲-MATLAB源码示例(2)-KNN学习算法 1. KNN学习算法 2. Matlab仿真 3. 仿真结果 4. 小结 1. KNN学习算法 KNN(K-Nearest Neighb ...

最新文章

  1. 《预训练周刊》第20期:EVA:包含28亿参数的中文预训练对话模型、基于知识融入提示词的文本分类...
  2. poj1730Pollard分解
  3. 学会理解并编辑/etc/fstab
  4. flashback table肯定会造成rowid跟着修改
  5. 机器学习 异常值检测_异常值是否会破坏您的机器学习预测? 寻找最佳解决方案
  6. 字符串循环右移的一道题目
  7. 二分查找算法java
  8. php前端介绍,Web前端的开发前景介绍
  9. nuxt asyncData extendRoutes nuxtServerInit
  10. flume与kafka的整合
  11. css扫描动画效果demo示例(整理)
  12. Android事件分发理解
  13. php使用iframe框架,ThinkPHP后台首页使用iframe(框架)
  14. 一个IT民工致女儿的一封信
  15. 《Adobe After Effects CS6完全剖析》——第2章 时间标尺 营造整洁的工作流程之梦...
  16. 为什么我说,卖货直播平台开发的定位可以从这方面入手
  17. 【六袆 - windows11 】Win11无法登录微软账号;Win11无法登录微软账号的解决方法
  18. html div peidui,AirPods怎么删除配对过的设备 airpods可以和电脑连接的。
  19. android执行lua脚本的方法,android执行lua脚本的方法
  20. 6.5 负反馈对放大电路性能的影响

热门文章

  1. arduino安装第三方开发板库文件
  2. Ruoyi用户菜单权限
  3. IT专业大学生毕业前必做的1010件事
  4. java计算今天是今年的第几天
  5. 2021014615张驰
  6. Android图片海报制作软件开发实践
  7. 蓝书(算法竞赛进阶指南)刷题记录——CH#46A BZOJ3276 磁力块(bfs+分块)
  8. app上架被拒的各种原因
  9. Python3 猴子偷桃
  10. easyexcel 学习