C语言高斯消元法的使用详解

tianbi20

tianbi20

2016-02-19 09:07

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐C语言高斯消元法的使用详解,希望大家看完后也有个好心情,快快行动吧!

学过数学的人都知道,高斯消元法是解线性方程组是,算法很简单,但过程很复杂,这就是我在网上找不到免费的且正确的高斯消元法的原因了。所以我下决心自己编,结果I do it.
高斯消元法的用途很广,它是解决数学问题最重要的方法之一,在《计算方法》这本书的第一章就讲的是高斯消元法,很多问题最终归结为解线性方法组。
因为我是个编程初学者,所以这个程序在高手看来可能会觉得funny.不过我不介意,还请你们多多指教。
我这个程序是用C语言编的,其它语言没有学过,上大学非计算机专业的学生一般都只学C语言,所以这个程序很适合大学生们。
希望大学能多指出我程序的缺点,并给我多提意见,谢谢大家。
代码如下:

#include "Stdio.h"
#include "Conio.h"
/*L是矩阵的行减1,从程序上看是最外层循环的次数
 N 对应矩阵的行数,M对应矩阵的列数
 可以通过改变L、N、M来控制矩的阶数 */
#define L 3
#define N 4
#define M 5
void gauss(double a[N][M],double x[N])
{int i,j,l,n,m,k=0;
 double temp[N];
 /*第一个do-while是将增广矩阵消成上三角形式*/
 do{n=0;
 for(l=k;lL;l++)temp[n++]=a[l+1][k]/a[k][k];
 for(m=0,i=k;iN;i++,m++)
 for(j=k;jM;j++)a[i+1][j]-=temp[m]*a[k][j];
 k++;
 }while(kN) ;
 /*第二个do-while是将矩阵消成对角形式,并且重新给k赋值*/
 k=L-1;
 do{n=0;
 for(l=k;l=0;l--)temp[n++]=a[k-l][k+1]/a[k+1][k+1];
 for(m=0,i=k;i=0;i--,m++)
 for(j=k;jM;j++)a[k-i][j]-=temp[m]*a[k+1][j];
 k--;
 }while(k=0) ;
 /*下一个for是解方程组*/
 for(i=0;iN;i++)x[i]=a[i][N]/a[i][i];

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

}
void menu()
{printf("n _ _ _ _ _n");
 printf(" 1.operationn");
 printf(" 2.exit");
 printf("n _ _ _ _ _n");
}
main()
{int i,j,choose;
 double a[N][M]={0},answer[N];
 clrscr();
 while(1){
 leep:menu();
 scanf("%d",&choose);
 switch(choose){
 case 1:
 printf("!!The size of Maxrix is %d * %d,each line enter %d element:n ",N,M,M);
 for(i=0;iN;i++)
 {printf("Enter the Matrix's %d line:n",i);
 for(j=0;jN+1;j++)
 scanf("%lf",&a[i][j]);
 }
 printf("nthe corss matrix is:n_ _ _ _ _n");
 gauss(a,answer);
 for(i=0;iN;i++)
 {for(j=0;jM;j++)
 printf("%-2lf ",a[i][j]);
 putchar('n');
 }
 printf("_ _ _ _ _nthe solve is:n");
 for(i=0;iN;i++)printf("x%d=%lfn",i+1,answer[i]);
 case 2:
 exit(0);
 default:printf("input error:n");goto leep;
 }
 }
 getch();
}
/*试验:
 西安交通大学出版社出版的《计算方法》书上28页的例2.1:
 2 3 -4 -2
 _ -3 -4 -12 13 5
 A= 2 10 0 -3 10
 14 9 -13 7
 试验结果:x1=1,x2=2,x3=3,x4=4 */

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

C语言高斯消元法的使用详解

编程语言 网络编程
C语言高斯消元法的使用详解

c语言printf函数的使用详解

编程语言 网络编程
c语言printf函数的使用详解

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

c语言中 基于随机函数的使用详解

编程语言 网络编程
c语言中 基于随机函数的使用详解

基于C语言EOF与getchar()的使用详解

编程语言 网络编程
基于C语言EOF与getchar()的使用详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

c语言中位字段与结构联合的组合使用详解

编程语言 网络编程
c语言中位字段与结构联合的组合使用详解

C# 3.0语言详解之基本的语言增强

电脑网络
C# 3.0语言详解之基本的语言增强

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

WORD只打印奇页或偶页的方法

WORD只打印奇页或偶页的方法

浅析打开eclipse出现Incompatible JVM的解决方法

浅析打开eclipse出现Incompatible JVM的解决方法
下拉加载更多内容 ↓