如何用matlab实现矩阵分解?

如何用matlab实现矩阵分解?,第1张

解:E(Y)=1*(0.12+0.03+0.15)+3*(0.05+0.25+0.20)+5*(0.15+0.02+0.03);

E(X)=1*(0.12+0.05+0.15)+2*(0.03+0.25+0.02)+3*(0.15+0.20+0.03);

E(XY)=1*1*0.12+1*2*0.03+1*3*0.15

+3*1*0.05+3*2*0.25+3*3*0.20

+5*1*0.15+5*2*0.02+5*3*0.03;

Cov(X,Y)=E(XY)-E(X)E(Y)。

扩展资料:

数值分析的主要分支致力于开发矩阵计算的有效算法,这是一个已持续几个世纪以来的课题,是一个不断扩大的研究领域。 矩阵分解方法简化了理论和实际的计算。

针对特定矩阵结构(如稀疏矩阵和近角矩阵)定制的算法在有限元方法和其他计算中加快了计算。 无限矩阵发生在行星理论和原子理论中。 无限矩阵的一个简单例子是代表一个函数的泰勒级数的导数算子的矩阵

Ax=B,改写成Ly=B,Ux=y的方程组。就相当于将A=LU分解成了两个矩阵。称为矩阵A的三角分解,或LU分解。如果L为单位下三角阵,则叫Doolittle分解,若U为单位上三角阵,则叫Crout分解。只要A的各顺序主子式不为零,则A可唯一分解成一个单位下三角阵L与一个上三角阵U的乘积。

•设Ax=b,A=LU,则Ax=LUx=b

于是令Ux=y,则Ly=b

这样原来方程能化为两个简单方程组

下面是LU分解的Fortran子程序 希望可以有所帮助

!求解au=b,u

!n表示为方程维数

subroutine lu(a,b,n,u)

implicit real(8) (a-h,o-z)

real(8)::a(n,n),b(n),u(n),a_bak(n,n),b1(n),aL(n,n),aU(n,n),y(n)

!exchange rows

do i=1,n

  tmpMax=0.d0

do ic=i,n

if(tmpMax<dabs(a(ic,i))) then

   tmpMax=dabs(a(ic,i))

   i_rec=ic

 endif

enddo

  if(i_rec.ne.i) then

do jc=i,n

tmp=a(i,jc)

a(i,jc)=a(i_rec,jc)

a(i_rec,jc)=tmp

enddo

tmp=b(i)

b(i)=b(i_rec)

b(i_rec)=tmp

      endif

!decomposition

do j=i,n

  tmp=0.d0

   do k=1,i-1

tmp=tmp+aL(i,k)*aU(k,j)

   enddo

  aU(i,j)=a(i,j)-tmp

  tmp=0.d0

   do k=1,i-1

tmp=tmp+aL(j,k)*aU(k,i)

   enddo

   aL(j,i)=(a(j,i)-tmp)/aU(i,i)

enddo

enddo

!find answer

do i=1,n

  tmp=0.d0

   do j=1,i-1

   tmp=tmp+aL(i,j)*y(j)

   enddo

  y(i)=b(i)-tmp

enddo

do i=n,1,-1

  tmp=0.d0

 do j=i+1,n

  tmp=tmp+aU(i,j)*u(j)

 enddo

  u(i)=(y(i)-tmp)/aU(i,i)

enddo

end


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

原文地址: https://outofmemory.cn/yw/12094707.html

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

发表评论

登录后才能评论

评论列表(0条)

保存