部分选主元的LU分解,可不可以先换好所有行,然后再进行LU分解

部分选主元的LU分解,可不可以先换好所有行,然后再进行LU分解,第1张

可以,这是数值分析书上的定理

就是存在排列矩阵P(对换矩阵的乘积),使得PA=LU

这个定理说明先对A进行对换矩阵的行得到PA,然后再对PA进行LU分解是可行的

证明如下:

A选主元的LU分解实际是对应这样的矩阵相乘

U=(Ln-1En-1)(L2E2)(L1E1)A

看等号右边我们来解释一下,每个括号里包含两部分L和E,其中E代表对换就是选主元,L代表选完主元后的列消去,例如E1就是对A选主元第一行与某行对换,L1是将得到的矩阵E1A第一列除a11外全变零然后对第二列选主元E2,再消去第二列的其他元素L2直至消去成既约矩阵U

这个式子中的兑换矩阵E都不是下三角矩阵,列消去矩阵L都是下三角矩阵

怎么样把所有的E都移到A的旁边使得所有的L在一起呢

我们知道

第一,对换矩阵有性质EijEij=I(单位阵)就是对换ij两行再对换ij两行保证矩阵不变

第二,而下三角矩阵L,将ij行对换,再将得到的矩阵ij列对换,得到的还是下三角矩阵:EijLEij=L(L表示一个新的下三角矩阵)

因此回头看上边的等式:

U=Ln-1En-1L2E2L1E1A=Ln-1En-1L2(E3E3)E2L1(E2E2)E1A=

Ln-1(En-1Ln-2En-1)(E3L2E3)E3(E2L1E2)E2E1A=Ln-1(Ln-2)(L2)E3(L1)E2E1A

第一个等号是因为EijEij=I,第二个等号是因为矩阵乘法满足结合律第三个等号是把(E2L1E2)记成L1根据上边他是一个新的下三角矩阵

然后我们看这个式子他把E1E2移到了A的附近,然后括号里边的是新的下三角矩阵

以此类推 ,把E3En-1都化到A的旁边,就有

U=(Ln-1L2L1)(En-1E1)A记为U=LPA

L的逆矩阵也是下三角矩阵,同时左乘他就有LU=PA(最后的式子中的L是原来L的逆矩阵 两个不一样)

您可以申请继续授权的,授权天数通常指从某年某月某日开始授权,而授权期限是指某个时间段,即某年某月某日开始至某年某月某日止。

您可以申请继续授权的,授权天数通常指从某年某月某日开始授权,而授权期限是指某个时间段,即某年某月某日开始至某年某月某日止。

您可以申请继续授权的,授权天数通常指从某年某月某日开始授权,而授权期限是指某个时间段,即某年某月某日开始至某年某月某日止。

您可以申请继续授权的,授权天数通常指从某年某月某日开始授权,而授权期限是指某个时间段,即某年某月某日开始至某年某月某日止。

您可以申请继续授权的,授权天数通常指从某年某月某日开始授权,而授权期限是指某个时间段,即某年某月某日开始至某年某月某日止。

里面有自带的LU分解函数,你可在帮助文档搜索 LU

给你一个我自己写的LU分解函数

function [myl,myu,x]=MYLU(A,b)

%依据《现代电力系统分析》编制的LU分解程序。

%matlab自带的lu函数与书上所讲略有不同,不方便参照课本步骤进行后续计算。

%A为待分解的矩阵,myl为分解后下三角矩阵,myu为分解后的上三角矩阵,未考虑单独的对角阵D

%clc

%A=[5,0,0,5,1;2,1,1,0,0;0,1,2,0,10;1,0,5,1,0;1,1,0,3,10] %两组测试用矩阵方程

%b=[1,3,3,4,1]';

%M=[1,2,1,1;2,1,0,0;1,0,1,0;1,0,0,1]

%b=[-1,1,2,0]'

%A=[2,3,1;3,7,-1;5,-4,2]

%b=[12,13,5]'

n=length(A);

myl=speye(n); %可以先不分配内存,由系统自动分配内存

myu=speye(n);

%==============LU分解================

for i=1:n

for j=1:n

if (i<j)

x=0;

for k=1:i-1

x=x+myl(i,k)myu(k,j);

end

myu(i,j)=(A(i,j)-x)/myl(i,i);

end

if(i>=j)

x=0;

for k=1:j-1

x=x+myl(i,k)myu(k,j);

end

myl(i,j)=A(i,j)-x;

end

end

end

%B=mylmyu %测试LU分解矩阵,B=A表明结果正确

