フィルターのクリア

How can I update a matrix at the end of each 'for loop' and use that updated matrix in the second loop?

1 回表示 (過去 30 日間)
I want find Schur Decomposition using QR decomposition of Matrix A.
The algorithm for finding Schur Decomposition using QR factorization method is:
  1. Set A(1)=A (in my case, R=A)
  2. Find QR-decompostion Q(1)R(1) of A
  3. Define A(2)=R(1)*Q(1)
  4. Find a QR Decomposition Q(2)R(2) of A(2)
  5. Repeat this process! that is, if A(k) has the QR decomposition Q(k)R(k), use this to define A(k+1)=R(k)*Q(k)
I also want to compare the result with matlab result using schur(A).
clc;
clear all;
close all;
A=[2 -3 1;-1 5 -2;3 -8 4];
b=[2 4 5];
N=size(A,1);
Q=eye(N);
R=A;
for i=1:5
R=A;
% For Finding QR decomposition of A
for k=1:N-1
H=Householder1(R(:,k),k);
R=H*R;
Q=Q*H;
end
%After QR decomposition of A, the value of Q and R is
Q
R
% I want to multiply R and Q and define A1 as A1=R*Q
% Then reassign "A1" in "R" at the beginning of the 'for loop' to start the 2nd loop.
A1=R*Q
end
% Function for creating Householder's Matrix
function H=Householder1(x,k)
N=length(x);
tmp=sum(x(k+1:N).^2);
g=sqrt(x(k)^2+tmp);
c=sqrt((x(k)+g)^2+tmp);
w=zeros(N,1);
w(k)=(x(k)+g)/c;
w(k+1:N)=x(k+1:N)/c;
H=eye(N)-2*w*w';
end

回答 (1 件)

Koundinya
Koundinya 2018 年 12 月 18 日
編集済み: Koundinya 2018 年 12 月 18 日
It isn't quite clear as to what the exact problem is , but if you want to update the value of R after each iteration :
R=A;
for i=1:5
% R=A;
% For Finding QR decomposition of A
for k=1:N-1
H=Householder1(R(:,k),k);
R=H*R;
Q=Q*H;
end
%After QR decomposition of A, the value of Q and R is
Q
R
% I want to multiply R and Q and define A1 as A1=R*Q
% Then reassign "A1" in "R" at the beginning of the 'for loop' to start the 2nd loop.
A1=R*Q;
R=A1;
end

カテゴリ

Help Center および File ExchangeMatrix Computations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by