时间:2024-07-28
韩 帅,许家华,张思齐,文 源
(河南科技大学,河南 洛阳 471003)
电磁场理论(或电磁场与电磁波)是电子信息工程类专业和电气工程类专业的专业基础课[1],该课程理论抽象,公式繁多,计算复杂,理解困难,是电子信息类专业课程中最为难学、难教和难懂的课程[2]。同时与电磁场课程配套的实验系统设备昂贵,因此多数高校电磁场理论课程不开设课程实验,即使少数学校具有成套的实验设备,也只是对学生进行实验演示。抽象理论、复杂的公式加上实验的缺少更加增加了电磁场课程学习的难度,使得该课程成为学生学习的噩梦。
虽然利用实际的实验系统开设电磁场实验非常困难,但是利用数值计算软件对电磁场系统进行模拟是一种有效的实验方法。在电磁场数值模拟中常用的是有限元和数值计算方法[3]。由于有限元方法过于专业和复杂,不适合在非电磁场专业的本科教学中开展,因此利用数值计算方法实现电磁场数值模拟开设课程实验对于本科学生来说是一种可行的方法[4]。常用的数值计算软件由Matlab和Python,相对于Matlab,Python是开源软件,无需任何版权授权,同时由于机器学习、人工智能等课程也使用Python软件,因此基于Python语言设计电磁场数值模拟软件不但可以弥补电磁场教学无法开设实验的缺点,而且还可以加强学生对Python语言的掌握能力。因此设计基于Python的电磁场数值模拟软件对于电磁场课程教学具有重要的促进意义。
Python是一种开源的软件开发平台,目前大量的机器学习和人工智能系统都是基于Python开发。Python中数值计算模块Numpy、科学计算模块Scipy、数据处理模块Pandas和数据可视化模块Matplotlib,这些模块为Python实现数值计算提供了解决途径。下面简单介绍这些数值计算模块的主要功能。
NumPy提供了高效存储和操作密集数据缓存的接口。NumPy 数组与 Python 内置的列表类型非常相似。但是在大维度数组处理方面, NumPy 数组提供了更加高效的存储和数据操作。 NumPy 数组几乎是整个 Python 数据科学工具生态系统的核心。Numpy模块中包含由线性代数、多项式运算、矩阵运算、逻辑函数、统计等功能,这些数值计算功能基本上涵盖了常用的数值计算方法。利用Numpy函数可以方便实现大量的数值计算功能。
Scipy是专门为科学计算开发的数值计算模块,其中包括数值积分、特殊函数、傅里叶学习、信号处理、图像处理、优化、插值和统计等功能。相对于Numpy模块,Scipy提供更加专业、更加复杂的数值计算功能,是解决复杂数值计算问题的有效工具。
Pandas是基于Python开发的强大的数据处理模块,主要用于大数据的分析和处理。Pandas可以实现大量数据的排序、处理、特征分析、归一化等处理功能,它提供的Series和DadaFrame数据结构可以方便处理大型数据。Pandas提供和丰富的输入输出接口,可以方便实现对xlsx、csv和txt文件的操作。Pandas已经成为Python数据处理中必不可少的重要工具。
数据可视化模块Matplotlib的功能类似Matlab的数据可视化功能。Matplotlib具有良好的操作系统兼容性和图形显示底层接口兼容性,支持几十种图形显示接口与输出格式,这使得用户无论在哪种操作系统上都可以输出自己想要的图形格式。这种跨平台、多功能的特点已经成为Matplotlib 最强大的功能之一, Matplotlib也因此吸引了大量用户,形成了一个活跃的开发者团队,晋升为 Python 科学领域不可或缺的强大武器。
Python中的Numpy、Scipy、Pandas和Matplotlib等模块功能强大,能够提高主机计算功能和数据可视化功能,利用这些功能可以实现电磁场数值计算和相应的可视化界面设计。
本文利用Python平台中提供的数值计算模块下开发电磁场实验系统,该实验系统可以实现静态电磁场数值计算和可视化显示。电磁场实验系统主要包括静态电磁场的数值积分计算和二维拉普拉斯方程的求解。
静态电磁场解析解中通常包含复杂的积分运算,这些积分计算通常不能直观反映静态电磁场的结构。圆柱坐标和求坐标系中静态场的解析解中经常出现复杂的椭圆积分,这些椭圆积分通常不能表示为简单的代数函数,这样更加增加了学生理解静态电磁场的困难。利用数值积分方法,将这些复杂的积分计算转换为微元的求和可以直接求出静态场场结构的数值解,再利用绘图函数可以绘制静态场的可视化图形,从而实现静态电磁场可视化显示[5]。
目前在Python平台上利用数值积分设计有限长线电荷的电场分布、带点圆盘电场的空间分布、载流圆环磁场的空间分布、亥姆霍兹线圈的磁场结构等实验程序,利用格林函数的数值积分实现带电球壳内部的电场分布、带电圆柱体外部的电场分布等实验。这些实验程序可以提供静态电磁场的可视化图形输出,有效加强了学生对静态电磁场的直观理解。
无源空间静电场的结构通常通过求解拉普拉斯方程得到[5]。但是拉普拉斯方程的求解结果通常是级数表示,很难从级数表达式中直观看出静电场的电势分布。而有限差分法可以实现拉普拉斯迭代求解,从而求出静电场的电势分布,集合Matplotlib中的contourf函数可以实现电场线的可视化显示。拉普拉斯方程最常用的求解方法是有限差分法和超松弛法。超松弛法是有限差分法的改进,可以有效加快迭代的收敛速度。利用有限差分法求解而二维拉普拉斯方程可以获得三种边界条件下的静电场的电势分布。目前已经完成矩形带电槽、同轴矩形带电槽和混合边界下带电槽的静电场有限差分法求解,这些求解结果都可以给出电势的可视化分布图。下图是在Python平台下利用超松弛法求解二维拉普拉斯方程的结果。矩形槽上边电势为100 V,左边电势为50 V,下边和右边电势为0 V。从中可以清楚看出电势的分布。
图1 二维矩形槽的电势分布
Python作为开源软件开发平台目前已经得到广泛应用,Python开发平台提供的Numpy、Scipy、Pandas和Matplotlib等模块提供了丰富的数值计算功能和数据可视化功能,利用这些模块开发电磁场数值仿真实验系统可以有效弥补电磁场理论教学中的不足,增加学生对电磁场的直观认识和理解,有效提高教学质量。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!