工程电磁场报告_第1页
工程电磁场报告_第2页
工程电磁场报告_第3页
工程电磁场报告_第4页
工程电磁场报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工程电磁场报告 迭代法求电位分布 2010 4 2 0808190246 吴鹏 工程电磁场报告工程电磁场报告 迭代法在计算电位中的应用迭代法在计算电位中的应用 所谓迭代法 是一种不断用变量的旧值递推新值的过程 跟迭代法相对应的是直接法 或者称为一次解法 即一次性解决问题 迭代法又分为精确迭代和近似迭代 二分法 和 牛顿迭代法 属于近似迭代法 迭代算法是用计算机解决问题的一种基本方法 它利用计算机运算速度快 适合做重 复性操作的特点 让计算机对一组指令 或一定步骤 进行重复执行 在每次执行这组指 令 或这些步骤 时 都从变量的原值推出它的一个新值 在这次实验中是利用迭代法求 出在二维场中的电位分布 相对于其他求解方法 虽然精确度存在误差 但是简单易行 充分利用计算机的高效 可以很快的得出大致的电位分布 实验采用的是 C 语言进行辅 助 一 初试牛刀 计算 5 5 的电位分布 这个实验是用于实现超松弛法来求节点电位 考虑到要求的场是二维分布的 所以构 造的基本数据为二维数组 套用的迭代公式为 a i j b i j 4 b i 1 j b i j 1 a i 1 j a i j 1 4 b i j 迭代因子为 可根据经 验公式算出 直接赋值 考虑到计算机的高效性 在此可任取一大于 1 小于 2 的数 最后 均能得出答案 只是迭代次数有所差异 该实验的方框图如下 启动 赋边界已知电位 赋场点初始值 累计迭代次数 M 0 迭代次数 M 1 N Y Y 实现该功能的源程序如下 include include include void main double a 5 5 double b 5 5 int i 0 j 0 static int M 0 bool N true for j 1 j 3 j for i 1 i 3 i 利用公式进行迭代 判断是否达到精 度要求 打印出每一个点的点位 结束 a i j 0 for j 0 j 4 j a 4 j 0 a 0 j 100 for i 1 i 4 i a i 0 0 a i 4 0 cout 各内节点上电位的初始迭代值为 endl 输出初始迭代值 for i 0 i 4 i for j 0 j 4 j cout a i j cout endl cout n do for i 0 i 4 i for j 0 j 4 j b i j a i j for i 1 i 3 i for j 1 j 3 j a i j b i j 1 2 4 b i 1 j b i j 1 a i 1 j a i j 1 4 b i j for i 1 i 3 i for j 1 j0 00001 N true break else N false M while N cout 经迭代后 各节点电位的近似值为 endl for i 0 i 4 i for j 0 j 4 j cout setiosflags ios fixed setprecision 5 a i j cout endl cout endl cout 迭代次数 M endl endl 程序很短 但是实现了要求的功能 经运行可得出结果 电位大概的分布如左图所示 可 以看出还是比较符合的 在这个实验中要注意几点 首先是要选取合适的数据类型 如果采用了 int 型 会对结果造成很大的影响 其次是对精度的控制 否则会影响迭代次数和结果 再次就是迭代公式要熟悉 把它转换为计算机语言 总之这个实验算是一个练手 为下一步的实验打下基础 搞清楚这个实验的原理和方 法 很容易得出下一个实验的操作过程 二 实战演练 用迭代法求出对称场中的点位分布 其实这一个实验和上一个是大同小异 只是要考虑最中间一行的迭代关系 这很重要 否则会出现中间两行没有进行迭代的情况 作出左边一半后 直接再用 C 给另外一 半赋予与左侧相对称的值即可 试验设计的方框图如下图所示 Y 程序启动 赋边界的电位值 赋场内各点的电位值 累计迭代次数 M 0 迭代次数加 1 按照公式进行迭代 检验是否达到精度 把另外一半镜像出来 直接赋值 打印出结果 实验源程序如下 include include include include void main double a 40 20 定义数组 a 用于存放初始迭代值 double b 40 20 定义数组 b 用于和数组 a 进行比较 以确定是否达到实验进 度 double c 40 40 int i 0 j 0 bool M static int N 0 定义静态变量 记录迭代的次数 ifstream infile test txt ios noreplace ofstream outfile outfile open test txt for i 1 i 40 i 为内节点赋初始迭代值 for j 1 j 20 j a i j 2 5 j 1 for i 1 i 40 i 为左边界赋初始迭代值 a i 0 0 结束 for j 0 j 20 j 为上下边界赋值 a 0 j 100 a 39 j 0 cout 初始迭代值为 endl outfile 初始迭代值为 endl for i 0 i 40 i for j 0 j 20 j outfile a i j 输出到文件 cout a i j 输出数组 cout endl outfile endl do 开始进行迭代 for i 0 i 40 i 先将 a 数组前一次复制到 b 数组 便于精度比较 for j 0 j 20 j b i j a i j for i 1 i 38 i for j 1 j 18 j 套用迭代公式 去迭代因数为 1 5 a i j b i j 1 5 4 b i 1 j b i j 1 a i 1 j a i j 1 4 b i j a i 19 0 25 a i 1 19 a i 18 b i 1 19 a i 18 for i 1 i 38 i 比较是否达到精度要求 for j 1 j0 00001 M true break else M false N 完成一次迭代 迭代次数 1 while M for i 0 i 39 i 将另外对称部分镜像出来 for j 0 j 19 j c i j a i j c i 39 j a i j cout endl cout 经过的迭代次数为 N endl outfile 经过的迭代次数为 N endl cout endl cout 经过迭代后 各节点电位的近似值为 endl outfile 经过迭代后 各节点电位的近似值为 endl for i 0 i 39 i for j 0 j 39 j cout setiosflags ios fixed setprecision 5 c i j outfile setiosflags ios fixed setprecision 5 c i j cout n cout n outfile endl infile close outfile close cout 实验数据太多 已存放源程序目录下 名为 test txt cout n cout n 将输出数据 全部导出到 文件中 再 利用 excel 制 作表格 可 得到比较好 的数据分布 图 如左图 可看出数据越多 图表越是精确 基本上可以反映出电位分布情况 这和用软件模拟的 效果很是相似 实验总结 实验总结 经过了这次试验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论