标题:求解任意n元一次方程组
取消只看楼主
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
结帖率:93.33%
 问题点数:0 回复次数:0 
求解任意n元一次方程组
现在整理了一段求解任意n元一次方程组的代码如下,献给大家:
程序代码:
# include <stdio.h>
int main(void) 
{  
    int i, j, m, n, r, k=0, t; //i,j,m,k,t 作为循环计数变量;n表示有n个未知数,即n元;r表示有r个方程组成方程组。 
    printf("请输入未知数个数n和方程的个数:\n"); 
    scanf("%d %d", &n, &r);  //n表示有n个未知数,即n元;r表示有r个方程组成方程组。  
    float a[11][20];        //用二维数组存储方程组参数。11和100课改动。这里的程序限 10 元 20 个方程的方程组。  
    printf("请输入方程组参数\n");  
    for(j=0; j<n; j++)   
        for(i=0; i<r+1; i++)   
            scanf("%f", &a[j][i]); 
    if(r<n)   
        printf("方程有无穷解\n"); 
    if(r==n) 
    {   
        printf("方程有唯一解\n"); 
        for(t=0; t<n-1; t++)      //循环次数:当t=0时,仅将a[1][0],a[2][0],a[2][1]的值转换为0;t=1时,才将其转换成最简型阶梯矩阵。   
            for(m=0; m<n; m++)   //m表示第m列     
                for(j=0; j<n; j++)       //j表示第j行      
                    if(j!=m)     
                    {  
                        float b= a[j][m]/a[m][m]; 
                        for(i=0; i<n+1; i++) //因为一行的每个元素均要进行运算等式两边才会相等。        
                            a[j][i] -= a[m][i]*b;                      
                    } 
        for(j=0; j<n; j++)      //为了将其转换成单位矩阵,见《线性代数》
            {    
                a[j][n] /=a[j][j];    
                a[j][j] /=a[j][j]; 
            }
    }
    for(j=0; j<r; j++)   
        printf("x[%d] = %f\n", j, a[j][n]);  //输出最终结果,即未知数x,y,z...的值。
    return 0;
}


搜索更多相关主题的帖子: 任意 方程组 表示 printf for 
2018-05-28 21:13



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




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

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