2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 高斯消元法的c语言编程 用C语言编程高斯全主元消元法

高斯消元法的c语言编程 用C语言编程高斯全主元消元法

时间:2018-11-10 12:34:49

相关推荐

高斯消元法的c语言编程 用C语言编程高斯全主元消元法

满意答案

shortlane

.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分享举报

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。