设为首页 加入收藏

TOP

C语言求解线性方程组(二)
2018-03-02 06:57:27 】 浏览:757
Tags:语言 求解 线性 方程
    //最后一个非零行主元列标放入maincol类型链表
                break;    //结束循环
            }


            for (i=s; i<M; i++)
                a[i][col-1]=-(a[i][col-1]/a[s-1][col-1]);


            for (i=col; i<N; i++)                        //消元
            {
                for (j=s; j<M; j++)
                    a[j][i]=a[j][col-1]*a[s-1][i]+a[j][i];
            }


            add(head, col, &tail);      //将消元后得到的主元列标col放入maincol类型链表
            s++;
            t=col+1;          //更新s,t,使s,t成为消元后得到的新的子矩阵的左上角元素行列标,为test函数操作新的子矩阵作准备
            continue;      //开始新一轮循环
        }
    }
    if (col==0)    //从循环控制条件退出循环
        row=s-1;  //此时增广矩阵已成为阶梯形矩阵,非零行函数就是s-1


    if (row==0)          //利用线性方程组解的判别准则判断是否有解,有多少个解
    {
        printf("线性方程组有无穷多组解\n");  //增广矩阵为零矩阵,无穷多组解
        printf("一般解:\n");
        for (i=1; i<N; i++)
            printf("x%d=t%d\n", i, i);  //输出解
    }
    else
    {
        psnew=head->next;
        if (psnew->col==N)      //阶梯形矩阵最后一主元在最后一列,无解
            printf("线性方程组无解\n");               
        else
        {
            convert(a, row, head);  //用convert函数将阶梯形矩阵进一步化为简化行阶梯形矩阵
            if (row==N-1)    //非零行行数等于未知量个数,有唯一解
            {
                printf("线性方程组有唯一解:\n");
                for (i=1; i<=row; i++)                  //输出唯一解
                    printf("x%d=%f\n", i, a[i-1][N-1]);
            }
            else    //非零行行数小于未知量个数,有无穷多组解
            {
                int *m;
                m=(int *) malloc((N-1-row)*sizeof(int));


                i=N-1-row;
                for (j=N-1; j>=1; j--)
                {
                    if (j!=psnew->col)
                    {
          &

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java泛型函数的运行时类型检查的.. 下一篇C语言编程构造拉丁方阵和正交拉丁..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目