Phương pháp HouseHoulder

Một phần của tài liệu Tìm hiểu phương pháp ghép ảnh (Trang 49)

Bài toán đặt ra là cho một ma trận A[m, n] (thường là m > n), một vector

m

R

b∈ . Tìm một vector xRn sao cho

min

2 ≈ −b

Ax (min theo chuẩn hai)

Nguồn gốc đại số cơ bản để giải bài toán này là giải hệ phương trình Ax = b, khi m > n, tức là khi số phương trình nhiều hơn số ẩn. Hệ phương trình lúc này được gọi là hệ quá xác định (overdetermined). Khi đó hệ phương trình thường là không có nghiệm đúng hẳn. Trong điều kiện đó, người ta muốn tìm nghiệm x sao cho sai số Axb pđạt cực tiểu, với cách chọn p thích hợp. Muốn thế để ý rằng hàm f(x)= Axb pvới p = 1 hoặc p = ∞ là một hàm không khả vi nên cực tiểu hoá f(x) có nhiều khó khăn mặc dù cũng có nhiều phương pháp với những lời giải cụ thể trong một số trường hợp cụ thể nhưng lời giải đó không thích hợp với phương pháp số và không đảm bảo sự ổn định số của lời giải. Chẳng hạn là phương pháp trụ xoay Gauss, Gauss – Jordan. Bên cạnh đó

2

b

Ax− lại là một hàm khả vi đối với x, do vậy bài toán bình phương cực tiểu (LS) min Axb 2 trong đó A[m, n], bRm,xRn được quan tâm nhiều hơn và có thể đưa về bài toán tương đương bằng cách nhân trái với ma trận A và vector b với một ma trận trực giao Q như sau:

2

) (

min QTA xQTb ; QTQ = Im (với Im là ma trận đơn vị cấp m). (Do khi nhân QT với A không làm thay đổi độổn định của A)

Cho trước ma trận A[m, n] (m ≥ n) và vector bRm. Giả sử đã tính được ma trận trực giao Q[m, m] sao cho = =⎢⎣⎡U ⎥⎦⎤

R R A

QT 1 là ma trận tam giác trên.

n ← 1 R n m U ← − Nếu =⎢⎣⎡d⎥⎦⎤ c b QT

n cn m d ← − Thì hiển nhiên có với bất kỳ xRn 2 2 1 2 2 Q Ax Q b Rx c d b Ax− = TT = − +

Khi đó rõ ràng nếu rank(A) = n = rank(R1) thì xLS chính là nghiệm của hệ tam giác trên.

R1xLS = c và 2 2 2 d PLS =

Như thế, một khi đã tính được QTA = R, người ta thường gọi đó là phép nhân tích QR thì có thể giải ngay được bài toán LS với rank(A) = n.

Có nhiều cách để tìm phân tích QR, nhưng ở đây sử dụng theo phương pháp dùng các biến đổi HouseHoulder sau:

Thuật toán trực giao hoá HouseHoulder:

Cho ma trận A[m, n] (m ≥ n). Thuật toán sau đây tính một ma trận trực giao Q sao cho QTA = R là ma trận tam giác trên. Ma trận R chèn vào chỗ của ma trận A.

For k := 1, 2, …,n

Xác định một ma trận HouseHoulder Pk cấp m – k + 1 sao cho Pk[akk, …,amk]T = [Ikk, …,0]T

A := Diag(Ik-1, Pk)A

Đánh giá: Thuật toán này tốn n2(m – n/3) phép tính. Đặc biệt thông tin về ma trận Pk: Pk = Diag(Ik-1, Pk) [ ] k T k k v v /β Im− ( ) ( ) ⇔ có thể diễn đạt như sau:

Cũng có thể biểu diễn tường minh ma trận Q theo Q := I

For k := n, n-1, …,1 Q := PkQ (adsbygoogle = window.adsbygoogle || []).push({});

Đánh giá: Cách biểu diễn này tốn 2[m2n – mn2 +n3/3] phép tính.

Nếu chỉ để giải bài toán LS thì không cần tính tường minh Q mà chỉ cần tính QTb theo

For k := 1, 2, …,n b := Pkb

Sau khi đã có b = QTb thì chỉ cần tìm nghiệm x theo cách thế xn : = bn / rn For i := n - 1, n - 2, …,1 i n i j j ij i i r x a b x ⎜⎜⎝⎛ − ⎟⎟⎠⎞ = ∑ + = 1

Đánh giá: Dùng phương pháp này để giải bài toán đòi hỏi n2(m – n/3) phép tính.

Vì tính ưu việt và sự ổn định của lời giải nên dùng phương pháp QR để tìm nghiệm LS của bài toán bình phương cực tiểu tốt hơn hẳn phương pháp dựa vào phương trình Gauss Markov nhưng tốn nhiều phép tính hơn.

Phép biến đổi HouseHoulder

Ma trận HouseHoulder là ma trận H[n, n] (để cho gọn sẽ viết là H) có dạng: H := In – 2uuT, u∈Rn, u 2 =1.

Mệnh đề sau cho ta tác dụng cơ bản của phép biến đổi HouseHoulder: Mệnh đề: Cho a, b là 2 vector bất kỳ, không cùng phương Rm với b 2 =1. Khi đó, luôn có thể xác định một vector u∈Rm với u 2 =1 sao cho nếu H := In – 2uuT thì Ha = αb.

Thật vậy, vì H là ma trận HouseHoulder, H trực giao. Do đó ||a|| = ||Ha|| = ||αb|| = ||α||. Do vậy có thể xác định theo 2 cách: hoặc α = ||a|| hoặc α = -||a||.

Có thể viết: a – 2(uTa)u = αb hay a – αb = 2λu với λ = uTa Từ biểu thức trên suy ra: aTa – αaTb = 2λaTu =2λ2.

Theo giả thiết a, b không đồng phương, do vậy aTb ≤ ||a||||b|| = |α| Vì aTa – αaTb > 0 nên λ≠ 0, từ đó có: u [a αb]

λ − =

2 1

Như vậy H không phụ thuộc vào dấu của α.

Trong bài toán của chúng ta, có hệ phương trình sau:

∑ ≤ + = n j i j i k ij k x y a x y f ( , ) ( ) với k = 1, 2; i + j ≤ n.

Như vậy, khi quy về phương trình Ax = b, đưa về giải hai hệ phương trình sau: [ ]xiyj A1 = ; [ ](1) 1 aij x = ; b1 =[f1(x,y)]; [ ]xiyj A2 = ; [ ](2) 2 aij x = ; b2 =[f2(x,y)]; Trong đó: A1 = A2 A1, A2, b1, b2đã biết. Tìm x1, x2. Với bậc một

Như vậy trong trường hợp có bốn điểm CP ta phải giải hệ hai phương trình sau để tìm ra các hệ số (1) ij a và (2) ij a . và Số hàng của ma trận tương ứng với số điểm điều khiển.

Áp dụng phương pháp HouseHoulder để giải phương trình Ax = b. Mã đoạn chương trình này có thể xem trong phần phụ lục.

Giải ra các hệ số aij từ công thức tổng quát ban đầu bằng phương pháp HouseHoulder này cho kết quả chỉnh xác và ổn định. Phương pháp này thường được áp dụng để giải hệ phương trình quá xác định.

Một phần của tài liệu Tìm hiểu phương pháp ghép ảnh (Trang 49)