高斯列主消元法法和LU分解法.doc_第1页
高斯列主消元法法和LU分解法.doc_第2页
高斯列主消元法法和LU分解法.doc_第3页
高斯列主消元法法和LU分解法.doc_第4页
高斯列主消元法法和LU分解法.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高斯列主消元法:#include#include#define N 10int main() int i=0,j=0,r=0,n=0,k=1; float aNN,xN,max=-1,sum1=0,sum2=0;/输入矩阵维数 printf(Please enter n 0n11:n); scanf(%d,&n);/输入矩阵元素,最后一列为b for(i=1;i=n;i+) for(j=1;j=n+1;j+) printf(Please enter a%d%d:n,i,j); scanf(%f,&aij); do for(i=k;imax) max=aik; r=i; if(ark=0) printf(Cannot solve!n); return 0; /换行 for(j=1;j=n+1;j+) sum1=akj; akj=arj; arj=sum1; /将矩阵化为上三角矩阵 for(i=k+1;i=n;i+) for(j=k+1;j=n+1;j+) aij=aij-(aik)*(akj)/(akk); k=k+1; max=-1; while(k=1;k-) for(j=k+1;j=n;j+) sum2=sum2+(akj)*(xj); xk=(akn+1-sum2)/(akk); sum2=0; /输出结果 for(i=1;i=n;i+) printf(x%d=%fn,i,xi); while(1); return 0;LU分解法:#include #include #define N 10 /矩阵大小范围 /* * 使用已经求出的x,向前计算x(供getx()调用) * float a 矩阵U * float x 方程组解 * int i 解的序号(数组X元素序号) * int n 矩阵大小 * return 公式中需要的和 */ float getmx(float aNN, float xN, int i, int n) float mx = 0; int r; for(r=i+1; rn; r+) mx += air * xr; return mx; /* * 使用已经求出的y,向前计算y(供gety()调用) * float a 矩阵L * float y 数组Y * int i 数组Y元素序号 * int n 矩阵大小 * return 公式中需要的和 */ float getmy(float aNN, float yN, int i, int n) float my = 0; int r; for(r=0; rN) printf(矩阵过大!n); continue; flag=0; printf(请输入系数矩阵值:n); for(i=0; in; i+) for(j=0; jn; j+) printf(a%d%d: , i, j); scanf(%f, &aij); printf(请输入右端项数组:n); for(i=0; in; i+) printf(b%d: , i); scanf(%f, &bi); /*显示原始矩阵*/ printf(n原始矩阵:n); for(i=0; in; i+) for(j=0; jn; j+) printf(%0.3f ,aij); printf(n); printf(nn); /*初始化矩阵l*/ for(i=0; in; i+) for(j=0; jn; j+) if(i=j) lij = 1; /*开始LU分解*/ /*第一步:对矩阵U的首行进行计算*/ for(i=0; in; i+) u0i = (float)(a0i/l00); /*第二步:逐步进行LU分解*/ for(i=0; in-1; i+) /*对“L列”进行计算*/ for(j=i+1; jn; j+) for(k=0,sum=0; kn; k+) if(k != i) sum += ljk*uki; lji = (float)(aji-sum)/uii); /*对“U行”进行计算*/ for(j=i+1; jn; j+) for(k=0,sum=0; kn; k+) if(k != i+1) sum += li+1k*ukj; ui+1j = (float)(ai+1j-sum); /*输出矩阵l*/ printf(矩阵L:n); for(i=0; in; i+) for(j=0; jn; j+) printf(%0.3f , lij); printf(n); /*输出矩阵u*/ printf(n矩阵U:n); for(i=0; in; i+) for(j=0; jn; j+) printf(%0.3f , uij); printf(n); /*回代方式计算数组Y*/ for(i=0; in; i+) yi = gety(l,b,y,i,n); /*显示数组Y*/ printf(nn数组Y:n); for(i=0; i=0; i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论