选主元的三角分解法

2019-02-15 14:13

2012-2013(1)专业课程实践论文

选主元(列)的三角分解法

范俊,0818180124,R数学08-1班 毛勇,0818180117,R数学08-1班

一、算法理论

从直接三角分解公式可看出,当时计算将中断或者当绝对值很

小时,按分解公式计算可能要求舍入误差的累积,但如果非奇异,就可通过交换的行实现矩阵

分解,因此可采用与列主元素消去法类似的方法

(可以证明下述方法与列主元素消去法等价),将直接三角分解法修改为(部分)选主元的三角分解法。

设第

步分解已完成,这时有

第步分解需要用到式

及式

为了避免用小的数

作除数,引进量

于是有

,

,

用作为,交换的行与行元素(将位置的新元素仍记作及

),于是有。由此在进行第步分解计算。

该程序即利用选主元的三角分解法解方程求方程的根。先选择列主元,再构造LU矩阵,通过求解LY = B和UX = Y得出需要的解。

注:方程维数在程序中需按题意自定义。

二、算法框图

输入方程组选列主元否是否是该列最大绝对值是交换行构造LU矩阵求解LY = B求解UX = Y

三、算法程序

源代码源代码:

LU_Decomposition.cpp #include #include

#define N 4 //矩阵维数,可自定义 static double A[N][N]; //系数矩阵 static double B[N]; //右端项 static double Y[N]; //中间项 static double X[N]; //输出

static double S[N]; //选取列主元的比较器 int i,j,k; //计数器 void main()

{

cout << \请输入线性方程组(ai1,ai2,ai3......ain, yi):\ for ( i = 0; i < N ;i++) {

for (int j = 0; j< N ;j++ ) cin >> A[i][j]; cin >>B[i]; }

for (k = 0 ; k < N; k++) {

//选列主元 int index =k;

for (i = k ; i < N; i++) {

double temp = 0;

for (int m = 0 ; m < k ;m++) {

temp = temp + A[i][m]*A[m][k]; }

S[i] = A[i][k] - temp; if(S[index] < S[i]) {

index = i; }


选主元的三角分解法.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:导入新课方法举隅

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: