试验3 直接法求解线性方程组
实验内容
Guass列主元消去法
Doolittle分解
追赶法
试验3 解线性方程组的直接法
/* Direct Method for Solving Linear Systems */
求解
§1 高斯消元法/* Gaussian Elimination */
高斯消元法:
思路
首先将A化为上三角阵/* upper-triangular matrix */,再回代求解/* backward substitution */。
=
Guass列主元消去法步骤
基本步骤
,b,TOL
=1:N
|P|<=TOL 则停止,输出无解信息,否则
换行
消元
#include <>
#include <>
#include <>
#include <>
#define N 4
#define EPS 1e-5
void Guass(double A[][N+1])
{int i,j,k=0,I,t;
double w=0,p,b;
for(k=0;k<N-1;k++)
{ /*选主元*/
p=A[k][k];
I=k;
for(i=k+1;i<N;i++)
if(fabs(A[i][k])>fabs(p))
{p=A[i][k];
I=i;
}
if(fabs(p)<EPS)
{printf("the number is error! i =%d,
k=%d\n",i,k);
exit(0);
}
/*换行*/
if(I!=k)
for(j=0;j<N+1;j++)
{ b=A[k][j];
A[k][j]=A[I][j];
A[I][j]=b;
}
for(i=k+1;i<N;i++)
{ /*行乘数*/
A[i][k]=A[i][k]/A[k][k];
for(j=k+1;j<N+1;j++)
A[i][j]=A[i][j]-A[i][k]*A[k][j];
}
}
/*输出变换后的矩阵*/
printf("The Matrix:\n");
for(i=0;i<N;i++)
{ for(j=0;j<N+1;j++)
printf("A[%d][%d]=%",
i,j, A[i][j]);
printf("\n");
}
if(fa
[理学]试验61直接法求解线性方程组 来自淘豆网www.taodocs.com转载请标明出处.