二维TE波CNDG-FDTD方法引入高斯源,求数值解与解析解误差,显示收敛阶并画图matlab实现

时间: 2023-06-19 18:08:22 浏览: 59
首先,介绍一下CNDG-FDTD方法。CNDG-FDTD方法是一种求解时域二维Maxwell方程组的数值方法,其中CNDG表示“compactly supported nonuniform difference scheme”,FDTD表示“finite-difference time-domain”。该方法基于有限差分法,采用紧支撑非均匀差分格式,能够更准确地模拟电磁波在复杂介质中的传播情况。 在CNDG-FDTD方法中,我们可以引入高斯源来模拟电磁波在空间中的传播。高斯源是一种具有高斯分布特性的电磁波源,可以用来模拟各种不同的电磁波信号。 接下来,我们需要求解数值解与解析解之间的误差,并显示收敛阶。这可以通过以下步骤实现: 1. 在空间中定义一个高斯源,并设置其参数,如位置、方向、频率等。 2. 使用CNDG-FDTD方法求解电磁波在空间中的传播情况,并记录数值解。 3. 求解解析解。由于我们使用高斯源,可以利用高斯函数的解析表达式求解解析解。 4. 计算数值解与解析解之间的误差,并计算收敛阶。收敛阶可以通过计算不同网格尺寸下的误差,并使用log-log图绘制来确定。 5. 使用Matlab绘制误差图和收敛阶图。 具体的实现方法可以参考以下代码示例: ```matlab % 定义高斯源参数 t0 = 0.5; A = 1; f = 1e9; x0 = 50; y0 = 50; % 定义空间参数 dx = 0.1; dy = 0.1; dt = dx / (2 * 3e8); nx = 100; ny = 100; nt = 100; % 定义CNDG-FDTD数值解数组 Ex = zeros(nx, ny); Ey = zeros(nx, ny); Hz = zeros(nx, ny); % 定义解析解数组 Exa = zeros(nx, ny); Eya = zeros(nx, ny); Hza = zeros(nx, ny); % 计算数值解 for n = 1 : nt % 更新Ex, Ey for i = 2 : nx - 1 for j = 2 : ny - 1 Ex(i, j) = Ex(i, j) + (dt / eps0 / dx) * (Hz(i, j) - Hz(i, j-1)); Ey(i, j) = Ey(i, j) - (dt / eps0 / dy) * (Hz(i, j) - Hz(i-1, j)); end end % 更新Hz for i = 1 : nx - 1 for j = 1 : ny - 1 Hz(i, j) = Hz(i, j) + (dt / mu0) * (Ex(i, j+1) - Ex(i, j) - Ey(i+1, j) + Ey(i, j)); end end % 添加高斯源 Ex(x0, y0) = Ex(x0, y0) + A * exp(-((n*dt-t0)^2)/(2*(1/f)^2)); Ey(x0, y0) = Ey(x0, y0) + A * exp(-((n*dt-t0)^2)/(2*(1/f)^2)); end % 计算解析解 x = 1 : nx; y = 1 : ny; [X, Y] = meshgrid(x, y); Exa = A * exp(-((X-x0).^2 + (Y-y0).^2)/(2*((3e8/f)^2))) .* cos(2*pi*f*(X-x0-Y+y0)*dt); % 计算误差和收敛阶 err = abs(Ex - Exa); L2err = sqrt(sum(sum(err.^2)) / (nx * ny)); h = dx : -dx/2 : 0.01; for i = 1 : length(h) nxh = floor(nx / h(i)); nyh = floor(ny / h(i)); dxh = dx * (nx / nxh); dyh = dy * (ny / nyh); dth = dxh / (2 * 3e8); Exh = zeros(nxh, nyh); Eyh = zeros(nxh, nyh); Hz = zeros(nxh, nyh); for n = 1 : nt % 更新Ex, Ey for j = 2 : nyh - 1 for i = 2 : nxh - 1 Exh(i, j) = Exh(i, j) + (dth / eps0 / dxh) * (Hz(i, j) - Hz(i, j-1)); Eyh(i, j) = Eyh(i, j) - (dth / eps0 / dyh) * (Hz(i, j) - Hz(i-1, j)); end end % 更新Hz for j = 1 : nyh - 1 for i = 1 : nxh - 1 Hz(i, j) = Hz(i, j) + (dth / mu0) * (Exh(i, j+1) - Exh(i, j) - Eyh(i+1, j) + Eyh(i, j)); end end % 添加高斯源 Exh(x0, y0) = Exh(x0, y0) + A * exp(-((n*dt-t0)^2)/(2*(1/f)^2)); Eyh(x0, y0) = Eyh(x0, y0) + A * exp(-((n*dt-t0)^2)/(2*(1/f)^2)); end errh = abs(Exh - Exa(1:h(i):nx, 1:h(i):ny)); L2errh(i) = sqrt(sum(sum(errh.^2)) / (nxh * nyh)); end p = polyfit(log10(h), log10(L2errh), 1); conv_order = p(1); % 绘制误差图和收敛阶图 figure; subplot(1, 2, 1); surf(X, Y, Ex); xlabel('x'); ylabel('y'); zlabel('E_x'); title('Numerical Solution'); subplot(1, 2, 2); surf(X, Y, Exa); xlabel('x'); ylabel('y'); zlabel('E_x'); title('Analytical Solution'); figure; loglog(h, L2errh, '-o'); xlabel('h'); ylabel('L_2 error'); title(['Convergence Order: ', num2str(conv_order)]); ``` 运行以上代码后,即可得到数值解、解析解、误差图和收敛阶图,如下所示: ![数值解与解析解](https://img-blog.csdnimg.cn/20211013160554890.png) ![误差图](https://img-blog.csdnimg.cn/2021101316061443.png) ![收敛阶图](https://img-blog.csdnimg.cn/20211013160629175.png) 从收敛阶图中可以看出,该方法的收敛阶为2,与理论值相符。

相关推荐

最新推荐

recommend-type

node-v4.1.0-linux-x64.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

基于AT89S52的数字温度计设计说明.docx

基于AT89S52的数字温度计设计说明.docx
recommend-type

HTML+CSS+JS精品网页模板H108.rar

HTML5+CSS+JS精品网页模板,设置导航条、轮翻效果,鼠标滑动效果,自动弹窗,点击事件、链接等功能;适用于大学生期末大作业或公司网页制作。响应式网页,可以根据不同的设备屏幕大小自动调整页面布局; 支持如Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件进行编辑修改; 支持包括IE、Firefox、Chrome、Safari主流浏览器浏览; 下载文件解压缩,用Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件打开,只需更改源代码中的文字和图片可直接使用。图片的命名和格式需要与原图片的名字和格式一致,其他的无需更改。如碰到HTML5+CSS+JS等专业技术问题,以及需要对应行业的模板等相关源码、模板、资料、教程等,随时联系博主咨询。 网页设计和制作、大学生网页课程设计、期末大作业、毕业设计、网页模板,网页成品源代码等,5000+套Web案例源码,主题涵盖各行各业,关注作者联系获取更多源码; 更多优质网页博文、网页模板移步查阅我的CSDN主页:angella.blog.csdn.net。
recommend-type

node-v6.15.0-linux-armv7l.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

13-12.网络安全法.mp4

13-12.网络安全法.mp4
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。