求多元一次方程

多元一次方程组 C 语言程序分享一下, 大家找得太苦了 2009-4-25 22:56 提问者: 1613169 | 浏览次数:1172次

//作品:多元一次方程组的计算

//作者:与你看日出

//日期:2009年4月25日 星期六

//说明:输出值只能是小数(最多六位),如x=1.876546

//Han: 初始设的最多未知数的个数,运行程序后只能比它的个数小

//hang:计算中途中自己改变的未知数的个数

//JUZHEN:初始的示例矩阵

#include

#include

#define Han 200//(可自设)多元一次方程组有n 行n+1列(多的一列是等号右边的值),给出行数就能确定矩阵,

#define JUZHEN {1,1,1,1,5},{1,2,-1,4,-2},{2,-3,-1,-5,-2},{3,1,2,11,0}//示例一个

main()

{

int i,j,k,m,n,t,cf,hang=4;

float temp;

float AA[Han][Han+1]={JUZHEN};//定义所要计算的数组

do//判断是否重试

{

for(i=0;i

{

printf("\n");

for(j=0;j

{

printf("%g\t",AA[i][j]);

}

}

printf("\n");

printf("是否自己输入?是:1;否:0");

scanf("%d",&t);

if(t==1)//判断是否自己输入数组

{

printf("输入未知数的个数");

scanf("%d",&hang);

for(i=0;i

{

for(j=0;j

{

printf("第%d行第%d列的数为:",i+1,j+1);

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

}

}

for(k=0;k

{

while(AA[k][k]==0)//如果第K 行K 列的那个数为0, 则加和重组一行。

{

for(m=k+1;m

for(n=k;n

{

AA[k][n]+=AA[m][n];

}

}

for(i=k;i

{

temp=AA[i][k];

for(j=k;j

{

AA[i][j]/=temp;

}

}

for(i=k+1;i

{

for(j=0;j

{

AA[i][j]-=AA[k][j];

}

}

}

for(k=hang-2;k>=0;k--)//这个大循环将数组的右上角转化为0

{

for(i=k+1;i

{

AA[k][hang+1-1]-=AA[k][i]*AA[i][hang+1-1];

AA[k][i]=0;

}

}

for(i=0;i

{

printf("\n");

for(j=0;j

{

printf("%g\t",AA[i][j]);

}

printf("\n未知数的值为:\n");

for(i=0;i

{

printf("x(%d)=\t%g\n",i+1,AA[i][hang+1-1]);

}

printf("\n");

printf("是否再试一次?是:1;否:0");

scanf("%d",&cf);

}

while(cf==1);//判断是否重试

}我来帮他解答 图片符号编号排版地图 您还可以输入9999 个字

您提交的参考资料超过50字,请删除

参考资料:提交回答

求逆矩阵

#include

#include

#include

#include

#define N 5

double A[N][N]={{1,1,1,1,1},{37.7885,6.7017 ,28.2345,24.45724,5.6560},{2.4688,

2.4201,2.0996, 2.1784,0.9839

},{2.2415,10.5053,50.9927,58.8913,67.3320},{198.8138,202.8553,317.4026,404.0026,335.1368}};

void swap(double *a,double *b){double c; c= *a; *a= *b; *b= c;};

int DinV(double A[N][N],int n)

{

int i,j,k;

double d;

int JS[N],IS[N];

for (k=0;k

{

d=0;

for (i=k;i

for (j=k;j

if (fabs(A[i][j])>d){

d=fabs(A[i][j]);

IS[k]=i;

JS[k]=j;

}; // end if

}; // end j

if (d+1.0==1.0) return 0;

if (IS[k]!=k) for (j=0;j

if (JS[k]!=k) for (i=0;i

A[k][k]=1/A[k][k];

for (j=0;j

for (i=0;i

}; // for i

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

{

for (j=0;j

for (i=0;i

}; // for k

for (i=0;i

{

for (j=0;j

puts("");

}; // for i

return 1;

}

void main()

{

DinV(A,5);

getch();

}


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn