满意答案
shortlane
2013.10.25
采纳率:46% 等级:12
已帮助:5562人
//TurboC 2.0太落后了,建议使用VC++6.0。
#include"stdio.h"
#include"math.h"
//最大49阶
#define N 50
void Gauss(float U[N][N],int n);
void main()
{
int n,i,j;
float U[N][N];
printf("------------特殊说明---------------\n");
printf("当输出的数据含有时,表示在计算过程中数据已经出现溢出!\n");
printf("-----------------------------------\n");
printf("输入对应方程的阶数:");
scanf("%d",&n);
for(i=0;i
for(j=0;j
U[i][j]=0;
printf("输入方程组的增广矩阵:\n");
for(i=0;i
for(j=0;j<=n;j++)
scanf("%f",&U[i][j]);
Gauss(U,n);
}
//高斯选列主元消去法
void Gauss(float U[N][N],int n)
{
int i,j,m,row;
float max,t,sum;
float result[50];
for(m=0;m
{
//选取主元
max=U[m][m];
for(i=m;i
{
if(fabs(max)
{
max=U[i][m];
row=i;
}
}
if(fabs(max)<0.01)
{
printf("主元接近于零,方法失效!\n");
return;
}
else
{
if(max!=U[m][m])
{
for(j=m;j<=n;j++)
{
t=U[m][j];
U[m][j]=U[row][j];
U[row][j]=t;
}
}
}
//消元
for(i=m+1;i
{
float t1,t2;
t1=U[i][m];
t2=U[m][m];
U[i][m]=0;
for(j=m+1;j<=n;j++)
U[i][j]=U[i][j]*t2-U[m][j]*t1;
}
}
//回代求解
for(i=n-1;i>=0;i--)
{
if(i==n-1) result[i]=U[i][i+1]/U[i][i];
else
{
sum=0;
for(j=i+1;j
sum=U[i][j]*result[j]+sum;
result[i]=(U[i][n]-sum)/U[i][i];
}
}
//输出根
printf("高斯选列主元消去法求得的解为:\n");
for(i=0;i
printf("%3.3f ",result[i]);
printf("\n");
} 展开
00分享举报