当前位置:首页 > 数值分析实验报告
数 值 分 析 实 验 报 告
学院:计算机学院班级:信计姓名:陈梦学号: 0801班 0808060107
高斯列主元消去法及追赶法
一、 上机题目
1、用高斯列主元消去法求解线形方程组:
?0.0012.0003.000??x1??1.000??????? ??1.0003.7124.632??x2???2.000?.
??2.0001.0725.643??x??3.000????3???2、用追赶法解三对角方程组Ax=b,其中
00??2-10?1?????0??-12-10?0? A=?0-12-10?, b??0?.
????0-12-1??0?0??0??0?00-12????
二、 数学模型建立
1、
高斯列主元消去法
用高斯消去法求解线性方程组时,应避免小的主元.在实际计算中,进行
(k?1)第k步消去前,应该在第k列元素aik (i=k,…,n)中找出绝大值最大者,例
如
k?1)(k?1) ∣a(pk∣=maxaik
k?i?nk?1)再把第p个方程与第k个方程组进行交换,使a(pk成为主元.我们称这个过程
为选主元.由于只在第k列元素中选主元,通常也称为按列选主元(或称部分选主元).
如果在第k步消去前,在第k个方程到第n个方程所有的xk到xn的系数
(k?1) (i=k,…,n;j=k,…,n)中,找出绝对值最大者,例如 aij
k?1)(k?1)∣a(pq∣=max∣aij∣
k?i,j?nk?1)再交换第k,p两个方程和第k,q两个未知量的次序,使a(pq成为主元. 称这
个过程为完全选主元.
不论是哪种方式选出主元,而后再按上面介绍的计算步骤进行消去的计算,一般都称为选主元的高斯消去法.在实际计算中,常用按列选主元的高斯消去法.
2、 追赶法
在一些实际问题中,例如解常微分方程边值问题,解热传导方程以及船体数学放样中建立三次样条函数等,都会要求解系数矩阵为对角占优的三对角线方程组
?b1??a2?????c1b2?c2?an?1?bn?1an??x1????????x2????????????cn?1??xn?1?????bn???xn??f1??f2???, ?fn?1?fn??简记为Ax?f.
求解Ax?f等价于解两个三角形方程组:
Ly?f,求y;Ux?y,求x.从而得到解三对角线方程组的追赶法公式:
(1)计算??i?的递推公式
?1?c1/b1,?i?ci/?bi?ai?i?,i?2,3,?,n?1;
(2) 解Ly?f
y1?f1/b1,yi??fi?aiyi?1?/?bi?ai?i?1?,i?2,3,?,n; (3)解Ux?y
xn?yn,xi?yi??ixi?1,i?n?1,n?2,?2,1. 我们将计算系数
?1??2????n?1及y1?y2???yn的过程称为追的过程,将计算方程组的解
xn?xn?1???x1的过程称为赶的过程。三、 算法分析
1、 高斯列主元消去法
该算法的主要思想是通过在主函数main()中依次调用三个函数input()、gaosi()、solution()来实现列主元的消去并求出方程组的解。其中函数input()用来输入方程组的个数、系数矩阵及右端项的值;然后在函数gaosi()中通过三重for循环语句,判断是否需要进行行的交换即主元的选择,进而来实现高斯列主元消去算法,并在运行时将每次进行主元选择后的系数矩阵都输出了;最后,调用函数solution()输出方程组的解。
2、 追赶法
在该算法中,定义了三个一维数组来存放主对角线下方、主对角线及主对角线上方的元素的值。在主函数main()中,输入主对角线下方、主对角线及主对角线上方的元素,并输入右端项,然后通过调用函数LUDecompose()
和backSubs()来实现追赶法,其具体算法见程序部分,最后在主函数中将计算的方程组的解输出即可。
四、 程序源代码
1、 高斯列主元消去法
#include
float a[50][50],b[50]; void output() { int i,j;
printf(\用高斯列主元消去法得:\\n\ for(i=0;i printf(\ printf(\ printf(\ } } void input() { int i,j; printf(\请输入方程组的个数n:\
共分享92篇相关文档