不完全QR分解

Program QR
  Implicit none
  Integer :: i, j
  Integer, parameter :: m = 4, n = 3
  Real(kind=8), parameter :: A(m,n) = reshape( [ 1.,2.,2.,-4.,3.,2.,2.,5.,-2.,6.,-4.,3. ],[m,n] )
  Real(kind=8) :: Q(m,n) = 0.d0, R(n,n) = 0.d0, y(m), A0(m,n)

  Do j = 1, n
    y = A(:,j)
    Do i = 1, j - 1
      R(i,j) = dot_product(Q(:,i),y)
      y = y - R(i,j)*Q(:,i)
    End do
    R(j,j) = sqrt( dot_product(y,y) )
    Q(:,j) = y / R(j,j)
  End do
  
  Write(*,'(1x,A)') 'The matrix Q is:'
  
  Do i = 1, m
    Write(*,'(*(f14.8))') Q(i,:)
  End do
  
  Write(*,'(1x,A)') 'The matrix R is:'

  Do i = 1, n
    Write(*,'(*(f14.8))') R(i,:)
  End do
  
  A0 = matmul(Q,R)
  Write(*,'(1x,A)') 'The matrix A is:'
  Do i = 1, m
    Write(*,'(*(f14.8))') A0(i,:)
  End do
  
End program QR

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值