crout分解法

2019-03-15 19:38

Crout 方法解线性方程组的程序设计

制作人:李超(小),李超(大),黄黎越,李海燕,黄芳

任务分工:李海燕 ,黄黎越,求出分解矩阵L与U并输出

李超(小),李超(大),x与y的求解输出,算法的设计编写

黄芳:程序中系数矩阵a与方程组y的输入与输出 共同完成流程图和注释语句的编写

Crout 方法解线性方程组的算法

给定线性方程组AX = b ,其中系数矩阵A = (aij) n×n 非奇异,x=(x1 ,x2 ,…, x n)T ,b =( b1,b2,…bn)T , 用 Crout 方法解AX=b的算法如下:

(1) 对A 作LU 分解

由A = LU及矩阵的乘法原理可得: Lij = aij -

?LikUki , j = 1, 2 , …, i, i=1,2,…n;

k?1j?1Uij = ( aij -

?LikUki) / Lii , j = i + 1, i + 2 , …, n,i=1,2,…n;

k?1i?1(2)解两个三角型方程组

由A = LU 及AX = b 可得L (UX) = b ,令 Y = ( y 1 , y 2 , …, y n) T = UX ,则L Y = b ,于是求解AX = b 就被化为求解下三角型方程组L Y = b 及单位上三角型方程组UX = Y . a) 先解下三角型方程LY=b由 l11y1=b1, l21y1+l22y2=b2l11, ……

ln1y1+ln2y2+…+lnnyn=bn ∴yi=b1/l11, i=1

yi=( bi-?LikYk)/lii, i=2,3,…,n

k?1i?1b)再解单位上三角型方程组UX=Y 由UX=Y得 x1+u12x2+…+u1nxn=y1 x2+…+u2nxn=y2 ……… xn-1+un-1nxn=yn-1 xn=yn

利用回代解法可得方程组AX=b的解为 xi=yn,i=n

xi=yi-?UikXk,i=n-1,…,2,1

k?i?1n

(3)程序为:

#include \

#include \头文件 #define N 20//自定义N=20 int main()//主函数 {

int i,j,k; int size;

float a[N][N],l[N][N],u[N][N]; float b[N],x[N],y[N];//定义变量

printf(\分解法解方程组\\n\ printf(\请输入方阵A的n:\ scanf(\ printf(\

printf(\请输入方程组的系数:\\n\ for(i=0;i

scanf(\输入方程组系数矩阵a[][] } }

printf(\请输入方程组的y:\\n\for(i=0;i

printf(\方程组y为:\\n\for(i=0;i

for(i=0;i

for(i=0;i

for(j=0;j

l[0][0]=a[0][0]; for(i=1;i

for(i=1;i

for(k=0;k

printf(\ for(j=i+1;j

for(j=1;j

printf(\

printf(\输出矩阵L[i][j]\\n\ for(i=0;i

for(j=0;j

printf(\ printf(\ \输出下三角矩阵l[][] }

printf(\ }

printf(\输出矩阵U[i][j]\\n\ for(i=0;i

for(j=0;j

printf(\ printf(\ \输出单位上三角矩阵u[][] }

printf(\ }

y[0]=b[0]/l[0][0];//给y[0]初始值

for(i=1;i

y[i]=y[i]/l[i][i]; }

printf(\

printf(\值:\\n\ for(i=0;i

printf(\的值:\\n\

x[size-1]=y[size-1];//给x[size-1]赋值 for(i=size-2;i>=0;i--) { x[i]=y[i]; for(k=i+1;k

for(i=0;i

(4)流程图


crout分解法.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:平阳优秀老师发展中心上半工作计划 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: