标题:高斯消元法解线性方程组 各位请进 一起研究下哈
只看楼主
潸叁
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-12-2
结帖率:100%
已结贴  问题点数:20 回复次数:3 
高斯消元法解线性方程组 各位请进 一起研究下哈
RT 关于用高斯消元法解线性方程组
这个方法有几个环节  其中一个是要求:通过调换各行的顺序来将矩阵对角线上的元素弄为非零
于是 我就编了一个小程序
但是 发现达不到效果……
郁闷了两天 现在 贴出来
请各位仁兄侠姐帮忙研究下哈 共同进步!不胜感激!

PS:红色部分是我为了看效果放上去的程序;蓝色部分是循环的主体。

#include<math.h>
void main()
{
int n,i,j,k,g,h,m,c;float d,e;
scanf("%d",&n);
printf("n=%d",n);
float A[n][n]; float B[n][1];float C[1][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)scanf("%f",&A[i][j]);
};
for(k=0;k<n;k++)scanf("%f",&B[k][0]);

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)printf("%f  ",A[i][j]);
printf("\n");
};
for(k=0;k<n;k++)printf("%f\n",B[k][0]);


h=n-1;
for(g=0;g<h;g++)
{
while(A[g][g]=0)
{
for(j=0;j<n;j++)C[0][j]=A[g][j];
for(m=g+1;m<n;m++)
{
c=m;
if(A[m][g]!=0)break;
}
for(j=0;j<n;j++)A[g][j]=A[c][j];
for(j=0;j<n;j++)A[c][j]=C[0][j];
}
}

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)printf("%f  ",A[i][j]);
printf("\n");
};
}

搜索更多相关主题的帖子: 高斯 线性方程 研究 
2010-12-02 21:12
以中
Rank: 3Rank: 3
来 自:长沙
等 级:论坛游侠
帖 子:108
专家分:129
注 册:2010-4-13
得分:20 
你真有才,小弟佩服。
#include<math.h>
#include<stdio.h>
void main()
{
    int n,i,j,k,g,h,m,c;
    int d,e,A[100][100],B[100][1],C[1][100];
    scanf_s("%d",&n);
    printf("n=%d\n",n);
    for(i=0;i<n;i++)
      for(j=0;j<n;j++)
         scanf_s("%d",&A[i][j]);
    for(k=0;k<n;k++)
        scanf_s("%d",&B[k][0]);
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            {
                printf("%d  ",A[i][j]);
               
            }
            printf("\n");
    }
    for(k=0;k<n;k++)
        printf("%d\n",B[k][0]);
    h=n;
    for(g=0;g<h;g++)
    {
        while(A[g][g]=0)
        {
            for(j=0;j<n;j++)
                C[0][j]=A[g][j];
                for(m=g+1;m<n;m++)
                {
                    c=m;
                    if(A[m][g]!=0)
                        break;
                }
            for(j=0;j<n;j++)
                A[g][j]=A[c][j];
            for(j=0;j<n;j++)
                A[c][j]=C[0][j];
        }
    }

    for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
                {
                    printf("%d  ",A[i][j]);
                  
                }
                printf("\n");
        }
}
你看我的修改能满足你的要求吗?

道之所存,师之所存。
2010-12-02 22:44
潸叁
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-12-2
得分:0 
回复 2楼 以中
楼上的 感谢你的回复!
不过 我现在发现了我原来的程序的问题 在我的程序中while这里 括号里面 只要将=改成==就解决问题了哈

C新手,加油!
2010-12-03 00:20
潸叁
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-12-2
得分:0 
回复 2楼 以中
感谢你啦  所以给了20分
其实不知道20分是多是少。
我的程序。。。嘿嘿 窃以为不错哈 花痴一下

C新手,加油!
2010-12-03 00:22



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




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

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