标题:高斯消元求方程解 找错!!!
只看楼主
lxh3319
Rank: 2
等 级:论坛游民
帖 子:29
专家分:11
注 册:2011-6-20
结帖率:100%
 问题点数:0 回复次数:1 
高斯消元求方程解 找错!!!
#include<stdio.h>
#include <stdlib.h>
void main()
{
    void gaosi(double a[20][20],double result[20],int n);
double a[20][20],result[20];
int n,i,j;
FILE*fp;
if((fp=fopen("input.txt","r"))==NULL)
{
    printf("can not open the file");
    exit(0);
}
fscanf(fp,"%d",&n);
printf("未知数个数为:%d\n",n);
while(!feof(fp))
{
    for(i=0;i<n;i++)
        for(j=0;j<n+1;j++)
            fscanf(fp,"%3lf",&a[i][j]);
}
if(i<n)
{
    printf("无穷解");
    exit(0);
}
printf("矩阵为:\n");
for(i=0;i<n;i++)
{
    for(j=0;j<n+1;j++)
        printf("%5.1lf",a[i][j]);
    printf("\n");
}
fclose(fp);

    gaosi(a,result,n);
}
void gaosi(double a[20][20],double result[20],int n)
{
int i,j,max,k,r,flag=0;
double t,temp;
for(j=0;j<n+1;j++)
{
    for(i=0;i<n;i++)
{
    max=0;
    if(a[max][j]<a[i][j])max=i;
    }
    for(k=0;k<n+1;k++)
    {
        t=a[max][k];
        a[max][k]=a[j][k];
        a[j][k]=t;
        temp=a[j][j];

    }
for(i=j+1;i<n;i++)
for(k=0;k<n+1;k++)
{
    a[j][k]/=temp;
a[i][k]-=a[i][j]*a[j][k];

}
}
for(j=0;j<n+1;j++)
{
    for(i=0;i<n;i++)
{
    printf("%4.lf\n",a[i][j]);

}
}
for(i=0;i<n;i++)
{
    k=0;
    for(j=0;j<n+1;j++)
{
    if(a[i][j]==0)k++;
    }
if(k==n+1)flag=1;
}

if(a[n-1][n]!=0&&a[n-1][n-1]==0)printf("无解\n");
else if(flag)printf("无穷解\n");
else
{
for(i=n-1;i>=0;i--)
{
    result[i]=a[i][n];
for(j=n-1;j>i;j--)
result[i]-=a[i][j]*result[j];
}
for(i=0;i<n;i++)
printf("%5.2lf\n",result[i]);

}



}
搜索更多相关主题的帖子: 矩阵 include double 未知数 高斯 
2011-06-24 22:42
lxh3319
Rank: 2
等 级:论坛游民
帖 子:29
专家分:11
注 册:2011-6-20
得分:0 
文件得自己创建 输入
2011-06-24 23:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-343917-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.142553 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved