Zadanie 8. ( Macierz Hilberta) 1 Sformułowanie problemu
Macierz Hilberta H =[ h ]
1
n
ij
stopnia n ma nastepujace elementy: h =
.
ij
i+ j−1
Wiadomo, ze macierz Hilberta jest symetryczna dodatnio okreslona. Wobec tego wszystkie jej wartosci własne sa dodatnie. Oblicz za pomoca eig wartosci własne macierzy Hilberta dla n = 2, 3, . . .. Czy obliczone wartosci własne sa faktycznie dodatnie? Obliczenia powtórz dla macierzy B= H T H Narysuj wykresy najmniejszej i najwiekszej wartosci własnej macierzy n
n
H
traktowane jako funkcje n. To samo zrób dla macierzy B. Oblicz macierz H − 1 odwrotna do n
n
macierzy Hilberta i wykonaj takie same eksperymenty jak dla H n . Czy obliczone wartosci własne macierzy H − 1
n
sa faktycznie odwrotnosciami
wartosci własnych macierzy H ? Oblicz normy Frobeniusa |
F . Powtórz te
n
H − 1 H − I |
n
ekspertymenty dla macierzy Pei, wybierajac parametr d tak, by miała wszystkie wartosci własne dodatnie.
2 Realizacja
Macierz Hilberta n-stopnia (Octave) f=zeros(n);
for i=1:n
1
1
1
1
1
…
for j=1:n
2
3
4
5
n
1
1
1
1
1
1
1
…
f(i,j)= i
2
3
4
5
6
n
+ j−1 ;
f=
+1
1
1
1
1
1
1
endfor
…
3
4
5
6
7
n+2
endfor
[111 1 1 1 1…]
4
5
6
7
8
n+3
lub krócej f=hilb(n)
1
1
1
1
1
1
…
5
6
7
8
9
n+4
Za pomocą funkcji:
1
⋮
⋮
⋮
⋮
⋮
⋱
n+ i
eig- obliczyłem wartości własne macierzy.
1
1
1
1
1
1
1
Inv- obliczyłem macierz odwrotną.
n
n+1
n+2
n+3
n+4
n+ j
i+ j−1
f'- obliczyłem macierz transponowaną 3 Eksperymenty
Macierz Hilberta jest podręcznikowym przykładem macierzy źle uwarunkowanej. Wskaźnik uwarunkowania macierzy Hilberta stopnia N wynosi: cond ( H n)= O( e 3.5255n)
√ n
Numerycznie rozwiązywanie nawet niewielkich układów równań z tą macierzą jest zatem praktycznie niemożliwe.
Macierz transponowana jest taka sama jak macierz pierwotna.
H − Macierz Hilberta
n
H T = H
n
n
Wartości własne macierzy Hilberta dla n=2, 3 …
n=2
1
) =
B = H T H
2
) =
0.065741
2
2
2
0.0043219
H
2
3
=
B =[54 ] eig( B 2
2
[1 ] eig( H 2
1
1
1.267592
2
2
13
1.6067892
2
3
3
36
Obliczone wartości własne dla n=2 są dodatnie.
n=3
1
1
) = B = H T H
) =
3
3
3
2
3
0.0026873
3
0.525
7.2218e−06
0.1223271
4
H
1
1
1
1.4964e−02
=[1 ] eig( H 3
3
3
3
2
3
4
1.4083189
B =[1.36111
] eig( B 3
3
0.42361
4
10
1.9834e+00
1
1
1
3
3
4
5
0.525
0.21361
10
Obliczone wartości własne dla n=3 są dodatnie.
Wartości własne macierzy odwrotnej Hilberta dla n=2, 3.
n=2 M = H −1
n
n
) =
) =
M
B = M T M
2=[ 4 −6]
eig ( M 2
2
2
] eig( B 2
−6 12
0.78890
2
B 2=[ 52 −96
−96 180
0.62236
15.21110
231.37764
Obliczone wartości własne dla n=2 są dodatnie.
n=3
)=
M =[ 9 −36 30 ] eig( M 3
0.71007
3
−36
192
−180
30
−180
180
8.17481
372.11513
B = M T M
3
3
3
eig ( B )=
3
B =[ 2.2770e+03 −1.2636e+04 1.2150e+04 ] 5.0419e−01
3
−1.2636e+04
7.0560e+04
−6.8040e+04
1.2150e+04
−6.8040e+04
6.5700e+04
6.6827e+01
1.3847e+05
Obliczone wartości własne dla n=3 są dodatnie.
Pytanie:
Czy obliczone wartosci własne macierzy H − 1
n
sa faktycznie odwrotnosciami
wartosci własnych macierzy H ?
n
Nie bo:
Macierz odwrotna Hilberta H −1=[ a ] dla n=2, obliczona za pomocą funkcji inv w octave, n
ij
przyjmuje wartość a =4
11
.
(−1) i+ j ( n+ i−1)!( n+ j−1)!
Zaś a
=
11
obliczona za pomocą wzoru aij
,
( i+ j−1)[( i−1)!( j−1)!]2( n− i)!( n− j)!
(−1)1+1(2+1−1)!(2+1−1)!
a =
=2
11
a
(1+1−1)[(1−1)!(1−1)!]2(2−1)!( 2−1)!
11
Normy Frobeniusa
m
n
czyli pierwiastek kwadratów wszystkich składników macierzy | A | F=√∑∑ a 2
i
ij
=1 j=1
na przykład:
| A | =[1 2 3]
F
4 5 6
| A | =√12+22+32+42+…+92
F
7 8 9
do obliczenia norm Frobeniusa użyłem następujących komend w Octave: dla n=2;
>>> I =[1 0] ; 0 1
>>>for i=1:2
>>>endfor
>>> f=hilb(2);
>>>for j=1:2
sqrt(c)= 4.9371e-16
>>> g=inv(f);
>>>x=z(i,j)*z(i,j);
>>> z=f*g-I;
>>>c=c+x;
>>> c=0;
>>>endfor
dla n=3;
analogicznie jak wyżej:
sqrt(c)= 1.1571e-14
Macierz Pei wygląda następująco: [ d 1 1 1 … 1
1 d 1 1 … 1
1 1 d 1 … 1 ]
1 1 1 d … 1
⋮ ⋮ ⋮ ⋮
⋱ 1
1 1 1 1 1
d
Wykonałem obliczenia dla macierzy 4-stopnia.
)=
1
F 4=[ d 1 1 1
1
d 1 1 ] Dla d=2 F
] eig( F 4
1 1
d 1
4=[2 1 1 1
1 2 1 1
1 1 2 1
1
1 1 1 d
1 1 1 2
1
5
eig ( G )=
4
1
G = F T F
1
4
]
4 4
G 4=[7 6 6 6
6 7 6 6
6 6 7 6
1
6 6 6 7
25
Macierz odwrotna Pei
)=
G = F −1
4
0.2
4
F −1=[ 0.8 −0.2 −0.2 −0.2
−0.2
0.8 −0.2 −0.2] eig( F−14
C
]
4
−0.2 −0.2
0.8 −0.2
1
4 =[ 0.76 −0.24 −0.24 −0.24
−0.24
0.76 −0.24 −0.24
−0.24 −0.24
0.76 −0.24
−0.2 −0.2 −0.2
0.8
1
C = GT G
4
4 4
−0.24 −0.24 −0.24
0.76
1
eig ( C )=
4
0.04
1
1
1
Pytanie:
Czy obliczone wartosci własne macierzy Pei F − 1
n
sa faktycznie odwrotnosciami
wartosci własnych macierzy F ?
n
Tak, bo:
Macierz odwrotna Pei F −1=[ f ] dla n=4 i d=2, obliczona za pomocą funkcji inv w octave, n
ij
przyjmuje wartość f =0.8
=−0.2
ij
dla i= j , f ij dla i≠ j .
a także obliczona za pomocą wzorów: d
2
f
+ n−2
+4−2
=
=
=0.8 dla i= j ij
d ( d + n−2)−( n−1) 2(2+4−2)−(4−1) f
−1
−1
=
=
=−0.2 dlai≠ j
ij
d ( d + n−2)−( n−1) 2(2+4−2)−(4−1) Norma Frobeniusa Macierzy Pei
0 1 0 0] ;
0 0 1 0
>>>x=z(i,j)*z(i,j);
0 0 0 1
>>> z=f*g-I;
>>>c=c+x;
>>> c=0;
>>>endfor
>>>for i=1:4
>>>endfor
>>>for j=1:4
sqrt(c)= 6.6613e-16