Gauss消去法解线性方程组(C语言版)

列主元高斯消去法的程序已经出来了,也传上来了,但我怕有些同学太懒,不想自己写,也怕有些同学直接复制粘贴,和别人的一样,被老师查出来了,对自己和他人都没什么好处。其实程序还是很简单的,在这个程序的基础上只要稍微修改一点就行了,慢的话30分钟也就够了。有些时候程序还是自己写的看着舒服!

注意:尽量不要在没有完全理解别人的算法情况下直接贴程序,否则自己什么也没学到。

//Gauss消去法解线性方程组
//参考教材《计算方法教程》第二版,西安交通大学出版社
#include<stdio.h>

int main(void)
{
 float A[7][7]={{3,-5,6,4,-2,-3,8},
     {1,1,-9,15,1,-9 ,2},
     {2,-1,7,5,-1,6,11},
     {-1,1,3,2,7,-1,-2},
     {4,3,1,-7,2,1,1},
     {2,9,-8,11,-1,-4,-1},
     {7,2,-1, 2,7,-1,9}};
 float b[7]={11,2,29,9,5,8,25};
 float x[7]={0};
 float Aik,S;
 int i,j,k;
 int size=7;

 printf("A[][]\n");
 for(i=0;i<size;i++)
 {
  for(j=0;j<size;j++)
   printf("%f ",A[i][j]);
  printf("\n");
 }
 printf("b[]\n");
 for(i=0;i<size;i++)
  printf("%f ",b[i]);
 printf("\n\n");
 //消去过程
 for(k=0;k<size-1;k++)
 {
  if(!A[k][k])
   return -1;
  for(i=k+1;i<size;i++)
  {
   Aik=A[i][k]/A[k][k];
   for(j=k;j<size;j++)
   {
    A[i][j]=A[i][j]-Aik*A[k][j];
   }
   b[i]=b[i]-Aik*b[k];
  }
 }
 //消去的结果
 printf("A[]\n");
 for(i=0;i<size;i++)
 {
  for(j=0;j<size;j++)
   printf("%f ",A[i][j]);
  printf("\n");
 }
 printf("b[]\n");
 for(i=0;i<size;i++)
  printf("%f ",b[i]);
 printf("\n\n");

 //回代过程
 x[size-1]=b[size-1]/A[size-1][size-1];
 for(k=size-2;k>=0;k--)
 {
  S=b[k];
  for(j=k+1;j<size;j++)
  {
   S=S-A[k][j]*x[j];
  }
  x[k]=S/A[k][k];
 }
 //solution
 printf("The solution x[]=\n");
 for(i=0;i<size;i++)
  printf("%f ",x[i]);
 return 0;
}

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值