Guass消元法和Guass列主元素消元法解线性方程组
来源:互联网 发布:unity3d ui 高科技 编辑:程序博客网 时间:2024/05/01 16:45
#include<stdio.h>
#include<math.h>
#include<conio.h>
#define N 3
void Guass(double a[][N+1],double x[])
{
double l[N];
int i,j,k;
l[0]=1.0;
for(i=0;i<N-1;i++)
{
if(fabs(a[i][i])<0.000001)
{
printf("不能求解!/n");
return;
}
for(j=i+1;j<N;j++)
l[j]=a[j][i]/a[i][i];
for(j=i+1;j<N;j++)
for(k=i+1;k<N+1;k++)
a[j][k]=a[j][k]-l[j]*a[i][k];
}
#include<math.h>
#include<conio.h>
#define N 3
void Guass(double a[][N+1],double x[])
{
double l[N];
int i,j,k;
l[0]=1.0;
for(i=0;i<N-1;i++)
{
if(fabs(a[i][i])<0.000001)
{
printf("不能求解!/n");
return;
}
for(j=i+1;j<N;j++)
l[j]=a[j][i]/a[i][i];
for(j=i+1;j<N;j++)
for(k=i+1;k<N+1;k++)
a[j][k]=a[j][k]-l[j]*a[i][k];
}
for(i=N-1;i>=0;i--)
{
x[i]=a[i][N];
for(j=i+1;j<N;j++)x[i]=x[i]-a[i][j]*x[j];
x[i]=x[i]/a[i][i];
}
}
void main()
{
int i,j;
double x[N];
double s[N][N+1]={{ 0.101, 2.304, 3.555, 1.183},
{-1.347, 3.712, 4.623, 2.137},
{-2.835, 1.072, 5.643, 3.035}
};
for(i=0;i<N;i++)
{
for(j=0;j<=N;j++)printf("%5.3f ",s[i][j]);
printf("/n");
}
Guass(s,x);
for(i=0;i<N;i++)printf("x[%d]=%5.6f/n",i+1,x[i]);
getch();
}
{
x[i]=a[i][N];
for(j=i+1;j<N;j++)x[i]=x[i]-a[i][j]*x[j];
x[i]=x[i]/a[i][i];
}
}
void main()
{
int i,j;
double x[N];
double s[N][N+1]={{ 0.101, 2.304, 3.555, 1.183},
{-1.347, 3.712, 4.623, 2.137},
{-2.835, 1.072, 5.643, 3.035}
};
for(i=0;i<N;i++)
{
for(j=0;j<=N;j++)printf("%5.3f ",s[i][j]);
printf("/n");
}
Guass(s,x);
for(i=0;i<N;i++)printf("x[%d]=%5.6f/n",i+1,x[i]);
getch();
}
//////////////////////////////////////////////////////////
#include<stdio.h>
#include<math.h>
#include<conio.h>
#define N 3
//Guass列主元素消元法
int Guassl(double **a,double *x,int n)
{
int i,j,k,numl,*h,t;
double *l,max;
l=new double[n];
h=new int[n];
for(i=0;i<n;i++) h[i]=i;//行标
for(i=1;i<n;i++)
{
max=fabs(a[h[i-1]][i-1]);
numl=i-1;
//列元的最大值
for(j=i;j<n;j++)
{
if(fabs(a[h[j]][i-1])>max)
{
numl=h[j];
max=fabs(a[h[j]][i-1]);
}
}
if(max<0.00000000001) return 0;
//交换行号
if(numl>i-1)
{
t=h[i];
h[i]=h[numl];
h[numl]=t;
}
for(j=i;j<n;j++) l[j]=a[h[j]][i-1]/a[h[i-1]][i-1];
for(j=i;j<n;j++)
for(k=i;k<n+1;k++) a[h[j]][k]=a[h[j]][k]-l[j]*a[h[i-1]][k];
}
for(i=n-1;i>=0;i--)#include<math.h>
#include<conio.h>
#define N 3
//Guass列主元素消元法
int Guassl(double **a,double *x,int n)
{
int i,j,k,numl,*h,t;
double *l,max;
l=new double[n];
h=new int[n];
for(i=0;i<n;i++) h[i]=i;//行标
for(i=1;i<n;i++)
{
max=fabs(a[h[i-1]][i-1]);
numl=i-1;
//列元的最大值
for(j=i;j<n;j++)
{
if(fabs(a[h[j]][i-1])>max)
{
numl=h[j];
max=fabs(a[h[j]][i-1]);
}
}
if(max<0.00000000001) return 0;
//交换行号
if(numl>i-1)
{
t=h[i];
h[i]=h[numl];
h[numl]=t;
}
for(j=i;j<n;j++) l[j]=a[h[j]][i-1]/a[h[i-1]][i-1];
for(j=i;j<n;j++)
for(k=i;k<n+1;k++) a[h[j]][k]=a[h[j]][k]-l[j]*a[h[i-1]][k];
}
{
x[h[i]]=a[h[i]][n];
for(j=i+1;j<n;j++) x[h[i]]=x[h[i]]-a[h[i]][j]*x[h[j]];
x[h[i]]=x[h[i]]/a[h[i]][i];
}
//还原x[i]的值
for(i=0;i<n;i++) l[i]=x[h[i]];
for(i=0;i<n;i++) x[i]=l[i];
//删除临时数组变量
delete []l;
delete []h;
return 1;
}
void main()
{
int i,j;
double x[N];
double s[N][N+1]={{2, 8, 2, 14},
{1, 6, -1,13},
{2, -1, 2, 5}
};
double **u;
u=new double *[N];
for(i=0;i<N;i++) u[i]=s[i];
for(i=0;i<N;i++)
{
for(j=0;j<=N;j++)printf("%5.3f ",s[i][j]);
printf("/n");
}
Guassl(u,x,N);
for(i=0;i<N;i++) printf("x[%d]=%5.6f/n",i+1,x[i]);
delete []u;
getch();
}
- Guass消元法和Guass列主元素消元法解线性方程组
- Guass消元法求解线性方程组
- guass method
- Guass模板
- Guass迭代法
- Guass-newton
- 列选主元Guass消元法求解方程组+c语言
- guass列主元消去法
- guass算法总结
- es guass 案例
- Show Guass Template
- 基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组
- Guass消去法解方程组
- poj 1830 开关问题(guass)
- Guass消元 poj 1830
- 数值作业:Guass全选主元消去法之C语言代码
- Jacobi and Guass-Seidel Iteration Update
- 高斯牛顿法 Guass-Newton
- Virtual PC 中安 装ms dos 6.22
- 重开博客
- 快速傅立叶变换程序与反变换程序
- 单反相机
- ERP面试题之解答[作者:Yuanhy]
- Guass消元法和Guass列主元素消元法解线性方程组
- 追赶法解三对角阵方程组
- 牛顿插值法
- 解决关于页面空间disable之后服务器端取值问题
- 最小二乘法程序
- 处理JQuery和My97DatePicker的冲突
- mount/umount 详解
- 在ubuntu 下升级内核就是这么简单。。。。
- Windows的远程注册表服务(RemoteRegistry)的两个隐藏的依赖关系