%===============解方程Ax=b================

y=(zeros(1,n))';

x=(zeros(1,n))';

y(1)=b(1)/myl(1,1);%解Ly=b

for i=2:n

p=0;

for k=1:i-1

p=p+myl(i,k)y(k);

end

y(i)=(b(i)-p)/myl(i,i);

end

%C=(myly) %测试Ly=b,如果相等表明结果正确

x(n)=y(n);

for i=1:n-1

p=0;

for k=n-i+1:n

p=p+myu(n-i,k)x(k);

end

x(n-i)=y(n-i)-p;

end

%D=mylmyux

里面注释部分可以删除

将矩阵A分解为单位下三角阵L和上三角阵U,就是找出L的元素lij以及U的元素uij与A的元素aij的关系式。下面说明矩阵L,U的元素可以通过n步由矩阵A的元素计算出来,其中第k步求出U的第k行和L的第k列元素。

根据式(4-1)中,由矩阵乘法可知:

(1)由L的第1行和U的第j列元素对应相乘后与A的对应元素相等,即

a1j=u1j

同理可知U的第1行元素:

u1j=a1j (j=1,2,…,n)

由L的第i行和U的第1列元素对应相乘后与A的对应元素相等,即

ai1=li1·u11

从而得到L的第一列元素

li1=ai1/u11 (i=2,3,…,n)

这样就确定了U的第1行元素及L的第1列元素。类似地,用矩阵乘法再确定U的第2行及L的第2列,如此继续。

假设已经得出了U的前k-1行及L的前k-1列(1≤k≤n)的全部元素,现在来确定U的第k行元素和L的第k列元素。

(2)在式(4-1)中,由矩阵乘法知

地球物理数据处理基础

注意,由于L是单位下三角阵,当r>k时,lkr=0,而lkk=1,所以

地球物理数据处理基础

从而有

地球物理数据处理基础

如此即可得到上三角矩阵U的第k行元素。

同理,可确定L的第k列元素。

由 并且当r>k时,urk=0,则有

地球物理数据处理基础

从而有

地球物理数据处理基础

即可计算出矩阵L的第k列元素。

上述步骤进行,就可以定出L及U的全部元素,完成矩阵A的LU分解,即对k=1,2,…,n,计算A=LU分解的公式为

地球物理数据处理基础

这里约定

上述这种矩阵A的LU分解计算顺序也可按图4-1所示逐步进行。

由于以上计算公式(4-7)中不含消去法的中间结果a(k)ij,可直接逐框计算,所以称为紧凑格式。

从计算过程中可以看出,对A进行LU分解时,在求出u1j(j=1,2,…,n)后不再需要a1j(j=1,2,…,n),求出li1(i=2,3,…,n)后不再需要ai1(i=2,3,…,n)。同样求出ukj和lik后不再需要akj和aik(j=k,k+1,…,n;i=k+1,k+2,…,n;k=1,2,…,n),因此,在计算过程中可以不另设存放L和U的数组,而是将ukj和lik算出后直接存入矩阵A对应元素akj和aik的存贮单元中。这也称为动态算法,它可节省大量内存。

图4-1 矩阵LU分解顺序图

对A进行LU分解后,可按式(4-5)和式(4-6)求解线性方程组。

同样,求解线性方程组时,由式(4-5)和式(4-6)式可知,在求yi(i=1,2,…,n)时,只用到对应的bi(i=1,2,…,n),故可不另设存放y的数组,而将y的元素存入列向量b对应元素bi的存贮单元中。但应注意,这时的b已变成y。同理求x时,也不用另设存放单元,计算结果直接存入b中,因而在求解线性方程组的最后结果中,b存储的是x。

另外,由于求yi的顺代公式(4-5)与求ukj的公式(4-7)形式完全相同,故可合并到k循环之内进行,这样可以简化程序结构。所以,在进行LU分解的同时,Ly=b的求解也完成了。

[例1]用直接三角分解法求解线性方程组

解:(1)分解A=LU,

地球物理数据处理基础

地球物理数据处理基础

(2)求解Ly=b,

地球物理数据处理基础

得到y=(3,-5,6)T

(3)求解

得到x=(2,-2,1)T

以上就是关于部分选主元的LU分解,可不可以先换好所有行,然后再进行LU分解全部的内容,包括:部分选主元的LU分解,可不可以先换好所有行,然后再进行LU分解、lu10.0授权天数满如何解决、Matlab矩阵的LU分解,可是怎么跟书上说的不一样等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9384454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存