您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 房地产 > 利用超松弛迭代法求解问题
利用超松弛迭代法求解问题在电场中,利用有限差分法求解场域中各个节点的点位。其中求解差分方程组的解运用到了超松弛方法。超松弛方法是高斯—塞德尔迭代法的变形。它在迭代过程中,为了加速收敛,再把所得结果依次带入进行计算的同时,还使用把每一次迭代的变化量加权后再代入的方法。运用超松弛迭代法求解下述问题:试用超松弛迭代法求解接地金属槽内的电位的分布。已知:A=4CM,H=A\4=10CM给定边值:如图示;给定初值:Φ=0误差范围:E=10^-5计算:迭代次数N=?,Φ的分布。分析:(1)、节点按从下到上,从左到右的顺序排列。(2)、按高斯—塞德尔迭代公式进行迭代。(3)、选择加速因子Α,且A在1到2之间。以下为该题程序段:#INCLUDEIOSTREAM.H#INCLUDEMATH.H#INCLUDEIOMANIP.HBOOLSUCCESS(DOUBLEA[5][5][2],DOUBLEB)构建函数其中DOUBLEA代表记录数据前后两次的值。{INTI,J;FOR(I=1;I5;I++)FOR(J=1;J5;J++)依次对定义数组赋值{IF(FABS(A[I][J][1]-A[I][J][0])B)误差在题设范围内则返回值TRUERETURNTRUE;}否则返回FALSERETURNFALSE;}INTMAIN(){INTN,I,J;DOUBLEA[5][5][2];DOUBLEB;B=0.00005;DOUBLES=1.21;WHILE(1){N=0;COUT输入加速因子数值(1=A2)ENDL;输入题设CINS;FOR(I=0;I5;I++)FOR(J=0;J5;J++){A[I][J][0]=0;A[I][J][1]=0;}FOR(I=0;I5;I++){A[I][4][0]=100;A[I][4][1]=100;}WHILE(N==0||SUCCESS(A,B)){FOR(I=1;I4;I++)FOR(J=1;J4;J++){A[I][J][0]=A[I][J][1];A[I][J][1]=A[I][J][1]+(A[I-1][J][1]+A[I+1][J][1]+A[I][J+1][1]+A[I][J-1][1][I][J][1]*4)*S/4;由高斯—塞德尔迭代公式写出相应公式。}N++;}COUT迭代次数:NENDL;FOR(J=4;J=0;J--){FOR(I=0;I5;I++)COUTA[I][J][1]'\T';COUTENDL;}COUTENDLENDL;}RETURN0;程序结束}当加速因子分别取A=1或=1.2时程序运行的结果如下:实践表明,如果加速因子选得好,可以较快地加速迭代的收敛速度。对上述程序进行进一步界面上的优化,如下图:在设置界面上可以根据问题的需要进行参数的更改。在原界面上点击鼠标右键,出现以下菜单进行相关操作。(如界面上可以更改上下左右的点位数据,当鼠标移动到相关位置时,显示该点的点位数值。也可全局显示所有数据)。选择显示全部时可以显示全部数据
本文标题:利用超松弛迭代法求解问题
链接地址:https://www.777doc.com/doc-2609169 .html