列主元消去法解方程组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值分析上机实验报告(二)

一、问题描述:利用列主元消去法求解下列方程组

2X1+5X2+3X3 - 2X4=7

2X1- 2X2+3X3+5X4=-1

X1+3X2+2X3+3X4=0

X1+2X2+ X3 - 2X4=4

二、算法原理:

由高斯消去法知道,在消去过程中可能出现a kk(k)=0的情况,这时候消去法将无法进行,所以最好选取系数矩阵(或消元后的低阶矩阵)中绝对值最大的元素作为主元,以使高斯消去法具有较好的数值稳定性。

三、实验步骤:

1、det 1;

2、对于k=1,2,···,n-1

(1)按列选主元

|a ik.k|=max|a ik|

(2)如果a i.k=0,则计算停止(det(A)=0)

(3)如果i k=k则转(4)

换行:a kj a ik·j(j=k,k+1,···,n)

b k b ik

det -det

(4)消元计算

对于i=k+1,···,n

○1am ik=a ik/a kk

○2对于j=k+1,···,n a ij a ij—m ik*a kj

○3b i b i-m ik*b ik

(5)det a kk*det

3、如果则计算停止(det(A)=0)

4、回代求解

(1)b n b n/a nn

(2)对于i=n-1···,2,1

bi(bi-∑aij*bj)/aii

5.det ann*det

四、实验框图

五、源程序

# include

# include

# define n 4

main()

{

int i,j,k,l;

float A[n][n],b[n],x[n],max;

//输入系数矩阵及右端项

for(i=0;i

for(j=0;j

{

printf("A[%d][%d]=",i,j);

scanf("%f;",&A[i][j]);

}

for(i=0;i

{

printf("b[%d]=",i);

scanf("%f;",&b[i]);

}//列主元消去过程

for(k=0;k

{

max=abs(A[k][k]);

l=k;

for(i=k+1;i

if(abs(A[i][k])>max){max=abs(A[i][k]);l=i;} if(l>k)

{for(j=k;j

{

max=A[k][j];A[k][j]=A[l][j];A[l][j]=max;

}

max=b[k];

b[k]=b[l];

b[l]=max;

}

for(i=k+1;i

{max=A[i][k]/A[k][k];

for(j=k+1;j

A[i][j]=A[i][j]-max*A[k][j];

b[i]=b[i]-max*b[k];

}

}//回代过程

x[n-1]=b[n-1]/A[n-1][n-1];

for(k=1;k

{

i=n-k-1;

x[i]=b[i];

for(j=i+1;j

x[i]=x[i]-A[i][j]*x[j];

x[i]=x[i]/A[i][i];

}//输出解

for(i=0;i

printf("x[%d]=%f;",i,x[i]);

getchar();

}

六、运行结果

相关文档
最新文档