Zadania z tego rozdziaªu sªu»¡ przetestowaniu najprostszych kwadratur nu-merycznych, czyli metod przybli»onego obliczania caªek po odcinkach.
W tym rozdziale zapoznamy si¦ tak»e z funkcj¡ octave'a quad() sªu»¡c¡
przybli»onemu obliczaniu caªek jednowymiarowych postaci Z b
a
f (t) dt − ∞ ≤ a < b ≤ +∞,
Mo»emy wi¦c znajdowa¢ przybli»enia caªek po caªej prostej rzeczywistej czy póªprostych.
Zadanie 1 Zapoznaj si¦ z pomoc¡ do funkcji octave'a quad().
Policz przy pomocy quad() caªk¦ Rabf (t) dt dla nast¦puj¡cych funkcji i odcinków:
• x2 na [−1, 1]
• x9 na [0, 1]
• sin(x) na [0, π]
• cos(100 ∗ x) na [0, π]
• cos(100 ∗ x) ∗ cos(1000 ∗ x) na [0, π]
Czy wyniki s¡ zgodne z teori¡?
Zadanie 2 Zªo»ona kwadratura trapezów.
(a) Zaprogramuj w octavie funkcj¦
function c=kwadtrapez(FCN,a,b,n)
obliczaj¡c¡ zªo»on¡ kwadratur¦ trapezów:
Tnf = h 0.5[f (a) + f (b)] +
n−1
X
k=1
f (a + k ∗ h)
!
dla h = (b − a)/n.
Parametry funkcji:
• F CN - wska¹nik do funkcji octave'a function y=f(x) obliczaj¡cej warto±¢ funkcji podcaªkowej
• a - lewy koniec odcinka
• b - prawy koniec odcinka
• n - ilo±¢ oblicze« warto±ci funkcji podcaªkowej w kwa-draturze trapezów minus jeden (tak, jak we wzorze po-wy»ej)
Funkcja zwraca przybli»on¡ warto±¢ caªki obliczon¡ za po-moc¡ powy»szego wzoru, tzn. zªo»onej kwadratury trape-zów.
Funkcja powinna dziaªa¢ równie» je±li j¡ wywoªamy tylko z trzema parametrami. Wtedy n powinno domy±lnie przyj¡¢
warto±¢ sto.
(b) Przetestuj funkcj¦ octave'a z poprzedniego podpunktu dla Nk= 2kN0 k = 0, 1, 2, . . .z ustalonym N0 = 5 licz¡c:
EN E2N dla bª¦du
EN = | Z b
a
f dt − TNf |
dla nast¦puj¡cych funkcji, dla których warto±ci caªek znamy:
• x2 na [0, 1],
• sin(x) na [0, π] i N0 = 5 - funkcja analityczna,
• sin(100 ∗ x) na [0, π] i N0 = 5 - funkcja analityczna, silnie oscyluj¡ca - du»e warto±ci drugiej pochodnej,
• xj+0.5 na [0, 1] dla j = 0, 1, 2 czyli funkcji w Cj([0, 1]) i o nieograniczonej w otoczeniu zera j + 1 pochodnej.
Porównaj wyniki obliczane kwadratur¡ trapezów z wyni-kami funkcji quad(). Mo»na sprawdzi¢ dla jakiego n bª¡d
obliczony zªo»on¡ kwadratur¡ trapezów jest na poziomie bª¦du funkcji octave quad() - i porówna¢ ilo±¢ wywoªa«
funkcji f przez obie procedury.
Zadanie 3 Czy wielomiany Czebyszewa tworz¡ ukªad funkcji ortogonalnych w L2 na [−1, 1] z wag¡ √1−x1 2.
Policz za pomoc¡ funkcji octave quad():
Z 1
−1
√ 1
1 − x ∗ xTn(x)Tm(x) dx dla m = 2 i n = 3. Czy wynik jest zgodny z teori¡?
Zadanie 4 Kwadratura Gaussa-Czebyszewa dla
I(f ) = Z 1
−1
√ 1
1 − x2f (x) dx czyli
GCn+1f = π n + 1
n
X
k=0
f (xk) = π n + 1
n
X
k=0
f
cos 0.5 ∗ π + kπ n + 1
dla xk zer Tn+1 - n + 1 wielomianu Czebyszewa.
Zaimplementuj funkcj¦ function c=gaussczeb(FCN,n) oblicza-j¡c¡ warto±¢ kwadratury GCnf. Parametry - wska¹nik do funkcji function y=f(x) i ilo±¢ punktów kwadratury.
Przetestuj jej dziaªanie:
• policz przybli»enia caªek I(Tk2). Czy GCn(Tk2)przybli»a π/2 dla k > 0 dla n = 20, 40, 80?
• policz przybli»enie caªki z wielomianów ró»nych stopni dla n = 4, 10, 20 - czy kwadratura jest dokªadna dla wielomia-nów Czebyszewa stopnia 0 < k < 2n (tzn. czy zwraca zero)?
• dla funkcji matematycznej f(x) = exp(arccos(x)), której caªk¦ z t¡ wag¡ mo»emy obliczy¢ dokªadnie.
Porównaj warto±¢ kwadratury z wynikiem dokªadnym dla n = 10, 20, 40, 80, tzn. policz
en= |GCn(f ) − I(f )|
przyjmuj¡c za I(f) warto±¢ dokªadn¡.
• analogicznie do poprzedniego podpunktu tego zadania, porównaj wynik obliczony za pomoc¡ kwadratury Gaussa -Czebyszewa, tzn. GCn(f ), dla funkcji f(x) = exp(arccos(x)) z wynikiem obliczonym funkcj¡ quad(). Wypisz na ekran en= |GCn(f ) − c|dla c warto±ci uzyskanej za pomoc¡ funk-cji octave'a quad().
• Przetestuj rz¡d zbie»no±ci tej kwadratury dla funkcji f(x) = exp(arccos(x)), jak w przypadku kwadratury trapezów, tzn.
policz bª¦dy en, analogicznie do poprzednich podpunktów i wypisz en/e2n.
Zadanie 5 Zªo»ona kwadratura prostok¡tów.
(a) Zaprogramuj w octave funkcj¦
function c=kwadprost(FCN,a,b,n),
która zwraca warto±¢ zªo»onej kwadratury prostok¡tów dla funkcji f na odcinku [a, b] na n równoodlegªych punktach:
Pnf = h
n
X
k=1
f (a + (k − 0.5) ∗ h)), h = (b − a)/n.
Parametry funkcji:
• F CN - wska¹nik do funkcji octave'a postaci function y=f ( x )
y = . . . . endfunction
obliczaj¡cej warto±¢ funkcji, której caªk¦ chcemy obli-czy¢, tj. f(x), w danym punkcie x.
• a, b - ko«ce odcinka,
• n - ilo±¢ w¦zªów wykorzystywanych przez kwadratur¦.
Funkcja zwraca przybli»on¡ warto±¢ caªki obliczon¡ za po-moc¡ powy»szego wzoru, tzn. zªo»onej kwadratury prosto-k¡tów.
Funkcja powinna dziaªa¢ równie» je±li j¡ wywoªamy bez ostat-niego parametru. Wtedy n powinno domy±lnie przyj¡¢ usta-lon¡ warto±¢, np. dwie±cie.
(b) Testy dla funkcji, których caªki znamy.
Przetestuj t¦ funkcj¦ octave'a kwadprost() dla Nk = 2kN0 k = 0, 1, 2, . . .z ustalonym N0 = 5 licz¡c:
EN
E2N, EN = | Z b
a
f dt − PNf |
dla caªek z nast¦puj¡cych funkcji po odpowiednich odcin-kach:
• x2 na [0, 1]
• sin(x) na [0, π] i N0 = 5 - funkcja analityczna,
• sin(100∗x)na [0, π] i N0 = 5- funkcja analityczna silnie oscyluj¡ca (du»e warto±ci drugiej pochodnej),
• xj+0.5 na [0, 1] dla j = 0, 1, 2 czyli funkcji w Cj([0, 1]) i o nieograniczonej w otoczeniu zera j + 1 pochodnej.
Porównaj wyniki obliczane kwadratur¡ prostok¡tów z wyni-kami funkcji quad() .
Zadanie 6 Porównaj wyniki obliczane kwadratur¡ prostok¡tów z wynikami funkcji obliczaj¡cej caªk¦ za pomoc¡ zªo»onej kwadratury trape-zów.
Porównaj bª¦dy dla warto±ci N i f(x) z poprzedniego zadania -czyli caªek, których warto±¢ teoretycznie znamy - z wynikami dla obu kwadratur:
• dla tej samej ilo±ci wywoªa« funkcji f, tzn. porównaj PNf z TN −1f,
• porównaj obie kwadratury dla tego samego h, tzn. TNf z PNf, aby oceni¢ bª¡d w terminach parametru h = (b−a)/N.
Zadanie 7 Kwadratura Romberga.
(a) Zaprogramuj w octave funkcj¦
function c=Romberg(FCN,a,b,p,N0)
z kwadratur¡ Romberga Rp,N 0obliczaj¡c¡ przybli»enie caªki Rb
a f (t) dt.
Parametry funkcji:
• F CN wska¹nik do funkcji octave'a function y=f(x) obliczaj¡cej warto±¢ funkcji podcaªkowej
• a lewy koniec odcinka
• b prawy koniec odcinka
• pilo±¢ poziomów w kwadraturze Romberga
• N 0 startowa ilo±¢ punktów w kwadraturze Romberga Funkcja zwraca przybli»on¡ warto±¢ caªki obliczon¡ za po-moc¡ kwadratury Romberga.
Funkcja powinna dziaªa¢ równie» je±li j¡ wywoªamy tylko z trzema albo czterema parametrami. Parametr p powinien wtedy domy±lnie przyj¡¢ warto±¢ 5, a N0 warto±¢ sto.
(b) Przetestuj kwadratur¦ Romberga dla caªki Rabf dt dla na-st¦puj¡cych funkcji, odcinków i warto±ci parametrów N0 i p:
• sin(x) dla [0, π]
• sin(x) dla [0, 100 ∗ π]
• sin(10 ∗ x) dla [0, π]
• xj+0.5 na [0, 1] dla j = 0, 1, 2, . . . , 10, dla N0 = 100 i dla p = 2, 3, 4, 5, 6.
Czy dla √
x i rosn¡cego p bª¡d maleje?
Czy stosunek EN/E2N maleje tak samo dla wszystkich funk-cji?
Tutaj u»yli±my oznaczenia na bª¡d EN = |Rb
a f dt − Rp,N 0|.
Rozdziaª 8
Rozwi¡zywanie równa«
nieliniowych
W poni»szych zadaniach przetestujemy jak dziaªaj¡ cztery metody rozwi¡-zywania równa« nieliniowych skalarnych, tzn. metoda bisekcji, metoda New-tona, metoda siecznych i metoda iteracji prostych oraz dwie metody rozwi¡-zywania ukªadów równa« nieliniowych, czyli wielowymiarowa metoda New-tona i metoda iteracji prostych w najprostszej formie.
Zapoznamy si¦ równie» z funkcjami octave'a fzero() oraz fsolve ()
sªu-»¡cymi do rozwi¡zywania równa« nieliniowych skalarnych i ukªadów równa«
nieliniowych.
Zadanie 1 Zaimplementuj metod¦ bisekcji w skrypcie - dla rozwi¡zania rów-nania cos(x) = 0 na odcinku [0, 2]. Przetestuj, czy funkcja znaj-dzie dobre przybli»enie π/2.
Zadanie 2 Przetestuj metod¦ bisekcji z poprzedniego zadania do rozwi¡zania innych problemów:
x2 − 2 = 0 exp(x) = 2 cos(10 ∗ x) = 0 startuj¡c z odcinka [0, 110].
Zadanie 3 Napisz funkcj¦ octave'a:
function [ y , i t e r , kod]= b i s e k c j a (FCN, a , b , . . . tola , maxit ) ,
której parametrami b¦d¡
• wska¹nik do funkcji FCN (inaczej: function handle),
• a, b - ko«ce przedziaªu,
• tola - »¡dana tolerancja bezwzgl¦dna - bª¡d powinien by¢
mniejszy od tola,
• maxit - maksymalna ilo±¢ iteracji.
Funkcja ma zwróci¢
• y - przybli»one rozwi¡zanie,
• iter - ilo±¢ iteracji,
• kod - kod wyniku:
0 metoda zbiegªa,
1 - metoda zatrzymaªa si¦ z powodu przekroczenia mak-symalnej ilo±ci iteracji,
2 - warto±ci w ko«cach odcinka funkcji maj¡ ten sam znak.
Funkcja ma dziaªa¢ równie» je±li podamy tylko trzy lub cztery pierwsze argumenty - wtedy maksymalna ilo±¢ iteracji domy±lnie powinna wynosi¢ sto, a tolerancja 10−5.
Zadanie 4 Zapoznaj si¦ z pomoc¡ dla funkcji octave'a fzero() - rozwi¡zu-j¡c¡ skalarne równania nieliniowe, przetestuj j¡ na kilku prostych przykªadach skalarnych np.
• cos(x) = 0,
• x2− 2 = 0,
• x10− 2 = 0,
• x − sin(x) = 0
i innych prostych równaniach nieliniowych.
Prosz¦ przetestowa¢ t¦ funkcj¦ dla ró»nych warto±ci pocz¡tko-wego przedziaªu x0 = [a, b].
Zadanie 5 Zapoznaj si¦ z pomoc¡ dla funkcji octave'a fsolve () - rozwi¡zu-j¡c¡ ukªady równa« nieliniowych. Przetestuj j¡ na kilku prostych przykªadach skalarnych, np. na tych z poprzedniego zadania.
Zadanie 6 Zaimplementuj metod¦ Newtona w octavie i przetestuj jej zbie»-no±¢ dla nast¦puj¡cych funkcji:
f1(x)= x ∗ x − 2 z x0 = 2, f2(x)= x ∗ x ∗ x − 27 z x0 = 27,
f3(x)= exp(x) − 2 z x0 = 10, −10, 1e3, f4(x)= sin(x) dla x0 = 2,
f5(x)= cos(x) z x0 = 2
f6(x)= (x − 2)k x x0 = 3 dla k = 2, 4, 8, 16,
f7(x)= x ∗ x − 2 z x0 = 106, sprawd¹, czy metoda Newtona zbiega, a je±li tak - to czy zbiega ona kwadratowo, f8(x)= 1/x − a dla danych a = 0.5, 2, 4, 100 (oczywi±cie
imple-mentuj¡c bez dzielenia) jak dobra¢ x0?
Dla wszystkich tych funkcji znamy rozwi¡zania, wi¦c mo»na
wy-±wietla¢ równocze±nie na ekranie bª¡d en = xn− r
(tutaj r - znane rozwi¡zanie) i bada¢ eksperymentalnie rz¡d zbie»-no±ci, tzn. drukowa¢ na ekranie stosunki bª¦du bie»¡cego do po-przedniego w odpowiedniej pot¦dze:
|en|/|en−1|p dla p = 1, 2, 3.
Prosz¦ powtórzy¢ testy z innymi ró»nymi warto±ciami startowymi x0.
Zadanie 7 Powtórz zadanie 6 zast¦puj¡c metod¦ Newtona przez metod¦
siecznych.
Przetestuj, czy
en/(en−1en−2) asymptotycznie zbiega do staªej, i czy
|en|/|en−1|p dla p = (1 +√
5)/2 zbiega do staªej np. dla x ∗ x − 2 z x0 = 2 lub innych równa« z poprzedniego zadania.
Za x1 mo»emy przyj¡¢ x0+ 10−7.
Zadanie 8 Sprawd¹, czy metoda iteracji prostych xn= cos(xn−1) zbiega do x∗ = cos(x∗).
Zbadaj eksperymentalnie, czy zbie»no±¢ jest liniowa, tzn. czy
|x∗− xn|
|x∗− xn−1|
zbiega do staªej. Za dobre przybli»enie x∗ mo»na przyj¡¢ rozwi¡-zanie równania obliczone za pomoc¡ wywoªania funkcji octave'a:
fzero().
Zadanie 9 Zaimplementuj przybli»on¡ metod¦ Newtona, w której pochodn¡
przybli»amy ilorazem ró»nicowym, tzn.
xn+1= xn− f (xn)
f (xn+h)−f (xn) h
= xn− f (xn) ∗ h f (xn+ h) − f (xn) dla ustalonego h.
Przetestuj ró»ne h, np. h = 10−4, 10−7, 10−10 itp.
Porówna¢ zbie»no±¢ z dokªadn¡ metod¡ Newtona (szczególnie ostatnie iteracje) dla funkcji z zadania 6.
Zadanie 10 Rozwikªywanie funkcji:
Dla funkcji y(x) zadanej w sposób uwikªany równaniem g(x, y) = 2x2+ 3y2− 3 = 0
znajd¹ przybli»one warto±ci yk = y(xk) dla xk = k ∗ h dla k =
−N, . . . , N i h = 1/N, tzn. speªniaj¡ce g(xk, yk) = 0. Testuj dla ró»nych warto±ci N, np. N = 10, 20, 40, 80, ....
oblicz yk rozwi¡zuj¡c równanie
g(xk, yk) = 0.
korzystaj¡c z odpowiedniej funkcji octave'a lub wªasnej imple-mentacji metody Newtona.
Jak w kolejnych krokach dobiera¢ przybli»enie startowe w meto-dzie Newtona?
Zadanie 11 Odwracanie funkcji
Rozpatrzmy dan¡ funkcj¦, np.
f (x) = sin(x) + 2 ∗ x.
Znajd¹ warto±ci funkcji odwrotnej f−1 na odcinku [0, 5] na siatce k ∗ h dla k = 0, .., 100. Narysuj wykres funkcji f−1.
Sam wykres mo»na narysowa¢ du»o pro±ciej bez wyliczania war-to±ci f−1. Jak to zrobi¢ w octave'ie?
Zadanie 12 Wielowymiarowa metoda Newtona
Zaimplementuj wielowymiarow¡ metod¦ Newtona w wersji z do-kªadnym Jakobianem i w wersji, gdy Jakobian przybli»amy ró»-nicami dzielonymi z parametrem h.
Zastosuj t¦ metod¦ do rozwi¡zania ukªadu f1(x1, x2) = x1+ 2x2 = 1 f2(x1, x2) = 3 ∗ x21+ x22 = 1 dla ró»nych przybli»e« pocz¡tkowych.
W przypadku zbie»no±ci policz kx − xnkp kx − xn−1kqp
dla p = 1, 2, ∞ oraz q = 1, 2, 3. Czy ten iloraz zbiega do staªej dla jakiego± z tych q?
Funkcj¦ F (x) := (f1(x), f2(x))T w octavie mo»na zdeniowa¢ na-st¦puj¡co:
function y=F( x )
#x− wektor pionowy
y =[[1 2]∗ x −1;3.∗ x (1)∗ x(1)+x (2)∗ x (2) −1];
endfunction
Zadanie 13 Wielowymiarowa metoda iteracji prostych Zastosuj metod¦ iteracji prostych
xn= xn− aF (x)
do ukªadu z zadania 12, tzn. przyjmijmy, »e F (x) := (f1(x), f2(x))T, a parametr a 6= 0 np. a = 1, −1, 10−1 itp.
Czy metoda zawsze zbiega, a je±li tak - to jak szybko? W przy-padku zbie»no±ci policz
kx − xnkp
kx − xn−1kp dla p = 1, 2, ∞.
Zadanie 14 Do ukªadu równa« z zadania 12 zastosuj funkcj¦ fsolve () - po-równaj z implementacj¡ metody Newtona w zadaniu 12, która byªa zastosowana do rozwi¡zania tego ukªadu.
Czy obie metody zbiegaj¡ do tego samego rozwi¡zania dla tych samych warto±ci wektorów startowych?
Sprawd¹ - za pomoc¡ funkcji tic i toc - czas potrzebny do roz-wi¡zania tego ukªadu równa« za pomoc¡ obu metod.
Rozdziaª 9
Ukªady równa« liniowych -rozkªady typu LU i LL'
W tym rozdziale zapoznamy si¦ z metodami sªu»¡cych do rozwi¡zywania ukªadów równa« liniowych przy pomocy uzyskiwaniu odpowiednich rozkªa-dów macierzy typu LU i LLT oraz obliczaniu macierzy odwrotnej.
Zapoznamy si¦ z odpowiednimi funkcjami octave'a sªu»¡cymi znajdowa-niu odpowiednich rozkªadów, czy rozwi¡zywaznajdowa-niu ukªadów równa« liniowych z pomoc¡ tych rozkªadów.
Podstawowe funkcje i operatory octave'a zwi¡zane z rozkªadem LU to:
• [L,U,P]=lu(A) - funkcja zwracaj¡ca czynniki rozkªad LU nieosobliwej macierzy A, czyli P A = LU,
• [R]=chol(A) - funkcja zwracaj¡ca czynnik rozkªadu Choleskiego ma-cierzy symetrycznej dodatnio okre±lonej A = AT > 0, czyli A = RTR, (zazwyczaj w literaturze podaje si¦ ten rozkªad w terminach czynnika L = RT),
• operator x=A\b - operator rozwi¡zuj¡cy ukªad równa« Ax = b dla A macierzy nieosobliwej i b wektora prawej strony,
• inv(A) - funkcja zwracaj¡ca macierz odwrotn¡ do A macierzy nieoso-bliwej,
• cond(A) - funkcja zwracaj¡ca wspóªczynnik uwarunkowania macierzy A, czyli kAk2∗ kA−1k2.
Zadanie 1 Operator octave'a \ sªu»¡cy m.in. do rozwi¡zywaniu ukªadów równa« liniowych w octavie.
Przetestuj operator octave'a \ dla ukªadu równa« z macierz¡
A = [1, 2; 3, 4]i x = [1; 3] z f=A∗x. Czy y=A\f jest rozwi¡zaniem tego ukªadu?
Policz normy residualn¡ kAy − fkp i norm¦ bª¦du kx − xkp dla p = 1, 2.
Powtórz testy dla macierzy osobliwej [1, 2; 3, 6] i prawie osobliwej [1, 2; 3, 6 − 10−6]. Co si¦ wtedy dzieje?
Zadanie 2 Przetestuj solver octave'a, tzn operator backslash dla dwóch prostych ukªadów równa« liniowych z macierzami nieosobliwymi:
A1 = [1, 1; 1, 0.98]i b = [2; 1], A2 = [1, 1; 1, 0.99] i wektorem pra-wej strony ukªadu równa« liniowych b = [2; 1] jak w poprzed-nim zadaniu. Policz w normie drugiej ró»nic¦ rozwi¡za«, norm¦
Frobeniusa ró»nicy A1 − A2 oraz uwarunkowania tych macierzy korzystaj¡c z funkcji octave'a cond().
Powtórz zadanie dla macierzy: A1 = [1, 1; 1, 1 − 2] i b = [2; 1], A2 = [1, 1; 1, 1 − ] dla = 10−p z p = 3, 4, . . . , 16.
Zadanie 3 Funkcja inv().
Zapoznaj si¦ z pomoc¡ do funkcji: inv(). Przetestuj, obliczaj¡c macierz odwrotn¡ do A = [1, 1; 1, −1]. Czy macierz B obliczona za pomoc¡ tej funkcji rzeczywi±cie jest macierz¡ odwrotn¡?
Policz normy pierwsz¡ i Frobeniusa kA∗B −Ik oraz kB ∗A−Ik.
Zastosuj funkcje do rozwi¡zywania ukªadu równa« liniowych Ax = f dla znanego x (liczymy f = A ∗ x). Policz y jako iloczyn B z f i policz bª¦dy residualny kAy − fk i kx − yk w normie pierwszej i drugiej.
Powtórz to zadanie dla macierzy N ×N losowej (funkcja octave'a rand() zwraca macierz losow¡) dla n = 10, 50, 250, 1250 ze zna-nym rozwi¡zaniem - oszacuj czas przy pomocy funkcji tic i toc.
Porównaj czas i bª¦dy w normie pierwszej dla rozwi¡zania uzy-skanego przy pomocy operatora octave'a \.
Zadanie 4 Funkcje lu() i chol().
• Zapoznaj si¦ z pomoc¡ do funkcji: lu() i chol().
• Dla macierzy A = [1, 1; 1, −1] znajd¹ jej rozkªady: P A = LU i rozkªad Choleskiego A = LT1L1.
• Sprawd¹ te rozkªady licz¡c normy macierzowe pierwsz¡ i Frobeniusa bª¦dów np. P A − LU i A − LT1L1.
• Zastosuj te rozkªady do znalezienia rozwi¡zania ukªadu rów-na« liniowych Ax = f ze znanym rozwi¡zaniem np. x = [1; 1] i f = [2; 0].
• Policz normy pierwsz¡ i drug¡ wektorowe pomi¦dzy x, a wynikiem algorytmu w, polegaj¡cym na zastosowaniu od-powiedniego rozkªadu, oraz takie same normy residualne, tzn. normy Aw − f.
Zadanie 5 W octavie przetestuj eliminacje Gaussa z cz¦±ciowym wyborem i bez wyboru dla macierzy A = [e, 1; 1, 1] z e = eps/10 (funk-cja octave'a eps zwraca epsilon maszynowy) i wektorem prawej strony f = [1; 0]T. Trzeba tu zaprogramowa¢ samodzielnie elimi-nacj¦ Gaussa bez wyboru elementu gªównego, tzn. bez permuta-cji ani wierszy, ani kolumn dla macierzy 2 × 2.
Zadanie 6 Testy solvera octave'a dla macierzy Hilberta H(N) Polecenie octave'a hilb() tworzy macierz Hilberta.
• Stwórz macierz H(N) dla N = 10, 20, 30,
• Dla znanego rozwi¡zania, np. staªego równego jeden na ka»-dej pozycji, czyli solk= 1, policz H(N) ∗ sol = f,
• Rozwi¡» w octavie ukªad z H(N) i f,
• Policz normy (1,2 itd) kH(N)x − fk i kx − solk dla x roz-wi¡zania wyliczonego przez octave,
• Policz uwarunkowanie macierzy Hilberta dla powy»szych N.
Zadanie 7 Powtórz zadanie 6 w arytmetyce pojedynczej precyzji.
Nale»y tu sztucznie wymusi¢, za pomoc¡ funkcji octave'a single (), aby zmienne byªy zmiennymi pojedynczej precyzji.
Zadanie 8 Przetestuj funkcj¦ invhilb() tworz¡c¡ macierz odwrotn¡ do ma-cierzy Hilberta (por. zadanie 6).
• Policz normy: macierzowa norm¦ Frobeniusa i norm¦ macie-rzow¡ pierwsz¡ ró»nicy macierzy E = H(N)∗iH(N)−I dla N = 10, 20, 30, gdzie iH(N) macierz odwrotna do macierzy Hilberta obliczona przez invhilb().
• Wykorzystaj iH(N) do rozwi¡zania ukªadu równa« z ma-cierz¡ Hilberta H(N), tzn.:
(a) stwórz macierze H(N) oraz iH(N) dla N = 10, 20, 30 korzystaj¡c z funkcji hilb() i invhilb(),
(b) dla znanego rozwi¡zania sol, policz H(N) ∗ sol = f, (c) rozwi¡» ukªad H(N)x = f mno»¡c f przez iH(N), tzn.
x = iH(N ) ∗ f,
(d) policz normy kH(N)x−fkp i kx−solkpdla p = 1, 2, ∞.
Zadanie 9 Stwórz w octavie macierz trójdiagonaln¡ A = (aij)ni,j=1 wymiaru n × n z 2 na diagonali i −1 na pod- i nad diagonal¡, tzn.
ai,j =
2 i = j
−1 |i − j| = 1 0 |i − j| > 1
, i, j = 1, . . . , n.
przy pomocy funkcji octave'a diag(), jak i wprost w p¦tli. Po-równaj czas u»ywaj¡c tic i toc dla n = 10, 100, 1000.
Policz uwarunkowanie macierzy dla ró»nych N.
Policz macierz odwrotn¡ przy pomocy inv() (czy jest trójdiago-nalna?).
Zadanie 10 Sprawd¹ z wykorzystaniem funkcji octave'a chol(), czy macierz z zadania 9 jest symetryczna i dodatnio okre±lona.
Zadanie 11 Zaimplementuj rozkªad LU dla macierzy trójdiagonalnej N × N bez wyboru elementu gªównego, tzn. stwórz wªasn¡ funkcj¦
octave'a:
function [x,d,l]=lu3diag(a,b,c, f ,N) Parametry funkcji:
• a, b, c- przek¡tna, podprzek¡tna i nadprzek¡tna macierzy A,
• f - wektor prawej strony,
• N - wymiar zadania - dªugo±¢ przek¡tnej a.
Funkcja powinna zwróci¢ x - rozwi¡zanie Ax = f oraz czynniki rozkªadu macierzy A = LU, czyli diagonal¦ macierzy górnotrój-k¡tnej U w wektorze d i poddiagonal¦ L - macierzy dolnotrójk¡t-nej, trójdiagonalnej z jedynkami na diagonali, czyli wektor l.
Naddiagonala U równa si¦ nadiagonali A, tzn. wektorowi c.
Zadanie 12 Zastosuj funkcj¦ z zadania 11 do uzyskania rozkªadu LU macierzy z zadania 9 dla N = 4, 10, 15. Porównaj z wynikiem uzyskanym przy pomocy funkcji octave'a lu().
Zadanie 13 Zastosuj funkcj¦ z zadania 11 do rozwi¡zania ukªadu równa« z macierz¡ z zadania 9 dla N = 10, 100, 1000, czy 10000:
• Rozwi¡» ukªad dla znanego rozwi¡zania, np. x = (1, . . . , 1)T,
• Porównaj czas rozwi¡zywania wªasnym algorytmem i algo-rytmem octave'a, czyli operatorem A\f,
• Policz bª¡d rezydualny i bª¡d rzeczywisty w normie drugiej, tzn. kx − ˜xk2 i kf − A ∗ ˜xk2, gdzie f = A ∗ x, a ˜x to rozwi¡zanie obliczone przez octave'a lub obliczone wªasnym algorytmem.
Zadanie 14 Zaimplementuj rozkªad LU dla macierzy trójdiagonalnej z
cz¦-±ciowym wyborem elementu gªównego.
Nast¦pnie testuj ten rozkªad jak w zadaniu 13.
Zastosuj ten rozkªad do rozwi¡zania ukªadu równa« z macierz¡ z poprzedniego zadania A i z macierz¡ A − 1.5 ∗ I.
Zadanie 15 Zaprogramuj rozkªad Choleskiego typu dla macierzy A = AT > 0 trójdiagonalnej, tzn. policz L dolnotrójk¡tn¡ z jedn¡ poddia-gonal¡ (czyli reprezentowan¡ przez dwa wektory z przek¡tn¡ i podprzek¡tn¡) tak¡, »e A = LTL.
Zastosuj do rozwi¡zania ukªadu równa« z zadania 9.
Testuj analogicznie do zadania 13.
Porównaj macierz L uzyskan¡ w ten sposób z macierz¡ uzyskan¡
przez chol() zastosowan¡ do tej samej macierzy.
Rozdziaª 10
LZNK. Rozkªad QR. Metoda Householdera
W tym rozdziale zajmiemy si¦ liniowym zadaniem najmniejszych kwadratów (LZNK).
Dla danej macierzy A wymiaru M × N i wektora b wymiaru M chcemy znale¹¢ wektor x wymiaru N taki, »e
kAx − bk2 = min
y kAy − bk2.
Je±li A jest macierz¡ kolumnami regularn¡ (rz¡d A jest maksymalny równy N), to zadanie to ma jednoznaczne rozwi¡zanie i nazywamy je regularnym LZNK (RLZNK).
Podstawowym algorytmem sªu»¡cym jego rozwi¡zaniu jest metoda Ho-useholdera, czyli znalezienia rozkªadu QR macierzy A, gdzie Q to macierz ortogonalna - iloczyn macierzy Householdera, a R to macierz górnotrójk¡tna.
W tym rozdziale przetestujemy podstawowy operator octave'a sªu»acy do rozwi¡zywania dowolnego LZNK, tzn. operator \. Zauwa»my, »e je±li M = N i A jest macierz¡ kolumnami regularn¡, to A jest nieosobliwa i to regularne LZNK jest równowa»ne rozwi¡zaniu ukªadu równa« liniowych Ax = b.
Przetestujemy w zadaniach funkcj¦ octave'a qr() sªu»¡c¡ znajdowaniu rozkªadu QR macierzy, kilka wªasno±ci macierzy (przeksztaªce«) Househol-dera i rozwi¡»emy kilka konkretnych LZNK.
Zadanie 1 Operator octave'a \ sªu»¡cy m.in. do rozwi¡zywaniu ukªadów równa« liniowych i LZNK w octavie.
• Przetestuj operator octave'a \ rozwi¡zuj¡c RLZNK dla ma-cierzy A ze znanym konkretnym rozwi¡zaniem x:
A = [1, 1; 1, −1; 1, 3], x = [1; 2]
przyjmuj¡c, »e f = Ax.
Czy y=A\f jest rozwi¡zaniem tego ukªadu?
Policz normy residualn¡ kAy − fk2 i norm¦ bª¦du kx − yk2.
• Przetestuj ten operator dla nieregularnego LZNK dla ma-cierzy AT z x = [1; 1; 1] i f = Ax.
Czy y=A'\f jest rozwi¡zaniem tego ukªadu?
Policz normy residualn¡ kATy − f k2 i norm¦ bª¦du kx−yk2. Zadanie 2 Rozkªad QR w octave. Funkcje qr().
(a) Zapoznaj si¦ z pomoc¡ do funkcji: qr().
(b) Dla macierzy A = [1, 1; 1, −1; 1, 3] znajd¹ jej rozkªad A = QR z pomoc¡ funkcji qr().
(c) Sprawd¹, czy uzyskana Q jest ortogonalna - policz normy Frobeniusa QQT − I i QTQ − I.
(d) Sprawd¹ ten rozkªad licz¡c normy macierzowe: norm¦ drug¡
i norm¦ Frobeniusa bª¦du A − QR.
(e) Zastosuj ten rozkªad do znalezienia rozwi¡zania LZNK Ax = f ze znanym rozwi¡zaniem, np. x = [1; 0] i f = [1; 1; 1].
(f) Policz norm¦ drug¡ wektorow¡ pomi¦dzy x, a wynikiem al-gorytmu w, polegaj¡cym na zastosowaniu odpowiedniego rozkªadu oraz takie same normy residualne, tzn. normy dru-gie Aw − f oraz Rw − QTf.
Zadanie 3 Ukªad równa« normalnych, a rozkªad QR.
Rozpatrzmy macierz A2n,k - pod-macierz wymiaru 2n × k ma-cierzy Vandermonde'a A2n,2n dla 2n w¦zªów równoodlegªych na [0, 1].
LZNK z A2n,k z wektorem prawej strony f równym pierwszej kolumnie tej macierzy (rozwi¡zanie to pierwszy wersor) rozwi¡»
trzema sposobami:
(a) u»ywaj¡c operator \,
(b) u»ywaj¡c rozkªad QR uzyskanym funkcj¡ qr(),
(c) poprzez rozwi¡zanie ukªadu równa« normalnych:
Bx = g dla
B = AT2n,kA2n,k, g = AT2n,kf,
tzn. tworzymy macierz ukªadu równa« normalnych B, wek-tor prawej strony g ukªadu równa« normalnych, a nast¦pnie rozwi¡zujemy ukªad równa« normalnych operatorem \ . Macierz Vandermonde'a mo»na w octave'ie utworzy¢ za pomoc¡
funkcji vander().
Przeprowad¹ testy dla N = 10, 20, 40, 80 i k = 2, 4, n. Porównaj
• czas oblicze«
• bª¡d - kx − yk2
• bª¡d residualny kAx − fk2
dla x rozwi¡zania dokªadnego LZNK, f wektora prawej strony LZNK, y przybli»enia rozwi¡zania uzyskanego dan¡ metod¡.
Zadanie 4 Rozkªad QR a operator \ przy rozwi¡zywaniu ukªadów równa«
liniowych,
Rozpatrzmy macierz An,n Vandermonde'a dla n w¦zªów równo-odlegªych na [0, 1].
Ukªad równa« liniowych z wektorem prawej strony równym pierw-szej kolumnie tej macierzy (rozwi¡zanie to pierwszy wersor) roz-wi¡» dwoma sposobami:
(a) operatorem \,
(b) rozkªadem QR uzyskanym funkcj¡ qr(), Przetestuj dla N = 10, 20, 40, 80. Porównaj
• czas oblicze«,
• bª¡d kx − yk2,
• bª¡d rezydualny: kAx − fk2,
dla x rozwi¡zania dokªadnego tego ukªadu równa«, f wektora prawej strony ukªadu i y przybli»enia rozwi¡zania uzyskanego dan¡ metod¡.
Zadanie 5 Krzywa najlepiej pasuj¡ca do danych punktów.
Zastosuj octave'a do znalezienia wspóªczynników a, b krzywej naj-lepiej pasuj¡cej do zadanych punktów: (xk, yk), tzn. znajd¹ takie a, b, »e
X
k
|ax2k+ by2k− 1|2 = min
c,d
X
k
|cx2k+ dyk2− 1|2. Za (xk, yk) przyjmiemy zaburzone punkty z danej elipsy
yk = q
1 − 4 ∗ x2k+ zk,
gdzie zk to zaburzenie wylosowane z [0, 10−2] a xk = 1/k lub xk = −1 + h ∗ k dla h = 2/N k = 1, ..., N.
Czy obliczone a i b jest bliskie 4 i 1?
W jednym oknie zaznacz punkty (xk, yk) plusami oraz narysuj fragmenty wykresów obu elips: pierwszej - dla a = 4, b = 1 i drugiej elipsy - dopasowanej do zaburzonych punktów.
Powtórz obliczenia dla ró»nych zaburze« zk. Zadanie 6 Zaprogramuj funkcj¦ octave'a
function y=H(x ,w, nw)
która dla danych wektorów ~x i ~w tego samego wymiaru N i ska-laru nw = kwk2 zwróci wektor y = Hw~x dla
Hw = I − 2 ∗ 1 nww ~~wT czyli przeksztaªcenia (macierzy) Householdera.
Skalar mo»e by¢ parametrem opcjonalnym. Je±li funkcja b¦dzie wywoªana z dwoma tylko parametrami, to norm¦ w mo»na obli-czy¢ w tej funkcji.
Przetestuj t¦ funkcj¦ dla losowych wektorów ~x i ~w i sprawd¹, czy kHw~xk2 = k~xk2, Hw(Hwx) = x.
Zadanie 7 Napisz ogólniejsz¡ wersj¦ funkcji z poprzedniego zadania, tzn.:
funkcj¦:
function Y=Hm(X,w, nw) ,
gdzie X macierz N × M i wtedy zwracany wynik to macierz Y = Hw ∗ X . Pozostaªe dwa parametry funkcji pozostan¡ bez zmian.
Czy mo»na zaimplementowa¢ tak¡ funkcj¦ bez u»ycia p¦tli?
Sprawd¹, wykorzystuj¡c t¦ funkcj¦, czy mno»enie przez macierz Householder nie zmienia norm macierzowych drugiej i Frobe-niusa, tzn. czy:
kAk2 = kHw ∗ Ak2 = kA ∗ Hwk2 i
kAkF = kHw∗ AkF = kA ∗ HwkF
dla losowej macierzy A i Hw macierzy Householdera dla losowego wektora w 6= 0.
Zadanie 8 Znajd¹ wektor Householdera ~w taki, »e odpowiednie przeksztaª-cenie Householdera przeprowadza dany wektor ~u 6= 0 na kierunek drugiego danego niezerowego wektora l ∗ ~v 6= 0 dla l = kvkkuk22. Przetestuj dla dowolnych dwóch ró»nych wektorów o tej samej dªugo±ci, czy rzeczywi±cie Hw~u = ~v.
Zadanie 9 Zastosuj metod¦ Householdera do rozwi¡zania zadania znalezie-nia prostej y = ax+b najlepiej przybli»aj¡cej N punktów (xk, yk) = (k, 1 + 2 ∗ k + k) dla k = 1, . . . , N gdzie (1, . . . , N) to losowy wektor za zakresu [−, ], tzn.:
X
k
|axk+ b − yk|2 = min
c,d
X
k
|cxk+ d − yk|2.
Nale»y testowa¢ dla warto±ci = [1, 10−1, 10−2, 10−3].
Funkcja rand(n) generuje wektor losowy o rozkªadzie jednostaj-nym na [0, 1] w octavie.
Porównaj z wynikami otrzymanymi za pomoc¡ standardowej funk-cji octave'a, tzn. \ , oraz przy wykorzystaniu funkfunk-cji octave'a qr(A).
Zadanie 10 Zaprogramuj metod¦ Householdera rozwi¡zywania ukªadu rów-na« liniowych A~x = ~b dla A macierzy trójdiagonalnej N × N, tzn. napisz funkcj¦ octave'a:
function [x]=hous3diag(a,b,c,f,N) Parametry funkcji:
• a, b, cprzek¡tna, pod-przek¡tna i nad-przek¡tna macierzy A,
• f - wektor prawej strony,
• N - wymiar zadania - dªugo±¢ przek¡tnej a.
Funkcja zwraca x rozwi¡zanie Ax = f.
Przetestuj dziaªanie funkcji analogicznie do zadania 4 dla macie-rzy trójdiagonalnej o staªych diagonalach, np. takiej, »e elementy na gªównej diagonali s¡ równe dwa, a elementy na pod- i nad-diagonalach s¡ równe minus jeden dla N = 10p z p = 1, 2, . . . , 9..
Za wektor prawej strony f mo»emy przyj¡¢ pierwsz¡ kolumn¦
macierzy A.
Rozdziaª 11
Numeryczne zadanie wªasne
W tym rozdziale zajmiemy si¦ symetrycznym zadaniem wªasnym, tzn. za-daniem znajdowania warto±ci i/lub wektorów wªasnych dla macierzy syme-trycznej A = AT. W zadaniach zbadamy, jak dziaªa podstawowa funkcja octave'a rozwi¡zuj¡ca zadanie wªasne, tzn. funkcja octave'a eig() oraz zba-damy zbie»no±¢ ró»nych wersji metody pot¦gowej.
Metoda pot¦gowa jest zdeniowana nast¦puj¡co: dla dowolnego wektora ˆ
x0 = x0 o normie drugiej równej jeden (np. losowego), deniujemy ci¡g iteracji metody pot¦gowej nast¦puj¡co:
ˆ
xk = Axk−1 (iteracja)
xk = kˆxxˆk
kk2 (normowanie)
rk = xTkAxk (iloraz Rayleigha)
k > 0 (11.1) Zgodnie z teori¡, o ile x0 nie jest ortogonalny do wektora wªasnego (pod-przestrzeni wªasnej) dla najwi¦kszej warto±ci wªasnej, to x2kzbiegnie do tego wektora wªasnego, a rk - iloraz Rayleigha - do tej warto±ci wªasnej.
Zadanie 1 Zapoznaj si¦ z pomoc¡ do funkcji octave'a eig().
Za jej pomoc¡ oblicz warto±ci wªasne macierzy
0 1 1 1 0 1 1 1 0
.
Sprawd¹, czy dla λ warto±ci wªasnej A prawd¡ jest, »e wyznacznik A − λ ∗ I wynosi zero.
Wyznacz macierz V tak¡, »e jej kolumny to wektory wªasne A.
Przetestuj w normie macierzowej Frobeniusa, czy kAV − ΛV k2
wynosi zero. Tutaj Λ - to macierz diagonalna z warto±ciami wªa-snymi A.