当前位置: 代码迷 >> C语言 >> 大家中秋快乐 小弟想求一算法
  详细解决方案

大家中秋快乐 小弟想求一算法

热度:301   发布时间:2005-09-16 20:17:00.0
大家中秋快乐 小弟想求一算法
是关于求行列式的
比如
2   3   4
3   4   5
也就是2x+3y=4;3x+4y=5 求解 当然要算得没这么简单 比如求一个含10个未知数的行列式怎么算 只要有个大体的设计思路就行了
搜索更多相关的解决方案: 中秋  算法  快乐  

----------------解决方案--------------------------------------------------------
而且要求用gauss消去法
----------------解决方案--------------------------------------------------------
就是模拟你手动高斯消去法解方程组的过程就行了。
----------------解决方案--------------------------------------------------------
在《C++程序设计》清华大学出版社 第二版 上面有原程序
----------------解决方案--------------------------------------------------------

这是在Visual C++6.0环境下编写的,如果要在Turbo C中运行,可要自己多改几下,否则会不知道如何用哦! #include<stdio.h> #include<math.h>

#define N 100 #define TOTEL 1e-6

void main( ) { int i,j,k,n; double a[N][N],sum,t;

printf("请输入系数矩阵的阶数:"); scanf("%d",&n);

printf("请输入增广矩阵:\n"); for(i=0;i<n;i++) for(j=0;j<n+1;j++) scanf("%lf",&a[i][j]);

for(k=0;k<n-1;k++) {

for(i=k+1;i<n;i++) if(fabs(a[i][k])>fabs(a[k][k])) // 使得a[k][k]为a[i][k](k<=i<n)中绝对值最大的那个,为此也要调换行的顺序 for(j=0;j<n+1;j++) { t=a[k][j]; a[k][j]=a[i][j]; a[i][j]=t; }

if(fabs(a[k][k])<TOTEL) { printf("对不起,在消去过程中的第%d步因a[%d][%d]足够小而推出!\n",k+1,k,k); return; }

for(i=k+1;i<n;i++) { a[i][k]=a[i][k]/a[k][k]; // a[k][k]...a[k][j] for(j=k+1;j<n+1;j++) // a[i][k]...a[i][j] a[i][j]-=a[i][k]*a[k][j]; } }

if(fabs(a[n-1][n-1])<TOTEL) { printf("对不起,在消去过程中的第%d步因a[%d][%d]足够小而推出!\n",n,n-1,n-1); return; } // 最后一步的主对角线上之元亦不能足够小

a[n-1][n]/=a[n-1][n-1]; //x[n]; for(k=n-2;k>=0;k--) // a[k][k]*x[k]+a[k][k+1]*x[k+1]+...+a[k][n-1]*x[n-1]=a[k][n]通过递推而求 { sum=0; for(j=k+1;j<n;j++) sum+=a[k][j]*a[j][n]; a[k][n]=(a[k][n]-sum)/a[k][k]; // 用a[k][n]表示第k个未知数的值 }

printf("通过列主元Gauss消元法解得:\n"); for(k=0;k<n;k++) printf("x[%d]=%lf\n",k+1,a[k][n]);

}

编译运行如下: 请输入系数矩阵的阶数:5 请输入增广矩阵: 1 4 3 5 2 2 4 2 3 5 2 4 4 3 5 2 3 3 8 4 3 8 2 5 5 2 3 45 3 6 通过列主元Gauss消元法解得: x[1]=0.539130 x[2]=-0.191304 x[3]=-6.681159 x[4]=-0.257971 x[5]=11.779710 Press any key to continue


----------------解决方案--------------------------------------------------------
[下载]列主元Gauss消去法
列主元Gauss消去法

----------------解决方案--------------------------------------------------------
matlab
mathematica
好用啊
----------------解决方案--------------------------------------------------------
=.=  54 算法..... .....
----------------解决方案--------------------------------------------------------
  相关解决方案