1 / 8
文档名称:

矩阵doolittle分解算法.doc

格式:doc   大小:35KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

矩阵doolittle分解算法.doc

上传人:q1188830 2019/11/15 文件大小:35 KB

下载得到文件列表

矩阵doolittle分解算法.doc

相关文档

文档介绍

文档介绍:解线性方程组的Doolittle分解目的意义:。。方法原理:n阶线性方程组的系数矩阵A非奇异且有分解式A=LR,其中L为单位下三角矩阵,R为上三角矩阵,即L=(lij),当i<j时,lij=0;R=(rij),当i>j时,rij=0,矩阵A的这种分解方法为Doolittle的分解。⎡a11⎢a⎢21⎢⎢⎣an1a12a22an2a1n⎤⎡1⎢la2n⎥⎥=⎢21⎥⎢⎥⎢ann⎦⎣ln11ln2⎤⎡r11⎥⎢⎥⎢⎥⎢⎥⎢1⎦⎣r12r22r1n⎤r2n⎥⎥⎥⎥rnn⎦比较等号两边的第i行和第j列的元素,可知aij=ni-1∑lk=1nikkjr,因为li,i+1==lin=rj+1,j==rij=0,所rij=aij-∑likrkj,j=i,i+1,=1ii-1i-1aij=∑likrkj=∑likrkj+rij,i<=j,从而k=1k=1当j=i+1,i+2,ni-1时,aij=∑ljkrkj=∑ljkrkj+ljirii,从而lji=(aji-∑ljkrki)/rii,j=i+1,,n,于是就得k=1k=1k=1到了计算LR分解的一般计算公式。算法描述:Setp1:利用for循环求出rkii-1=aki-∑lkprpi,lik=(aik-p=1k-1∑lp=1k-1ippkr)/rkk。Step2:yi=bi-∑likyk,得出xi=(yi-k=1k=i+1∑rx)/rikkiin程序代码:头文件:#include<>typedefdoubleDatatype;classMatrix{private:Datatype**ar;intM;intN;public:Matrix(inta=0,intb=0);~Matrix();voidprint();voidInit();voidDoolittle(Matrix&L,Matrix&R);friendvoidInit_LR(Matrix&L,Matrix&R);voidget_Y(Matrix&b,Matrix&L);voidget_X(Matrix&Y,Matrix&R);};CPP文件:#include<>#include<>#include<>#include""voidInit_LR(Matrix&L,Matrix&R){for(inti=0;i<;++i){for(intj=0;j<;++j){if(i<=j){if(i!=j){[i][j]=0;}else{[i][j]=1;}}else{[i][j]=0;}}}}Matrix::Matrix(inta,intb)///////////////////构造函数{M=a;N=b;ar=(Datatype**)malloc(sizeof(Datatype*)*M);for(inti=0;i<M;++i){ar[i]=(Datatype*)malloc(sizeof(Datatype)*N);}}Matrix::~Matrix()////////////////////////////析构函数{for(inti=0;i<M