Định dạng số
Bình luận giải pháp
Không có mô tả (chỉ hiển thị kết quả)
a
b
c
d
x
y
z
clear
i
Randomize
3131313131351515151515≈83137
Cách tính phân tích QR bằng phản xạ Householder
Xây dựng các phản xạ xóa các phần tử dưới đường chéo từng cột. Mỗi phản xạ được xác định bởi vectơ cột được giảm; tích các phản xạ cho Q (trực giao), ma trận phản xạ là R (tam giác trên).
Ví dụ phản xạ Householder — (2×2)
Viết ma trận ban đầu
A
:
A
=
3
4
1
2
Phân rã
QR
là một biểu diễn của ma trận
A
dưới dạng:
A
=
Q
*
R
;
Ma trận
Q
là một ma trận trực góc;
Ma trận
R
là một ma trận tam giác trên;
Để thực hiện phân tích
QR
bằng phương pháp phản xạ Householder, cần thực hiện các bước sau:
1)
Tính vectơ phản xạ Householder v cho mỗi cột a của ma trận A2)
Với mỗi cột a của ma trận A, chúng ta sẽ tính ma trận Householder H3)
Sau khi áp dụng biến đổi Householder cho tất cả các cột của ma trận A, ma trận biến đổi kết quả A' sẽ là ma trận tam giác trên R4)
Ma trận trực giao Q thu được bằng cách nhân tất cả các ma trận Householder HĐể thực hiện phân tích
QR
bằng phương pháp phản xạ Householder, cần thực hiện các bước sau cho mỗi cột
a
của ma trận
A
:
1)
Tính chuẩn ‖a‖ của cột a2)
Xác định dấu (s) của cột as
= -
sgn
(
a
[
i
])
;
// trong đó
sgn(a)
= 1 Nếu a[i] ≥ 0 thì là 1, còn lại là -1a[i]
Là phần tử thứ i của cột ai
Là số thứ tự cột3)
Tính vectơ phản xạ Householderv
=
a
-
s
*
a
*
e
0
i
;
// trong đó
eᵢ
Là vectơ cơ sở chuẩn mà phần tử thứ i là 1 và tất cả các phần tử khác là 0i
Là số thứ tự cột4)
Chuẩn hóa vectơ phản xạ Householderv_norm
=
v
v
;
5)
Tính ma trận HouseholderH
0
i
=
I
- 2 *
v_norm
*
v_norm
T
0
;
6)
Áp dụng biến đổi Householder cho ma trậnA'
0
i
=
H
0
i
*
A'
0
i - 1
;
7)
Tính ma trậnQ
0
i
=
Q
0
i - 1
*
H
0
i
;
2
Lặp lại lần 1Ở lần lặp đầu tiên, ma trận
A'
0
0
bằng với ma trận ban đầu
A
:
A'
0
0
=
3
4
1
2
Viết ma trận ban đầu
Q
0
0
, bằng với ma trận đơn vị:
Q
0
0
=
1
0
0
1
Vectơ
a
bằng với cột thứ
1
của ma trận
A'
0
0
:
a
=
3
4
Tính chuẩn
a
của cột
a
:
a
=
5
;
Xác định dấu (
s
) của cột
a
:
s
= -
sgn
(
a
[
1
])
= -
sgn
-(
3
) = -(
1
) =
-1
;
Viết vectơ cơ sở chuẩn thứ
1
:
e
0
1
=
1
0
Tính vectơ phản xạ Householder
:
v
=
a
-
s
*
a
*
e
0
1
=
3
4
-
-1
*
5
*
1
0
=
3
4
-
-5
0
=
8
4
;
Chuẩn hóa vectơ phản xạ Householder
:
v_norm
=
v
v
=
89
100
9
20
Tính vectơ phản xạ Householder
:
H
0
1
=
I
- 2 *
v_norm
*
v_norm
T
0
=
1
0
0
1
- 2 *
89
100
9
20
*
89
100
9
20
=
=
89
100
9
20
·
89
100
9
20
=
4
5
2
5
2
5
1
5
=
1
0
0
1
- 2 *
4
5
2
5
2
5
1
5
=
=
4
5
2
5
2
5
1
5
·
2
=
4
5
*
2
2
5
*
2
2
5
*
2
1
5
*
2
=
1
3
5
4
5
4
5
2
5
=
1
0
0
1
−
1
3
5
4
5
4
5
2
5
=
1
-
1
3
5
0
-
4
5
0
-
4
5
1
-
2
5
=
-
3
5
-
4
5
-
4
5
3
5
Áp dụng biến đổi Householder cho ma trận
A'
0
1
:
A'
0
1
=
H
0
1
·
A'
0
0
=
-
3
5
-
4
5
-
4
5
3
5
·
3
4
1
2
=
-5
0
-2
1
5
2
5
Tính ma trận
Q
0
1
:
Q
0
1
=
Q
0
0
·
H
0
1
=
1
0
0
1
·
-
3
5
-
4
5
-
4
5
3
5
=
-
3
5
-
4
5
-
4
5
3
5
3
Lặp lại lần 2Vectơ
a
bằng với cột thứ
2
của ma trận
A'
0
1
:
a
=
0
2
5
Tính chuẩn
a
của cột
a
:
a
=
2
5
;
Xác định dấu (
s
) của cột
a
:
s
= -
sgn
(
a
[
2
])
= -
sgn
-(
2
5
) = -(
1
) =
-1
;
Viết vectơ cơ sở chuẩn thứ
2
:
e
0
2
=
0
1
Tính vectơ phản xạ Householder
:
v
=
a
-
s
*
a
*
e
0
2
=
0
2
5
-
-1
*
2
5
*
0
1
=
0
2
5
-
0
-
2
5
=
0
4
5
;
Chuẩn hóa vectơ phản xạ Householder
:
v_norm
=
v
v
=
0
1
Tính vectơ phản xạ Householder
:
H
0
2
=
I
- 2 *
v_norm
*
v_norm
T
0
=
1
0
0
1
- 2 *
0
1
*
0
1
=
=
0
1
·
0
1
=
0
0
0
1
=
1
0
0
1
- 2 *
0
0
0
1
=
=
0
0
0
1
·
2
=
0
*
2
0
*
2
0
*
2
1
*
2
=
0
0
0
2
=
1
0
0
1
−
0
0
0
2
=
1
-
0
0
-
0
0
-
0
1
-
2
=
1
0
0
-1
Áp dụng biến đổi Householder cho ma trận
A'
0
2
:
A'
0
2
=
H
0
2
·
A'
0
1
=
1
0
0
-1
·
-5
0
-2
1
5
2
5
=
-5
0
-2
1
5
-
2
5
Tính ma trận
Q
0
2
:
Q
0
2
=
Q
0
1
·
H
0
2
=
-
3
5
-
4
5
-
4
5
3
5
·
1
0
0
-1
=
-
3
5
-
4
5
4
5
-
3
5
4
Ma trận Q, RQ
=
Q
0
2
=
-
3
5
-
4
5
4
5
-
3
5
R
=
A'
0
2
=
-5
0
-2
1
5
-
2
5
Answer
A = Q · RQ
=
-
3
5
-
4
5
4
5
-
3
5
R
=
-5
0
-2
1
5
-
2
5
Kích thước2×2Phương phápPhản xạ Householder