高斯消元法的思路是什么,现在只看书,一个程序也不会编,真难。
希望高手指点一下
具体思路看数值分析课本吧....
下面是我学数分时候写过的一个"选主元素法"解方程的程序,可以参考一下
#include<stdio.h>
#include<math.h>
#define M 3
#define N 3
main(){
double a[M][M]={10,-1,-2,-1,10,-2,-1,-1,5};//系数
double b[M]={7.2,8.3,4.2};
int k,i,j,l;
double d,t;
k=0;
for(k=0;k<N;k++){
d=a[k][k];
l=k;
i=k+1;
for(i=k+1;i<N;i++){
if(fabs(a[i][k])>fabs(d)){
d=a[i][k];
l=i;
}
}
if(d!=0){
if(l!=k){
for(j=k;j<N;j++){
t=a[l][j];
a[l][j]=a[k][j];
a[k][j]=t;
}
t=b[k];
b[k]=b[l];
b[l]=t;
}
}
for(j=k+1;j<N;j++)
a[k][j]=a[k][j]/a[k][k];
b[k]/=a[k][k];
for(i=k+1;i<N;i++)
for(j=k+1;j<N;j++)a[i][j]=a[i][j]-a[i][k]*a[k][j];
for(i=k+1;i<N;i++)b[i]=b[i]-a[i][k]*b[k];
}
for(i=N-1;i>=0;i--){
for(j=i+1;j<N;j++)
b[i]-=a[i][j]*b[j];
}
for(i=0;i<N;i++)
printf("%lf ",b[i]);
getchar();getchar();
return 0;
}