设为首页 加入收藏

TOP

C语言求解线性方程组(四)
2018-03-02 06:57:27 】 浏览:752
Tags:语言 求解 线性 方程
p;   mc1* psnew;


    psnew=(mc1 *) malloc(sizeof(mc1));
    psnew->col=col;


    if(head->next==NULL)
    {
        psnew->next=NULL;
        head->next=psnew;
        *tail=psnew;
    }
    else
    {
        psnew->next=head->next;
        head->next=psnew;
    }
}


void convert(float a[][N], int row, mc1 *head)    //函数,用于将阶梯型矩阵转化为简化行阶梯形矩阵
{
    mc1 *psnew, *pq;
    int i, j, k, m;


    psnew=head->next;
    for (i=row-1; i>=0; i--)
    {
        if (a[i][psnew->col-1]!=1)    //各非零行主元化为1
        {
          for (j=psnew->col; j<N; j++)
              a[i][j]=a[i][j]/a[i][psnew->col-1];
        }


        psnew=psnew->next;
    }


    psnew=head->next;          //向上消元把除第一个主元外其余主元所在列中在主元上方的部分变为零
    for (i=row-1; i>=1; i--)
    {
        m=N-psnew->col-(row-i);  //获取未知量标号1,2,--,N-1中位于i+1非零行主元列标号右边的自由未知量标号个数
        for (j=i-1; j>=0; j--)
        {
            pq=head->next;    //pq指向存放最后一个非零行主元列标号的节点
            for (k=N; k>psnew->col; k--)
            {
                if (k!=pq->col)
                {
                  a[j][k-1]=-(a[i][k-1]*a[j][psnew->col-1])+a[j][k-1];  //从右向左作初等行变换直至i+1行主元所在列右边的列位置,期间跳过i+2----row行主元所在的列
                  m--;
                  if (m==0)
                      break;
                }
                else
                {
                    if (pq->next!=psnew)
                        pq=pq->next;
                }
            }
        }
        psnew=psnew->next;  //递进至上一行主元,为新一轮向上消元作准备
    }
}


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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目