资源描述:
《Gauss完全主元消去法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2011-2012(1)专业课程实践论文Gauss完全主元消去法韩璐,,R数学07-1一、算法理论设方程组的增广矩阵为。首先在中选取绝对值最大的元素作为主元素,例如,然后交换的第行与第行,经第一次消元计算得。重复上述过程,已完成第步的选主元素,交换两行及交换两列,消元计算,约化为,其中元素仍记作,元素仍记作。第步选主元素(在右下角方框内选),即确定,使。交换第行与行元素交换第列与列元素,将调到位置,再进行消元计算,最后将原方程化为,其中,,…,的次序为未知数,,…,调换后的次序。回代求解得完全主元消去法,
2、其步骤如下:设。本算法用的带有行、列交换的Gauss消去法,消元结果冲掉,乘数冲掉,计算解冲掉常数项,用表示对的消元次数。用一整型数组开始记录未知数,,…,的次序(即下标,2,…,),最后记录调换后未知数的下标。步1对于=1,2,…,,有;对于,2,…,,做到步6。步2选主元素。步3如果,则计算停止(这时)。步4(1)如果,则转(2),否则换行:,;(2)如果,则转步5,否则换行:,。步5计算乘数。步6消元计算;。步7回代求解(1);(2)对于,。步8调整未知数的次序(1)对于;,;(2)对于;。二、算法
3、框图输入选主元素交换行交换列且消元计算回代调整求解输入计算解输出是否否否三、算法程序#include#include#defineN4/*方程阶数*/voidprintf_ab(doublea[][N],double*b);/*打印运算矩阵a,b*/voidget_CEMEresult(doublea[][N],double*b,int*Label);/*回代求解*/voidCEME(doublea[][N],double*b,int*Label);//完全选主元素的消去
4、法Completeeliminationofmajorelementsvoidchoose_ME(doublea[][N],double*b,int*Label,intk);//--------------------------------//----测试数组/*doublea[N][N]={{2,1},{2,2}};doubleb[N]={3,4};//yes2doublea[N][N]={{3,2,1},{5,6,4},{7,8,9}};doubleb[N]={5,6,7};//yes3double
5、a[N][N]={{4,-1,1},{-1,4.25,2.75},{1,2.75,3.5}};doubleb[N]={6,-0.5,1.25};//yes3doublea[N][N]={{2,1,1,0},{4,3,3,1},{8,7,9,5},{6,7,9,8}};doubleb[N]={1,2,2,-1};//yes4doublea[N][N]={{2,-1,0,0,0},{-1,2,-1,0,0},{0,-1,2,-1,0},{0,0,-1,2,-1},{0,0,0,-1,2}};doubleb[N
6、]={1,0,0,0,0};//yes5doublea[N][N]={{0.4096,0.1234,0.3678,0.2943},{0.2246,0.3872,0.4015,0.1129},{0.3645,0.1920,0.3781,0.0643},{0.1784,0.4002,0.2786,0.3927}};doubleb[N]={0.4043,0.1550,0.4240,-0.2557};//yes4*/voidmain(){doubleb[N]={1,2,2,-1};//yes4doublea[N]
7、[N]={{2,1,1,0},{4,3,3,1},{8,7,9,5},{6,7,9,8}};intLabel[N];//用于保存未知数x的次序printf("变换前,增广矩阵[A
8、B]:");printf_ab(a,b);CEME(a,b,Label);//完全选主元素的消去法printf("变换后,增广矩阵[A
9、B]:");printf_ab(a,b);get_CEMEresult(a,b,Label);//计算线性方程组的解,并顺序打印}////打印运算增广矩阵[a
10、b]//voidprint
11、f_ab(doublea[][N],double*b){inti,j;for(i=0;i