高斯消去法C语言程序 一.docx

上传人:b****5 文档编号:27726845 上传时间:2023-07-04 格式:DOCX 页数:9 大小:15.41KB
下载 相关 举报
高斯消去法C语言程序 一.docx_第1页
第1页 / 共9页
高斯消去法C语言程序 一.docx_第2页
第2页 / 共9页
高斯消去法C语言程序 一.docx_第3页
第3页 / 共9页
高斯消去法C语言程序 一.docx_第4页
第4页 / 共9页
高斯消去法C语言程序 一.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

高斯消去法C语言程序 一.docx

《高斯消去法C语言程序 一.docx》由会员分享,可在线阅读,更多相关《高斯消去法C语言程序 一.docx(9页珍藏版)》请在冰豆网上搜索。

高斯消去法C语言程序 一.docx

高斯消去法C语言程序一

高斯消去法C语言程序一

高斯消去法C语言程序

XYYZ2006年4月9日

#include<stdio.h>

#include<math.h>

#defineN4

voidmain()

{

intk,i,j,ii=0,jj=0,z[N],tt;

doublea[N][N],b[N],sum,x[N],y[N],sp,t;

printf("请输入原始增广矩阵(按行输入):

\n");

for(i=0;i<N;i++)

{

for(j=0;j<N;j++)

scanf("%lf",&a[i][j]);

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

}

printf("你输入的原始增广矩阵为:

\n");

for(i=0;i<N;i++)z[i]=i;

for(i=0;i<N;i++)

{

for(j=0;j<N;j++)

printf("%f",a[i][j]);

printf("%f\n",b[i]);

}

printf("\n");

for(k=0;k<N-1;k++)

{

ii=k;jj=k;

for(i=k;i<N;i++)

for(j=k;j<N;j++)

if(fabs(a[ii][jj])<fabs(a[i][j])){ii=i;jj=j;}

if(a[ii][jj]==0)break;

if(ii!

=k)

for(j=k;j<N;j++)

{t=0;t=a[ii][j];a[ii][j]=a[k][j];a[k][j]=t;}

{t=0;t=b[ii];b[ii]=b[k];b[k]=t;}

if(jj!

=k)

for(i=0;i<N;i++)

{t=0;t=a[i][jj];a[i][jj]=a[i][k];a[i][k]=t;}

{tt=0;tt=z[jj];z[jj]=z[k];z[k]=tt;}

for(i=k+1;i<N;i++)/*消元过程*/

{

sp=a[i][k]/a[k][k];

for(j=k;j<N;j++)

a[i][j]=a[i][j]-a[k][j]*sp;

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

}

printf("第%d次消元后的结果\n",k+1);

for(i=0;i<N;i++)

{

for(j=0;j<N;j++)printf("%f",a[i][j]);

printf("%f\n",b[i]);

}

printf("\n");

}

y[N-1]=b[N-1]/a[N-1][N-1];/*回代过程*/

for(k=N-2;k>=0;k--)

{

sum=0;

for(j=k+1;j<N;j++)sum=sum+a[k][j]*y[j];

y[k]=(b[k]-sum)/a[k][k];

}

for(i=0;i<N;i++)printf("z[%d]=%d",i,z[i]);

printf("\n");

for(i=0;i<N;i++)x[z[i]]=y[i];

for(i=0;i<N;i++)printf("y[%d]=%f",i,y[i]);printf("\n");

for(i=0;i<N;i++)printf("x[%d]=%f",i,x[i]);printf("\n");

}

#include<stdio.h>

#include<math.h>

#defineN20

intmain()

{intn,i,j,k;

intmi,tmp,mx;

floata[N][N],b[N],x[N];

printf("\nInputn:

");

scanf("%d",&n);

if(n>N)

{printf("Theinputnshouldin(0,N)!

\n");

getch();

return1;

}

if(n<=0)

{printf("Theinputnshouldin(0,N)!

\n");

getch();

return1;

}

printf("Nowinputa(i,j),i,j=0...%d:

\n",n-1);

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

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

printf("Nowinputb(i),i,j=0...%d:

\n",n-1);

for(i=0;i<n;i++)

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

for(i=0;i<n-2;i++)

{for(j=i+1,mi=i,mx=fabs(a[i][j]);j<n-1;j++)

if(fabs(a[j][i])>mx)

{mi=j;

mx=fabs(a[j][i]);

}

if(i<mi)

{tmp=b[i];b[i]=b[mi];b[mi]=tmp;

for(j=i;j<n;j++)

{tmp=a[i][j];

a[i][j]=a[mi][j];

a[mi][j]=tmp;

}

}

for(j=i+1;j<n;j++)

{tmp=-a[j][i]/a[i][i];

b[j]+=b[i]*tmp;

for(k=i;k<n;k++)

a[j][k]+=a[i][k]*tmp;

}

}

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

for(i=n-2;i>=0;i--)

{x[i]=b[i];

for(j=i+1;j<n;j++)

x[i]-

=a[i][j]*x[j];

x[i]/=a[i][i];

}

for(i=0;i<n;i++)

printf("Answer:

\nx[%d]=%f\n",i,x[i]);

getch();

return0;

}

 

#include<math.h>

#include<stdio.h>

#defineNUMBER20

#defineEsc0x1b

#defineEnter0x0d

floatA[NUMBER][NUMBER+1],ark;

intflag,n;

exchange(intr,intk);

floatmax(intk);

message();

main()

{

floatx[NUMBER];

intr,k,i,j;

charcelect;

clrscr();

printf("\n\nUseGauss.");

printf("\n\n1.JiepleasepressEnter.");

printf("\n\n2.ExitpressEsc.");

celect=getch();

if(celect==Esc)

exit(0);

printf("\n\ninputn=");

scanf("%d",&n);

printf("\n\nInputmatrixAandB:

");

for(i=1;i<=n;i++)

{

printf("\n\nInputa%d1--a%d%dandb%d:

",i,i,n,i);

for(j=1;j<=n+1;j++)scanf("%f",&A[i][j]);

}

for(k=1;k<=n-1;k++)

{

ark=max(k);

if(ark==0)

{

printf("\n\nIt'swrong!

");message();

}

elseif(flag!

=k)

exchange(flag,k);

for(i=k+1;i<=n;i++)

for(j=k+1;j<=n+1;j++)

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

}

x[n]=A[n][n+1]/A[n][n];

for(k=n-1;k>=1;k--)

{

floatme=0;

for(j=k+1;j<=n;j++)

{

me=me+A[k][j]*x[j];

}

x[k]=(A[k][n+1]-me)/A[k][k];

}

for(i=1;i<=n;i++)

{

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

}

message();

}

exchange(intr,intk)

{

inti;

for(i=1;i<=n+1;i++)

A[0][i]=A[r][i];

for(i=1;i<=n+1;i++)

A[r][i]=A[k][i];

for(i=1;i<=n+1;i++)

A[k][i]=A[0][i];

}

floatmax(intk)

{

inti;

floattemp=0;

for(i=k;i<=n;i++)

if(fabs(A[i][k])>temp)

{

temp=fabs(A[i][k]);

flag=i;

}

returntemp;

}

message()

{

printf("\n\nGoonEnter,ExitpressEsc!

");

switch(getch())

{

caseEnter:

main();

caseEsc:

exit(0);

default:

{printf("\n\nInputerror!

");message();}

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1