欢迎来到天天文库
浏览记录
ID:38697361
大小:406.50 KB
页数:17页
时间:2019-06-17
《实验一 直接法解线性方程组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一直接法解线性方程组//1-1Gauss列主元消去法【源代码】:#include#include#include#defineeps1e-9double*A,*X;intN;intFindMax(intk);voidExchangeRow(intk,intr);voidbreakup();voidback();intmain(){inti,j;printf("请输入增广矩阵(A,B)的行数:t");scanf("%d",&N);A=(double*)callo
2、c(N*(N+1),sizeof(double));X=(double*)calloc(N,sizeof(double));if(N>256
3、
4、N<=0){printf("输入的数字不再范围之内!!!");printf("");return0;}else{//A=(double*)calloc(N*(N+1),sizeof(double));printf("请输入待求解方程组的增广矩阵(%d行%d列):",N,N+1);for(i=0;i5、",&A[j+i*(N+1)]);printf("增广矩阵(A,B)如下:");for(i=0;i6、最大的项,并返回该项的标号intFindMax(intk){inti,r;doublemax=0.0;for(i=k;imax){max=fabs(A[i*(N+1)+k]);r=i;//r保存最大项的行标号}}returnr;}//换行voidExchangeRow(intk,intr){intj;doubletemp=0.0;for(j=k;j7、*(N+1)+j]=temp;}}//上三角变换,A为增广矩阵的指针,N为矩阵的行数。voidbreakup(){intp,j,i,r;doublem=0.0,det;for(i=0;i8、9、fabs(A[i*(N+1)+i])<=eps){printf("矩阵是一个奇异矩阵,没有唯一解!");break;}//消去P元素以下的p列内容。10、for(j=i+1;j11、printf("det(A)=%lf",det);}//下面是回代函数voidback(){doubletotal;intk,i;X[N-1]=A[(N-1)*(N+1)+N]/A[(N-1)*(N+1)+N-1];//最末尾的xfor(k=N-2;k>=0;k--){total=0.0;for(i=k+1;i12、ude#include#include#defineN1000//#defineeps1e-9intn;doubleA[N][N]={0},f[N],X[N];doublea[N],b[N],c[N],y[N];voiddivide()//Crout分解{inti;a[0]=A
5、",&A[j+i*(N+1)]);printf("增广矩阵(A,B)如下:");for(i=0;i6、最大的项,并返回该项的标号intFindMax(intk){inti,r;doublemax=0.0;for(i=k;imax){max=fabs(A[i*(N+1)+k]);r=i;//r保存最大项的行标号}}returnr;}//换行voidExchangeRow(intk,intr){intj;doubletemp=0.0;for(j=k;j7、*(N+1)+j]=temp;}}//上三角变换,A为增广矩阵的指针,N为矩阵的行数。voidbreakup(){intp,j,i,r;doublem=0.0,det;for(i=0;i8、9、fabs(A[i*(N+1)+i])<=eps){printf("矩阵是一个奇异矩阵,没有唯一解!");break;}//消去P元素以下的p列内容。10、for(j=i+1;j11、printf("det(A)=%lf",det);}//下面是回代函数voidback(){doubletotal;intk,i;X[N-1]=A[(N-1)*(N+1)+N]/A[(N-1)*(N+1)+N-1];//最末尾的xfor(k=N-2;k>=0;k--){total=0.0;for(i=k+1;i12、ude#include#include#defineN1000//#defineeps1e-9intn;doubleA[N][N]={0},f[N],X[N];doublea[N],b[N],c[N],y[N];voiddivide()//Crout分解{inti;a[0]=A
6、最大的项,并返回该项的标号intFindMax(intk){inti,r;doublemax=0.0;for(i=k;imax){max=fabs(A[i*(N+1)+k]);r=i;//r保存最大项的行标号}}returnr;}//换行voidExchangeRow(intk,intr){intj;doubletemp=0.0;for(j=k;j7、*(N+1)+j]=temp;}}//上三角变换,A为增广矩阵的指针,N为矩阵的行数。voidbreakup(){intp,j,i,r;doublem=0.0,det;for(i=0;i8、9、fabs(A[i*(N+1)+i])<=eps){printf("矩阵是一个奇异矩阵,没有唯一解!");break;}//消去P元素以下的p列内容。10、for(j=i+1;j11、printf("det(A)=%lf",det);}//下面是回代函数voidback(){doubletotal;intk,i;X[N-1]=A[(N-1)*(N+1)+N]/A[(N-1)*(N+1)+N-1];//最末尾的xfor(k=N-2;k>=0;k--){total=0.0;for(i=k+1;i12、ude#include#include#defineN1000//#defineeps1e-9intn;doubleA[N][N]={0},f[N],X[N];doublea[N],b[N],c[N],y[N];voiddivide()//Crout分解{inti;a[0]=A
7、*(N+1)+j]=temp;}}//上三角变换,A为增广矩阵的指针,N为矩阵的行数。voidbreakup(){intp,j,i,r;doublem=0.0,det;for(i=0;i8、9、fabs(A[i*(N+1)+i])<=eps){printf("矩阵是一个奇异矩阵,没有唯一解!");break;}//消去P元素以下的p列内容。10、for(j=i+1;j11、printf("det(A)=%lf",det);}//下面是回代函数voidback(){doubletotal;intk,i;X[N-1]=A[(N-1)*(N+1)+N]/A[(N-1)*(N+1)+N-1];//最末尾的xfor(k=N-2;k>=0;k--){total=0.0;for(i=k+1;i12、ude#include#include#defineN1000//#defineeps1e-9intn;doubleA[N][N]={0},f[N],X[N];doublea[N],b[N],c[N],y[N];voiddivide()//Crout分解{inti;a[0]=A
8、
9、fabs(A[i*(N+1)+i])<=eps){printf("矩阵是一个奇异矩阵,没有唯一解!");break;}//消去P元素以下的p列内容。
10、for(j=i+1;j11、printf("det(A)=%lf",det);}//下面是回代函数voidback(){doubletotal;intk,i;X[N-1]=A[(N-1)*(N+1)+N]/A[(N-1)*(N+1)+N-1];//最末尾的xfor(k=N-2;k>=0;k--){total=0.0;for(i=k+1;i12、ude#include#include#defineN1000//#defineeps1e-9intn;doubleA[N][N]={0},f[N],X[N];doublea[N],b[N],c[N],y[N];voiddivide()//Crout分解{inti;a[0]=A
11、printf("det(A)=%lf",det);}//下面是回代函数voidback(){doubletotal;intk,i;X[N-1]=A[(N-1)*(N+1)+N]/A[(N-1)*(N+1)+N-1];//最末尾的xfor(k=N-2;k>=0;k--){total=0.0;for(i=k+1;i12、ude#include#include#defineN1000//#defineeps1e-9intn;doubleA[N][N]={0},f[N],X[N];doublea[N],b[N],c[N],y[N];voiddivide()//Crout分解{inti;a[0]=A
12、ude#include#include#defineN1000//#defineeps1e-9intn;doubleA[N][N]={0},f[N],X[N];doublea[N],b[N],c[N],y[N];voiddivide()//Crout分解{inti;a[0]=A
此文档下载收益归作者所有