1. TRANSFORMASI HOUSEHOLDER
Berny Pebo Tomasouw
(Kamis, 13 Februari 2014)
A. PENGANTAR
Transformasi Householder sering juga dikenal dengan istilah refleksi householder
merupakan salah satu metode yang dapat digunakan dalam dekomposisi QR. Penamaan
Householder sendiri berasal dari penemunya, yakni Alston Scott Householder. Dia seorang
matematikawan Amerika yang ahli di bidang Matematika Biologi dan Analisis Numerik.
Dalam tulisan ini saya akan memperlihatkan cara menghitung matriks Householder.
Saya akan mulai dengan konsep tentang vektor yang perlu diingat kembali.
Definisi 1
Diberikan v, w n , maka
a. Panjang vektor v (disebut juga norma v) didefinisikan dengan persamaan
2
2
v v12 v2 vn
b. Hasil kali titik (dot product) antara vektor v dan w didefinisikan dengan
v w v1w1 v2 w2 vn wn
Berdasarkan definisi di atas, maka hubungan dari norma vektor dengan hasil kali titik
diperlihatkan oleh persamaan berikut
2
v v v atau v v v
Umumnya, jika v n maka v v1 , v2 ,, vn . Namun dalam tulisan ini, saya akan
v1
v
memandang vektor v sebagai matriks kolom, yakni v 2 . Akibatnya, dengan sangat
vn
mudah dapat dibuktikan bahwa vT v v .
2
B. PEMBAHASAN
Definisi berikut ini akan memperlihatkan bentuk dari matriks Householder. Bentuk
ini sebenarnya muncul dari konsep proyeksi orthogonal (tidak diberikan dalam tulisan ini).
Definisi 2
Transformasi Householder didefinisikan dengan persamaan
v vT
H I 2 T
v v
(1)
Matriks H pada Persamaan (1) sering disebut matriks Householder. Kegunaan dari
transformasi Householder adalah untuk merubah sebarang vektor tak-nol menjadi vektor
yang semua elemennya bernilai nol kecuali untuk elemen pertama dari vektor tersebut.
2. Dengan kata lain, untuk sebarang x n yang tak-nol maka
1
0
(2)
Hx k ke1 , dimana k dan e1 n .
0
Dalam penulisan ini, saya akan mencoba menurunkan rumus untuk menghitung
vektor v yang merupakan elemen penting dalam transformasi Householder.
Langkah pertama, saya akan coba mengalikan matriks Householder dengan sebarang vektor x
untuk melihat bentuk dari vektor v. Diperoleh
v vT
Hx I 2 T x
v v
v vT
x 2 T x
v v
vT x
x 2 T v
v v
x v
Gunakan hasil terakhir di atas dan Persamaan (2), sehingga diperoleh
Hx Hx x v ke1
v x ke1
Selanjutnya, saya akan misalkan v x e1 .
vT x
Hx x 2 T v
v v
T
x e1 x x e
x 2
1
x e T x e
1
1
xT e1T x x e
x 2 T
1
T
x e1 x e1
xT x x1 x e
x 2 T
1
x x 2 x1 2
2 xT x x1
2 xT x x1
1 T
x T
e
x x 2 x1 2
x x 2 x1 2 1
T
2 x x x1
harus sama dengan nol.
Agar Persamaan (2) terpenuhi maka bagian 1 T
x x 2 x1 2
Dengan kata lain,
2 xT x x1
2 xT x x1
1 T
0 T
1.
x x 2 x1 2
x x 2 x1 2
3. Dari ruas kanan persamaan di atas, maka saya bisa menurunkan nilai dari , sebagai berikut
2 xT x x1
1 2 xT x x1 xT x 2 x1 2
xT x 2 x1 2
2 xT x 2 x1 xT x 2 x1 2
xT x 2
2 x
2
x
Jadi diperoleh v x x e1 .
Masalah yang muncul adalah tanda mana yang harus dipilih? Apakah “+” atau “-“ ?
Untuk mengatasi masalah ini, saya akan andaikan bahwa x x1e1 , dimana x1 adalah elemen
pertama dari vektor x. Jika x1 0 maka v x x e1 akan bernilai nol, sebaliknya jika x1 0
maka v x x e1 yang akan bernilai nol. Oleh karena itu, persamaan v x x e1 harus
dirubah menjadi
v x sign x1 x e1
(5)
Perlu diketahui bahwa fungsi sign(x1) akan menghasilkan tanda(“+” atau “-“) dari x1.
Namun jika x1 0 maka pilihlah tanda “+”.
Agar lebih jelas, berikut ini saya berikan contoh disertai hasil perhitungannya.
Contoh 1
2
Tentukan matriks Householder untuk vektor x 3 .
1
Langkah pertama yang harus dilakukan adalah mencari vektor v dengan menggunakan
Persamaa () di atas. Saya menggunakan aplikasi Matlab untuk menghitung dan diperoleh
hasil sebagai berikut
>> x=[2;3;-1]
x=
>> v = x + sign(x(1))*norm(x)*e1
2
3
v=
-1
5.7417
3.0000
>> e1=[1;0;0]
-1.0000
Dengan menggunakan vektor v ini maka bisa dihitung matriks Householder dan diperoleh
hasil sebagai berikut
>> I=eye(3)
I=
1 0 0
0 1 0
0 0 1
>> H=I-(2*v*v')/(v'*v)
H=
-0.5345 -0.8018 0.2673
4. -0.8018 0.5811 0.1396
0.2673 0.1396 0.9535
Selanjutnya, saya akan coba mengalikan matriks H dengan vektor x untuk melihat hasilnya.
>> H*x
ans =
-3.7417
-0.0000
0.0000
Dari hasil di atas terlihat bahwa semua elemen bernilai nol kecuali untuk elemen pertama.
Contoh berikut memperlihatkan kasus x1 0 .
Contoh 2
0
Tentukan matriks Householder untuk vektor x 3 .
4
Hitung matriks v dan diperoleh
>> x=[0;-3;4]
x=
0
-3
4
>> v=x+norm(x)*e1
v=
5
-3
4
Selanjutnya hitung matriks H dan diperoleh
>> H=I-(2*v*v')/(v'*v)
H=
0
0.6000 -0.8000
0.6000 0.6400 0.4800
-0.8000 0.4800 0.3600
Jika saya kalikan matriks H dengan vektor x akan diperoleh
>> H*x
ans =
-5
0
0
Catatan :
i. Perintah norm(x) pada Matlab akan menghitung norma (panjang) dari vektor x.
ii. Tulisan v kemudian diberi tanda kutip satu : v' memiliki arti vT (vektor v ditransposkan)
iii. Perhitungan standar pada Matlab menggunakan 4 digit di belakang tanda koma.
5. C. PENUTUP
Mohon maaf jika terdapat kekurangan ataupun kesalahan. Saran dan kritik dapat
dikirim ke email saya : bernypebo@yahoo.co.id
D. LAMPIRAN
Dalam pembuktian di atas terdapat persamaan v vT x vT x v . Saya akan buktikan untuk
kasus v, x 3 , sebagai berikut :
v1
v v x v2 v1 v2
v
3
T
v12
v1v2
v1v3
v1v2
2
2
v
v2 v3
x1
v3 x2
x
3
v1v3 x1
v2 v3 x2
2
v3 x3
v12 x1 v1v2 x2 v1v3 x3
2
v1v2 x1 v2 x2 v2v3 x3
2
v1v3 x1 v2v3 x2 v3 x3
Di sisi lain,
x1 v1
vT x v v1 v2 v3 x2 v2
x3 v3
v1
v1 x1 v2 x2 v3 x3 v2
v3
2
v1 x1 v1v2 x2 v1v3 x3
2
v1v2 x1 v2 x2 v2v3 x3
2
v1v3 x1 v2v3 x2 v3 x3
Berdasarkan (L.1) dan (L.2) maka terbukti v vT x vT x v .
(L.1)
(L.2)