Upload
duongtu
View
217
Download
0
Embed Size (px)
Citation preview
Zadania i scenariusze zaj¦¢ z laboratorium
komputerowego do wykªadu z Matematyki
Obliczeniowej
Leszek Marcinkowski
12 grudnia 2011
Streszczenie
W skrypcie przedstawimy zestawy zada« do odbywaj¡cego si¦ co dwa tygo-dnie laboratorium komputerowego do semestralnego wykªadu z MatematykiObliczeniowej. Zakªadamy, »e zadania zostan¡ rozwi¡zane przy wykorzysta-niu pakietu oblicze« numerycznych octave albo pakietu matlab.
Spis tre±ci
1 Wst¦p 2
2 Wst¦pne zapoznanie si¦ z octavem 5
3 Obliczenia w arytmetyce zmiennopozycyjnej 9
4 Interpolacja Lagrange'a, bazy wielomianów 13
5 Splajny kubiczne i liniowe. Interpolacja splajnowa 20
6 Wielomiany Czebyszewa 25
7 Kwadratury 31
8 Rozwi¡zywanie równa« nieliniowych 37
9 Ukªady równa« liniowych - rozkªady typu LU i LL' 43
10 LZNK. Rozkªad QR. Metoda Householdera 48
11 Numeryczne zadanie wªasne 54
12 Algorytm FFT 60
13 Przykªadowe projekty zaliczeniowe 64
1
Rozdziaª 1
Wst¦p
Celem zada« komputerowych przeprowadzanych w laboratorium komputero-wym jest przetestowanie numerycznych metod omawianych w czasie wykªadui ¢wicze« z Matematyki Obliczeniowej.
Zadania komputerowe przedstawione w tym zbiorze polegaj¡ na imple-mentacji metod numerycznego rozwi¡zywania zada« z wykorzystaniem pa-kietu octave, czyli ±rodowiska oblicze« numerycznych-naukowych i przete-stowaniu funkcji octave'a, które s¡ w stanie rozwi¡za¢ zadania omawiane wtrakcie kursu Matematyki Obliczeniowej.
Cz¦±¢ funkcji octave'a wywoªuje odpowiedni¡ bibliotek¦ numeryczn¡, wktórej jest zaimplementowana odno±na - zazwyczaj zaawansowana - metoda.Ale cz¦±¢ funkcji octave'a jest zaimplementowana wprost w samym octave'ie.Cz¦sto nie wiemy jakiej metody numerycznej u»ywa octave. Szczególnie, »ekolejne wersje tego pakietu u»ywaj¡ innych bibliotek, mimo »e nazwa funkcji- np. rozwi¡zuj¡cej równanie nieliniowe - jest wci¡» taka sama.
Pakiet octave jest zarówno ±rodowiskiem oblicze« numerycznych, jak ij¦zykiem programowania. Umo»liwia on proste rozwi¡zywanie podstawowychzada« numerycznych jak: numeryczne obliczenie caªki, rozwi¡zanie zada«liniowych lub nieliniowych, równa« ró»niczkowych zwyczajnych itp. Mo»nago u»ywa¢ z linii komend, pisa¢ wªasne skrypty, czy m-pliki (czyli pliki zimplementacjami wªasnych funkcji octave'a).
Pakiet octave jest programem ogólnodost¦pnym jako wolne oprogramo-wanie. Rozprowadzany jest na zasadach licencji GNU GPL. Warto doda¢, »epakiet octave jest odpowiednikiem ±rodowiska matlab, które jest programemkomercyjnym, szeroko stosowanym do oblicze« numerycznych.
Zadania z tego zbioru s¡ sformuªowane tak, »e bez kªopotów mog¡ by¢wykonane zarówno w octave, jak i w ±rodowisku matlaba.
Zalet¡ octave'a jest to, »e jest on dost¦pny bez opªat. Octave jest dystry-buowany w wersjach binarnych zarówno pod ró»ne dystrybucje Linuxa, jak i
2
w wersji binarnej pod system Windows.Poni»ej zaª¡czamy link do stron octave'a:
1. Gªówna strona octave'a
2. Rozbudowany podr¦cznik do octave'a - w j¦zyku angielskim dost¦pnyon-line.
3. Strona z linkami do plików z octavem
4. Strona octave-forge'a - czyli rozszerze« octave'a
Podstawowym podr¦cznikiem do kursu z matematyki obliczeniowej jestksi¡»ka [11]. Innymi wartymi polecenia podr¦cznikami w j¦zyku polskim s¡np. [8], [3], [17] i [1], [16]. W j¦zyku angielskim opublikowano wiele podr¦cz-ników do matematyki obliczeniowej, inaczej nazywanej te» metodami nume-rycznymi, czy analiz¡ numeryczn¡. Niektóre z nich zawieraj¡ zadania kompu-terowe. Warto poleci¢ ksi¡»ki: [15], [14]. Obie zawieraj¡ wi¦cej materiaªu ni»standardowy kurs matematyki obliczeniowej na wydziale Matematyki, Infor-matyki i Mechaniki Uniwersytetu Warszawskiego. Innymi wartymi poleceniapodr¦cznikami i monogra�ami dotycz¡cymi metod numerycznych s¡: [5], [6],[2], [12], [13], [9], [18], [10], [7] i inne. Niektóre z tych podr¦czników obejmuj¡tylko cz¦±¢ materiaªu z wykªadu matematyki obliczeniowej lub wykraczaj¡poza ten materiaª.
Je±li chodzi o pakiet octave - polecamy przeczyta¢ manual, tzn. [4] do-st¦pny w dziale dokumentacji na stronach octave'a on-line pod adresem:http://www.gnu.org/software/octave/.
Zadania w tym zbiorze s¡ podzielone na rozdziaªy. Standardowe zaj¦ciaz laboratorium komputerowego do Matematyki Obliczeniowej polegaj¡ za-zwyczaj na rozwi¡zaniu kilku zada« z zadanego tematu. Pozostaªe zadaniamog¡ zosta¢ ewentualnie zadane do rozwi¡zania samodzielnego.
Zaj¦cia z laboratorium do Matematyki Obliczeniowej na wydziale Mate-matyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego odbywaj¡ si¦co dwa tygodnie, wi¦c ilo±¢ rozdziaªów w tym skrypcie przewy»sza standar-dow¡ liczb¦ zaj¦¢. Prowadz¡cy zaj¦cia mo»e wybra¢, które rozdziaªy omówi¢na zaj¦ciach. Zadania w poszczególnych rozdziaªach s¡ tak skomponowane,»e standardowy scenariusz zaj¦¢ dotycz¡cych tematu danego rozdziaªu powi-nien obejmowa¢ kilka pierwszych zada«. Prowadz¡cy zaj¦cia mo»e dokona¢samodzielnego wyboru zada«, pomijaj¡c niektóre z nich.
3
Rozdziaª 2
Wst¦pne zapoznanie si¦ z octavem
Wprzypadku przeznaczenia dwóch laboratoriów scenariusz ka»dych zaj¦¢ po-lega na rozwi¡zaniu mo»liwie du»ej ilo±ci kolejnych zada« z tego rozdziaªu.W przypadku jednych zaj¦¢ nale»y dokona¢ wyboru rozwi¡zuj¡c tylko kilka-najwa»niejszych pozycji z listy zada«.
Zadania w tym rozdziale ilustruj¡ podstawowe operacje, struktury i wªa-sno±ci octave'a. Przedstawimy w zadaniach octave jako kalkulator naukowy.Omówimy te» operator dwukropek sªu»¡cy np. tworzeniu indeksów. Prze-testujemy, jak tworzy¢ macierze, wektory; jak zapisywa¢ zmienne do plików(czyta¢ z plików) w formatach: tekstowym i binarnym. Sprawdzimy two-rzenie macierzy z podmacierzy, wycinanie podmacierzy i inne podstawoweoperacje na macierzach - mno»enie, dodawanie, transponowanie, funkcje ma-tematyczne od macierzy, normy wektorów/macierzy.
Zadania obejmuj¡ równie» tworzenie wykresów funkcji matematycznychprzy pomocy funkcji octave'a plot(). Sprawdzimy te» tworzenie i u»ywanieskryptów i funkcji (m-pliki) w octavie, oraz podstawowe instrukcje warun-kowe i p¦tle:
• if else endif;
• switch case endswitch
• while( ) do endwhile;
• do .. until( );
• for .. endfor.
Zadania obejm¡ te» wska¹niki do funkcji (function handle) i operator @ -zwracaj¡cy wska¹nik do funkcji.
5
Zadanie 1 Octave jako kalkulator. Otwórz sesj¦ octave'a. Zapoznaj si¦z pomoc¡ do funkcji sqrt() oraz sin(). Policz w octave'ie, ilewynosi pierwiastek z 5 oraz policz warto±¢ funkcji sin na tympierwiastku.
Zadanie 2 Operacje macierzowe. Operator dwukropek.
• Utwórz wektor z liczbami od 1 do 20 oraz wektor ze wszyst-kimi liczbami parzystymi od −6 do 4.
• Utwórz dowolne macierze 3x4 A i 3x5 B, a nast¦pnie macierz3x8 C, której pierwsze 3 kolumny to A, a kolejne to B.
• Z macierzy C 'wytnij' podmacierz D skªadaj¡c¡ si¦ z 1 gªów-nego minora tzn. 3x3 od C(1,1) do C(3,3).
• Zamie« kolejno±¢ kolumn D.
• Zamie« kolejno±¢ wierszy D.
• Wytnij dolnotrójk¡tn¡, a potem górnotrójk¡tn¡ cz¦±¢ ma-cierzy D
• Wstaw D z powrotem do C jako gªówny minor.
• Policz sin(D) = (sin(Dij) od D.
• Zapisz D do pliku (binarnego i ASCII) - zamie« elementD(1,1) na -100 i wczytaj now¡ macierz do octave'a.
Zadanie 3 Funkcje matematyczne od macierzy. Normy macierzy iwektorów
Policz dyskretn¡ norm¦ maksimum od (sin(x))2 na [0, 1] (wektorowo-czyli bez u»ycia p¦tli).
Zadanie 4 Wykresy funkcji matematycznych.
• Narysuj wykres funkcji sin(x) na odcinku [0, 4].
• Narysuj wykres funkcji sin(x) na odcinku [0, 4] - wykres po-winien by¢ podpisany, narysowany za pomoc¡ gwiazdek wkolorze czerwonym.
• Narysuj w jednym oknie podpisane wykresy funkcji sin(x) ilog(x) na odcinku [1, 6] podpisane odpowiednio.
Zadanie 5 Znajd¹ przybli»one maksimum i minimum funkcji
f(x) = x ∗ (3 + 2 ∗ cos(x))
6
na odcinku [−1, 5] bez u»ycia p¦tli, oraz przybli»enia punktówekstremalnych.
Powtórz to zadanie dla jakiego± wielomianu stopnia dwa i trzynp. x3 + x2 − x− 4.
Zadanie 6 Funkcje w octave'ie, m-pliki, czyli tzw. pliki funkcyjne.
Utwórz funkcj¦ w m-pliku obliczaj¡c¡ dla zadanego x warto±¢funkcji
f(x) = (sin(x))2.
Zadanie 7 Zmienne globalne
Utwórz m-plik z funkcj¡ octave'a obliczaj¡c¡ warto±¢ funkcji ma-tematycznej z parametrem: sin(a ∗ x) - parametr przeka» jakozmienn¡ globaln¡.
Zadanie 8 Implementacja wektorowa funkcji w octave'ie.
Utwórz m-plik z funkcj¡ obliczaj¡cy warto±¢ funkcji f(x) = 1 +(cos(x))2 dla argumentu b¦d¡cego macierz¡, tzn. je±liX = (xi,j)i,jmacierz wymiaru M ×N , to funkcja powinna zwróci¢ Y macierzwymiaru M ×N tak¡, »e
Y = (yi,j)i,j, yi,j = f(xi,j).
Narysuj wykres f na odcinku [−1, 5] z wykorzystaniem tylko jed-nego wywoªania tak zaimplementowanej funkcji octave'a.
Zadanie 9 Funkcje anonimowe.
Utwórz funkcj¦ uchwyt do funkcji anonimowej, która dla danegoargumentu x zwraca warto±¢ równ¡ (sin(x))2.
Zadanie 10 P¦tle, instrukcje warunkowe, instrukcja printf ().
• Zapoznaj si¦ z pomoc¡ octave'a do p¦tli while, p¦tli for,instrukcji warunkowej if oraz funkcji drukuj¡cej napisy naekranie printf().
• Przy pomocy p¦tli
for ( k = . . . )
endfor
7
while ( warunek stopu )
endwhile
oblicz sum¦SN = 1 + ...+N
dla N = 100.
• U»yj instrukcji warunkowej
i f ( )
endif
by sprawdzi¢, czy otrzymane SN zostaªo obliczone popraw-nie, tzn. czy otrzymali±my 0.5 ∗N ∗ (N + 1)
• wyprowad¹ na ekran komunikat u»ywaj¡c
printf ( )
8
Rozdziaª 3
Obliczenia w arytmetyce
zmiennopozycyjnej
Zadania z tego rozdziaªu powinny wykaza¢ pewne charakterystyczne wªasno-±ci arytmetyki zmiennopozycyjnej.
W octavie wykorzystywane s¡ domy±lnie liczby zmiennopozycyjne o po-dwójnej precyzji, jakkolwiek w najnowszych wersjach octave'a mo»na równie»sztucznie wymusi¢ u»ywanie zmiennych w precyzji pojedynczej przy pomocyfunkcji single (a) zwracaj¡cej zmienn¡ pojedynczej precyzji z t¡ sam¡ war-to±ci¡.
Jedn¡ z wa»nych wªasno±ci arytmetyki zmiennopozycyjnej, która wynikaz jej konstrukcji, jest to, »e odejmowanie dwóch warto±ci o tym samym znakuo maªej ró»nicy mo»e skutkowa¢ du»¡ utrat¡ dokªadno±ci wzgl¦dnej.
Zadanie 1 Funkcje single (a) i eps. Wywoªaj pomoc do tych funkcjiw octave'ie. Sprawd¹, czy prawd¡ jest, »e 1 + eps obliczone warytmetyce podwójnej precyzji w octave'ie jest wi¦ksze od jeden.Przyjmij, »e a = single(eps) i sprawd¹, czy ponownie 1 + a jestwi¦ksze od jeden.
Zadanie 2 Epsilon maszynowy w arytmetyce podwójnej precyzji
Wyznacz samodzielnie epsilon maszynowy - czyli najmniejsz¡liczb¦ w arytmetyce zmiennopozycyjnej tak¡, »e po dodaniu jejdo jeden otrzymujemy liczb¦ wi¦ksz¡ od jeden. B¦dziemy szukaliliczby postaci 2−t dla t - ilo±ci bitów mantysy. Porównaj z epskomend¡ octave'a. Zadanie mo»na te» wykona¢ w C/C++. Czyotrzymane wyniki s¡ takie same jak te otrzymane w octavie (dlaliczb typu double)?
9
Zadanie 3 Epsilon maszynowy w arytmetyce pojedynczej precyzjiPowtórz poprzednie zadanie dla arytmetyki pojedynczej precyzji.Funkcja octave'a single (x) tworzy zmienne takiego typu. Wyko-rzystuj¡c t¦ funkcj¦ ponownie wyznacz epsilon maszynowy jakoliczb¦ postaci 2−t, ale dla liczb w pojedynczej precyzji.
Zadanie 4 Narysuj wykres funkcji f(x) = (x + a) − a na [0, 1] dla ró»nychwarto±ci a = 10k dla k = 1, 2, .., 20. Tutaj wa»ne jest aby oblicza¢warto±¢ f(x) dokªadnie ze wzorów: b = (x − a), f(x) = b − a,cho¢ matematycznie f(x) = x.
Zadanie 5 Policzf(x) = x−
√1 + x ∗ x
algorytmem wprost wynikaj¡cym z tego wzoru, a nast¦pnie zwykorzystaniem równowa»nego wzoru
f(x) =−1
x+√
1 + x ∗ x
tzn. prosz¦ zastosowa¢:
Algorytm 1a =√
1 + x2 w1 = x− a
oraz
Algorytm 2
a =√
1 + x2 w2 =−1
x+ a
dla x = 10k i k = 4, . . . , 10. Czy wida¢ ró»nic¦ w wyniku?
Powtórz zadanie w arytmetyce pojedynczej precyzji, tzn. z wy-korzystaniem funkcji octave'a single (x).
Zadanie 6 Wykres wielomianu na dwa sposoby
Oblicz warto±ci wielomianu
(x− 2)4 = x4 − .....+ 16
na siatce równomiernej 1000 punktowej na [2− a, 2 + a] dla a =10−3 za pomoc¡ dwóch algorytmów:Algorytm 1
a = (x− 2), f1(x) = a4;
10
Algorytm 2
f2(x) = x ∗ x ∗ x ∗ x− . . .+ 16.
Matematycznie f1 ≡ f2, ale wyniki obliczone w arytmetyce zmien-nopozycyjnej mog¡ si¦ ró»ni¢.
Narysuj wykresy obu funkcji i policz bª¡d ‖f1(x)−f2(x)‖∞, czylimaxk |f1(x(k) − f2(x(k))|. Tu x(k) = 2 − a + k ∗ h dla h =a/500. Wektor x mo»na utworzy¢ w octavie przy pomocy funkcjioctave'a linspace().
Zadanie 7 Powtórz poprzednie zadanie dla arytmetyki pojedynczej precyzji,tzn. powtórz obliczenia wielomianu (x− 2)4 = x4 − ..... + 16 naodcinku [2 − a, 2 + a] dla a = 10−3, 10−2, 10−4 dla zmiennychw pojedynczej precyzji uzyskanych za pomoc¡ funkcji octave'a:single (x). Narysuj wykresy wielomianu obliczanego obydwomaalgorytmami.
Zadanie 8 Przybli»enie exp(x) z rozwini¦cia w szereg∑∞
k=0 xk/k!. Za odpo-
wiedni¡ aproksymacje exp(x) bierzemy najpierw sto pierwszychelementów szeregu czyli przybli»amy exp(x) przez
FN(x) =N∑k=0
xk
k!,
dla N = 100, a potem przybli»amy przez tysi¡c elementów sze-regu, czyli ustalamy N = 1000.
Sprawd¹ bª¡d wzgl¦dny |FN(x)−exp(x)|/| exp(x)| dla x od −100do 100 (np. dla liczb ró»ni¡cych si¦ o dziesi¦¢, czyli −100+k ∗10dla k = 0, . . . , 20) dla obu warto±ci N .
Czy bª¦dy dla liczb ujemnych i dodatnich s¡ tego samego rz¦du?
Jak zmody�kowa¢ powy»sz¡ metod¦ przybli»onego obliczania funk-cji eksponencjalnej exp(x) dla x << 0 tak aby bª¡d wzgl¦dny byªna tym samym poziomie co dla x > 0?
Zadanie 9 Policz caªki In =∫ 1
0xn/(5+x)dx n = 0, .., 20 dwoma algorytmami
ze wzoruIn + 5 ∗ In−1 = 1/n
11
Pierwszy algorytm przyjmuje I0 = log(6/5) i oblicza z powy»-szego wzoru kolejne
In = 1/n− 5 ∗ In−1
dla n = 1, 2, 3, . . ..
Drugi algorytm wykorzystuje fakt, »e
1
(n+ 1)6≤ In ≤
1
(n+ 1)5(3.1)
W tym algorytmie przyjmujemy za I30 jak¡kolwiek warto±¢ z tegoprzedziaªu np. I30 = 1/180 i iterujemy w tyª, tzn. dla n =30, 29, . . . , 20, . . . , 0 obliczamy
In−1 =1
5(1/n− In).
Porównaj wyniki obu algorytmów dla 0 ≤ n ≤ 20 oraz sprawd¹czy wyniki otrzymane w octave'ie speªniaj¡ oszacowanie (3.1) dlan = 1, . . . , 20.
Dlaczego jeden z algorytmów dziaªa zdecydowanie lepiej w aryt-metyce zmiennopozycyjnej?
Jako dodatkowe zadanie teoretyczne pozostawimy uzasadnieniewzoru rekurencyjnego i oszacowania (3.1) wykorzystywanych walgorytmach.
Zadanie 10 Zastosuj algorytm bisekcji (algorytm poªowienia odcinka) dla funk-cji (x− 2)3 liczonej z wzoru na rozwini¦cie dwumianu x3− ...− 8startuj¡c z a = 2 − 10−3 a b = 2 + 10−3. Jako warunek zako«-czenia dziaªania algorytmu przyjmujemy, »e bª¡d jest mniejszyod 10−20 (za przybli»enie rozwi¡zania przyjmujemy ±rodek da-nego odcinka w metodzie bisekcji, czyli warunkiem zako«czeniaiteracji jest to, »e dªugo±ci odcinka, w którym jest rozwi¡zaniepowinna by¢ mniejsza od 2 ∗ 10−20).
Czy algorytm zwraca przybli»enie liczby dwa jedynego pierwiastkatego wielomianu?
Narysuj wykresy tej funkcji obliczone z obu wzorów. tzn. (x−2)3
i x3− ...− 8 na odcinkach 2 + [−h, 2∗h] dla h = 10−3, 10−4, 10−5.Czy z wykresów wynika, »e ten wielomian ma tylko jedno miejscezerowe w otoczeniu dwa?
12
Rozdziaª 4
Interpolacja Lagrange'a, bazy
wielomianów
W tym rozdziale zajmiemy si¦ interpolacj¡ wielomianow¡. Zadanie interpo-lacji wielomianowej polega na znalezieniu wielomianu stopnia nie wi¦kszegood n, speªniaj¡cego n+ 1 warunków interpolacyjnych.
W octave'ie istnieje funkcja znajduj¡ca wspóªczynniki wielomianu inter-polacyjnego Lagrange'a. Jest to funkcja poly�t(), czyli funkcja obliczaj¡cawspóªczynniki wielomianu interpolacyjnego w bazie pot¦gowej dla zadanychwarto±ci i w¦zªów. Z kolei funkcja polyval() jest funkcj¡ obliczaj¡c¡ warto±¢wielomianu zadanego poprzez wspóªczynniki w bazie pot¦gowej w jednym lubrównocze±nie wielu punktach - czyli wektorowo. Co wa»ne, obie funkcje s¡ zesob¡ zgodne. Trzeba uwa»a¢ na kolejno±¢ wspóªczynników; octave numerujewspóªczynniki w bazie pot¦gowej
(xj)nj=0
przestrzeni wielomianów stopnia nie wi¦kszego od n w odwrotnej kolejno±citzn.
(xn, xn−1, . . . , 1)
czyli np. wektor wspóªczynników (3, 2, 1) odpowiada wielomianowi 3x2+2x+1. Oczywi±cie stopnie« wielomianu, a dokªadniej: dla jakiego n rozpatrujemybaz¦ pot¦gow¡ dla tego wektora, jest dªugo±ci¡ wektora wspóªczynników po-mniejszon¡ o jeden.
Zadanie 1 Zapoznaj si¦ z pomoc¡ octave'a do funkcji octave'a polyval().Oblicz warto±¢ wielomianu x50 − 1 dla x = −1, 0, 1.
Zadanie 2 Korzystaj¡c z funkcji polyval() narysuj wykres wielomianu x3 +x− 2 bez wykorzystania p¦tli - czyli wektorowo.
13
Zadanie 3 Test funkcji poly�t().
Zapoznaj si¦ z pomoc¡ octave'a do funkcji octave'a poly�t().
Wykorzystuj¡c funkcj¦ poly�t() znajd¹ wielomian interpolacyjnyLnF dla funkcji F (x) = sin(x) dla w¦zªów −1, 0, 1. Policz warto-±ci ró»nicy F −LnF w w¦zªach oraz korzystaj¡c z funkcji plot()narysuj wykresy F i LnF na jednym rysunku.
Wykonaj powtórnie to zadanie ale dla w¦zªów −1, 0, 1, 10.
Oblicz warto±ci wielomianu bez u»ycia p¦tli z wykorzystaniemfunkcji polyval().
Zadanie 4 Interpolacja Lagrange'a - zbie»no±¢ ci¡gu wielomianów interpo-lacyjnych dla w¦zªów równoodlegªych i w¦zªów Czebyszewa:
• Wykorzystuj¡c funkcj¦ poly�t() znajd¹ wielomiany inter-polacyjne LNf dla funkcji f = sin() dla N w¦zªów równo-odlegªych na [0, 2 ∗ π] dla N = 4, 8, 16, 32, 64.
• Oblicz dyskretn¡ norm¦ maksimum ró»nicy f − LNf nasiatce tysi¡ca równoodlegªych punktów na tym odcinku, tzn.eN = max |f(xk)−LNf(xk)|, gdzie xk to punkty siatki. Po-licz stosunek eN/e2N dla N < 64.
Czy bª¦dy malej¡ do zera? Jak zachowuje si¦ eN/e2N?
Siatk¦ tysi¡ca równoodlegªych punktów na odcinku [a, b]najpro±ciej utworzy¢ z wykorzystaniem funkcji octave'a:linspace(a,b,1000).
• Narysuj na ekranie wykresy sin(x) i tych wielomianów dlaró»nych N - u»ywaj¡c funkcji polyval() i plot().
Zadanie 5 Powtórz zadanie 4 dla tej samej funkcji i tego samego odcinkadla w¦zªów Czebyszewa. W¦zªy Czebyszewa to pierwiastki wie-lomianu:
Tn+1(t) = cos((n+ 1)arccos(t))
na [−1, 1] odpowiednio przesuni¦te i przeskalowane.
Przetestuj, czy bª¦dy eN dla w¦zªów Czebyszewa s¡ mniejsze ni»dla w¦zªów równoodlegªych.
Zadanie 6 Napisz funkcj¦ znajduj¡c¡ wspóªczynniki w bazie pot¦gowej wie-lomianu interpolacyjnego zadanego stopnia dla w¦zªów równo-odlegªych oraz w¦zªów Czebyszewa dla danej funkcji, odcinka[a, b], tzn. napisz funkcj¦ octave'a (w m-pliku):
14
function [LN, eN]=LagrInterp (FCN, a , b ,N, type=0)
która dla parametrów:
• zadanego wska¹nika funkcyjnego FCN (ang. function han-
dle) do funkcji jednego argumentu: function y=f(x),
• a, b - ko«ców odcinka [a, b],
• N - stopnia wielomianu interpolacyjnego
• type - typu w¦zªów 0 - równoodlegªych, 1 - Czebyszewa
zwróci wektor LN - wspóªczynniki LNf wielomianu interpolu-j¡cego funkcj¦ w tych w¦zªach oraz eN przybli»enie dyskretnejnormy maksimum ró»nicy LNf − f na tym odcinku.
Przybli»enie normy maksimum liczymy na dyskretnej siatce za-wieraj¡cej tysi¡c punktów.
Zadanie 7 Powtórz zadanie 4 dla obu typów w¦zªów, tzn. powtórz znajdo-wanie wielomianów interpolacyjnych na w¦zªach równoodlegªychi w¦zªach Czebyszewa dla funkcji
f(x) = log(1 + x)
na odcinkach
• [0, 1],
• [0, 10].
Czy dla tej funkcji i obu odcinków bª¦dy w normach maksimummalej¡ wraz ze wzrostem N? Porównaj wyniki otrzymane wtym zadaniu w obliczeniach z oszacowaniami teoretycznymi bª¦duinterpolacji Lagrange'a.
Zadanie 8 Interpolacja Lagrange'a - przykªad Rungego. Powtórz zadanie 4dla obu typów w¦zªów, tzn. znajdowanie wielomianów interpo-lacyjnych na w¦zªach równoodlegªych i w¦zªach Czebyszewa, aledla funkcji:
f(x) = 1/(1 + x ∗ x)
na [−5, 5].
Czy obliczone wyniki wskazuj¡ na to, »e obliczone ci¡gi wielomia-nów interpolacyjnych zbiegaj¡ do f jednostajnie dla obu typóww¦zªów?
15
Zadanie 9 Napisz funkcj¦ octave'a obliczaj¡c¡ warto±¢ wielomianu zadanegow bazie pot¦gowej tzn.
w(x) =n∑k=0
akxk
algorytmem Hornera. Parametrami funkcji b¦d¡
• wektor wspóªczynników a
• macierz warto±ci x.
• N - stopnie« wielomianu (to mo»e by¢ parametr opcjonalny,domy±lnie przyjmuj¡cy warto±¢ równ¡ dªugo±ci wektora aminus jeden)
Funkcja ma zwróci¢ warto±ci wielomianu dla warto±ci w x.
Przetestuj funkcj¦ dla wielomianów 1 + x2 oraz 1 − 2x + x2 dlaw¦zªów równoodlegªych na [−1, 2], tzn. policz warto±ci wielomia-nów dla kilku warto±ci oraz narysuj wykresy tych wielomianów zwykorzystaniem tej funkcji.
Zadanie 10 Napisz funkcj¦ octave'a znajduj¡c¡ dla danego wielomianu stop-nia n:
w(x) =n∑k=0
akxk
oraz danej liczby q wspóªczynniki (bk)nk=0 wielomianu
p(x) =n−1∑k=0
bkxk
oraz warto±¢ r takie, »e
w(x) = (x− q) ∗ p(x) + r,
obliczone z wykorzystaniem algorytmu Hornera.
Zadanie 11 Napisz funkcj¦ octave'a znajduj¡c¡ dla danego wielomianu stop-nia n:
w(x) =n∑k=0
akxk
oraz liczby q warto±¢ w(q) i pochodnej w′(q), obliczone z wyko-rzystaniem algorytmu Hornera.
16
Zadanie 12 Algorytm Hornera w bazie Newtona. Ró»nice dzielone.
Zaprogramuj w octavie funkcj¦ ze zmody�kowanym algorytmemHornera zwracaj¡c¡ warto±¢ wielomianu zadanego w bazie New-tona dla danych w¦zªów. Parametrami b¦d¡
• x punkt, w którym obliczamy wielomian (ewentualnie ta-blica punktów, ale wtedy funkcja te» musi zwróci¢ wektor zwarto±ciami wielomianu w tych punktach),
• N - stopnie« wielomianu,
• wektor dªugo±ci N + 1 ze wspóªczynnikami wielomianu wbazie Newtona.
Przetestuj na kilku prostych przykªadach: dla w¦zªów −1, 0, 1 iwielomian w(x) = x2, który w bazie Newtona zwi¡zanej z tymiw¦zªami ma nast¦puj¡c¡ posta¢: x2 = (x+ 1)x− (x+ 1) + 1.
Zadanie 13 Napisz funkcj¦ octave'a, która dla danego wielomianu w(x), któ-rego wspóªczynniki w bazie pot¦gowej znamy, oblicza wspóªczyn-niki tego wielomianu w bazie Newtona dla zadanych w¦zªów po-danych w wektorze y. Tzn. parametrami funkcji b¦d¡:
• wektor a = (ak)k taki, »e
w(x) =n∑k=0
akxk
• y = (yk)k wektor wspóªczynników bazy Newtona.
Funkcja powinna zwróci¢ wektor wspóªczynników bk takich, »e
w(x) =n∑k=0
bkwk,
gdziewk(x) = Πk−1
j=0(x− yj).
Zadanie 14 Napisz funkcj¦, która dla danego wielomianu w(x), którego wspóª-czynniki w bazie Newtona (wk)
nk=0 znamy, oblicza wspóªczynniki
tego wielomianu w bazie pot¦gowej (1, x, x2, . . . , xn). Tzn. pa-rametrami funkcji jest wektor wspóªczynników b = (bk)k takich,»e
w(x) =n∑k=0
bkwk
17
i wektor y = (yk)k w¦zªów bazy Newtona (wk)nk=0 dla
wk(x) = Πk−1j=0(x− yj).
Funkcja ma zwróci¢ wektor wspóªczynników a = (ak)k takich, »e
w(x) =n∑k=0
akxk.
Zadanie 15 Sprawd¹ eksperymentalnie ile wynosi dla ró»nych warto±ci N =4, 8, 16, 32, 64, . . . przybli»enie:
Ar,N =N∑k=0
‖lk‖∞,[−1,1]
dla {lk}Nk=0 bazy Lagrange'a dla w¦zªów równoodlegªych na [−1, 1],tzn. dla xk = −1 + k ∗ h dla h = 2/N .
Norm¦ maksimum funkcji ‖f‖∞,[a,b] liczymy w sposób przybli»onyobliczaj¡c dyskretn¡ norm¦ maksimum na max{1000, 100 ∗ N}równoodlegªych punktach z odcinka [a, b].
Zadanie 16 Sprawd¹ eksperymentalnie ile wynosi dla ró»nych N np.
N = 4, 8, 16, 32, 64, . . .
przybli»enie:
Ac,N =N∑k=0
‖lk‖∞,[−1,1]
dla {lk}Nk=0 bazy Lagrange'a dla w¦zªów Czebyszewa na [−1, 1],tzn. dla xk zer wielomianu TN+1(x) = cos((N + 1)arccos(x)).
Norm¦ maksimum funkcji ‖f‖∞,[a,b] liczymy w sposób przybli»onyobliczaj¡c dyskretn¡ norm¦ maksimum na max{1000, 100 ∗ N}równoodlegªych punktach z odcinka [a, b].
Zadanie 17 Powtórz dwa poprzednie zadania dla w¦zªów równoodlegªych iw¦zªów Czebyszewa na odcinku [0, 10] i dla odpowiedniej normymaksimum na tym odcinku.
Zadanie 18 Policz iloraz‖LNf‖∞,[−5,5]∑Nk=0 ‖lk‖∞,[−5,5]
18
dla f = 1/(1+x2) i LNf wielomianu interpoluj¡cego f w w¦zªachrównoodlegªych na [−5, 5] dla N = 10, 20, 40, 80. Tutaj {lk}Nk=0
baza Lagrange'a dla tych w¦zªów.
Norm¦ maksimum funkcji ‖f‖∞,[a,b] liczymy w sposób przybli»onyobliczaj¡c dyskretn¡ norm¦ maksimum na max{1000, 100 ∗ N}równoodlegªych punktach z odcinka [a, b].
Zadanie 19 Powtórz poprzednie zadanie dla tych samych funkcji i odcinkadla w¦zªów Czebyszewa zamiast w¦zªów równoodlegªych.
19
Rozdziaª 5
Splajny kubiczne i liniowe.
Interpolacja splajnowa
W tym rozdziale zajmiemy si¦ interpolacj¡ splajnow¡, czyli interpolowaniemdanej funkcji za pomoc¡ splajnów - inaczej funkcji gi¦tych.
Skupimy si¦ na splajnach kubicznych, czyli funkcjach, które s¡ klasy C2
na odcinku [a, b] i dla danego podziaªu tego odcinka:
a = x0 < x1 . . . < xN = b
na pododcinki. Te funkcje obci¦te do ka»dego pododcinka [xi, xi+1] s¡ wielo-mianami kubicznymi.
Zadanie interpolacji splajnami kubicznymi polega na znalezieniu spaljnukubicznego s speªniaj¡cego:
s(x0) = y0
s(x1) = y1...
s(xN) = yN
dla zadanych warto±ci yk. Okazuje si¦, »e tak postawione zadanie nie jestjednoznaczne; trzeba doda¢ dwa dodatkowe warunki na s. Zazwyczaj s¡ toodpowiednie warunki brzegowe, tzn. zwi¡zane z warto±ciami s, pierwszychlub drugich pochodnych s w ko«cach odcinka.
Zadanie 1 Funkcje octave'a spline() and ppval.
Zapoznaj si¦ z pomoc¡ do tych funkcji (help spline i help ppval).
Wykorzystuj¡c te funkcje narysuj wykres splajnu kubicznego s1na podziale równomiernym odcinka [−3, 3] z w¦zªami {xk = k}
20
dla k = −3,−2, . . . , 3 przyjmuj¡cego warto±ci s1(xk) = (−1)k wtych w¦zªach.
Nast¦pnie znajd¹ wspóªczynniki splajnu kubicznego s2 na tymsamym podziale odcinka i przyjmuj¡cego te same warto±ci w w¦-zªach co s1, ale który dodatkowo przyjmuje warto±ci pochodnychw ko«cowych w¦zªach równe zero, tzn. wywoªaj funkcje spline()podaj¡c dwie warto±ci wi¦cej.
Nast¦pnie narysuj wykresy splajnów s1 i s2 na tym samym ry-sunku.
Czy otrzymali±my te same splajny?
Policz przybli»on¡ norm¦ maksimum ró»nicy s1 − s2 na odcinku[−3, 3].
Zadanie 2 Splajn kubiczny bazowy.
Dla danych w¦zªów równoodlegªych {k}k=−5,−4,...,5 na [−5, 5] na-rysuj wykres splajnu kubicznego typu not-a-knot (czyli splajnu,którego wspóªczynniki zwróci funkcja spline() przy najprost-szym wywoªaniu przez podanie wektora w¦zªów i wektora war-to±ci w tych w¦zªach, por. help spline) takiego, »e s(0) = 1 is(k) = 0 dla w¦zªów k 6= 0.
Okre±l na podstawie wykresu no±nik tego splajnu.
Zadanie 3 Splajn kubiczny o minimalnym no±niku.
Dla danych w¦zªów równoodlegªych {k}k=−5,−4,...,5 na [−5, 5] na-rysuj wykres splajnu kubicznego takiego, »e s(−1) = s(1) =1, s(0) = 4 i s(k) = 0 dla w¦zªów k 6∈ {−1, 0, 1} oraz ma po-chodne równe zero w w¦zªach skrajnych, tzn. : −5 i 5. Czy poza[−2, 2] ten splajn jest równy zero?
Policz przybli»one normy maksimum na [−5,−2] i [2, 5] dla tegosplajnu.
Zadanie 4 Testowanie eksperymentalne rz¦du zbie»no±ci splajnu interpola-cyjnego kubicznego z hermitowskimi warunkami brzegowymi.
Korzystaj¡c z funkcji octave'a spline() znajd¹ wspóªczynniki in-terpolacyjnego splajnu kubicznego hermitowskiego SN na N w¦-zªach równoodlegªych dla funkcji f(x) = sin(x) na odcinku [−π, 2∗π] dla N = 2kN0 dla N0 = 5 i k = 1, 2, 3, 4, 5.
Nast¦pnie
21
• narysuj wykresy funkcji f(x) i splajnów SN dla ró»nych N .
• oblicz dyskretn¡ norm¦ maksimum na siatce równomiernejzªo»onej z tysi¡ca punktów na tym odcinku, tzn. eN =maxk | sin(xk)− SN(xk)| dla xk punktów siatki.
• policz równocze±nie wspóªczynnik eNe2N
. Czy prawd¡ jest, »e
eNe2N≈ 2p
dla jakiego± p caªkowitego np. p = 4, 8 lub 16?
Zadanie 5 Testowanie eksperymentalne rz¦du zbie»no±ci splajnu interpola-cyjnego kubicznego bez warunków brzegowych (splajn typu not
a knot).
Powtórz zadanie 4, ale dla splajnów interpolacyjnych otrzyma-nych przez spline() bez podawania warto±ci pochodnych w skraj-nych w¦zªach. Czy wspóªczynniki eN
e2Ns¡ te same? Tzn. czy
szybko±¢ zbie»no±ci ‖ sin(x)− SN‖∞ jest taka sama?
Zadanie 6 Testowanie eksperymentalne rz¦du zbie»no±ci splajnu interpola-cyjnego kubicznego naturalnego (warunek brzegowy - zerowaniesi¦ drugich pochodnych w ko«cach odcinka).
Powtórz zadanie 4, ale dla splajnów interpolacyjnych natural-nych. Tu trzeba wykorzysta¢ funkcj¦ z octave-forge (czyli rozsze-rzenia pakietu octave)pp=csape(x,y,'variational ' )- ostatni argument okre±la to, »e splajn b¦dzie naturalny.
Podajemy link do strony www z pomoc¡ do funkcji csape():http://octave.sourceforge.net/splines/function/csape.html
Zadanie 7 Przykªad Rungego, czyli f(x) = 1/(1 + x ∗ x) i odcinek [−5, 5], azbie»no±¢ interpolacji splajnami kubicznymi.
Przetestuj jak w poprzednich zadaniach, czy splajny interpola-cyjne kubiczne z podanymi warunkami na pochodne w ko«cachodcinka zbiegaj¡ w normie supremum do f , tzn. korzystaj¡c zfunkcji octave'a spline() znajd¹ wspóªczynniki splajnu interpo-lacyjnego kubicznego SN na N w¦zªach równoodlegªych dla f naodcinku [−5, 5] dla N = 2kN0 dla N0 = 5 i k = 1, 2, 3, 4, 5 oraznarysuj wykresy f i tych splajnów dla ró»nych N .
22
Nast¦pnie oblicz dyskretn¡ norm¦ maksimum na siatce zªo»onejz tysi¡ca punktów na tym odcinku, tzn. eN = max | sin(xk) −SN sin(xk)| dla xk = −5 + k ∗ 0.01 z k = 0, . . . , 1000.
Policz równocze±nie wspóªczynnik eNe2N
. Czy eNe2N≈ 2p dla jakiego±
p caªkowitego?
Zadanie 8 Funkcja octave'a mkpp() . Zapoznaj si¦ z t¡ funkcj¡ (help mkpp()).Utwórz przy pomocy mkpp() splajn kubiczny s na podziale −1 ≤0 ≤ 1 odcinka [−1, 1] taki, »e s jest wielomianem trzeciego stop-nia na caªym odcinku [−1, 1] np. s(x) = x2 lub (x+ 1)3.
Zadanie 9 Funkcja octave'a umkpp().
Zapoznaj si¦ z t¡ funkcj¡ (help umkpp()).
Utwórz przy pomocy spline() splajn kubiczny s na podziale−1 ≤ 0 ≤ 1 odcinka [−1, 1] taki, »e s interpoluje wielomiantrzeciego stopnia na caªym odcinku [−1, 1] np. f(x) = (x+ 1)3.
Nast¦pnie sprawd¹ wspóªczynniki s w bazie {(x − xk)j}j=0,1,2,3
za pomoc¡ umkpp() na obu przedziaªach, tzn. dla x0 = −1 naprzedziale [−1, 0] i x1 = 0 na [0, 1].
Zadanie 10 Znajd¹ za pomoc¡ funkcji octave'a umkpp() wspóªczynniki splajnuz zadania 3 na wszystkich pododcinkach [k, k + 1] w bazie {(x−k)j}j=0,...,3 dla k = −2, . . . , 1 czyli tam, gdzie ten B-splajn mano±nik.
Porównaj z wynikami otrzymanymi teoretycznie.
Zadanie 11 Interpolacja splajnami liniowymi.
Dla danego równomiernego podziaªu odcinka [−π, 2∗π] na N po-dodcinków utwórz za pomoc¡ mkpp() struktur¦ splajnu liniowegosn interpoluj¡cego funkcj¦ sin(x) w w¦zªach dla N = 3, 6, 9, 18.
• Narysuj wykresy funkcji sin(x) oraz tych splajnów liniowychna jednym wykresie
• Policz przybli»one normy maksimum (na 1000 punktach ztego odcinka) bª¦du eN = ‖ sin−sn‖∞.• Policz wspóªczynnik eN
e2N. Czy wida¢, »e
eNe2N≈ 2p
dla jakiego± p caªkowitego np. p = 2, 4 lub 8?
23
W tym zadaniu mo»na wykorzysta¢ funkcj¦ z nast¦pnego zada-nia, tj. zadania 12.
Zadanie 12 Napisz w octavie funkcj¦ function pp=linspline(x,y), która dla
• x wektora N + 1 ró»nych w¦zªów uszeregowanych (a = x0 <x1 . . . < xN = b)
• y - wektora N + 1 warto±ci funkcji y = f(x)
zwróci w strukturze pp wspóªczynniki splajnu liniowego s dlapodziaªu zadanego w¦zªami xk.
Struktur¦ nale»y utworzy¢ funkcj¡ octave'a mkpp() w taki spo-sób, aby mo»na byªo obliczy¢ warto±¢ tego splajnu w punkcie(tablicy punktów) za pomoc¡ funkcji octave'a ppval().
Zadanie 13 Testowanie rz¦du zbie»no±ci interpolacji splajnami liniowymi wzale»no±ci od gªadko±ci funkcji.
Dla funkcji
fj(x) = (x)j+ =
{0 x < 0xj x > 0
j = 1, 2, 3
oraz dla podziaªu odcinka [a, b] z a = −π i b = 3 na w¦zªyrównoodlegªe
{xk = −π + k ∗ h}dla h = (b− a)/N i N = 4, 8, 16, 32, 64.
Przetestuj rz¡d zbie»no±ci splajnu liniowego interpolacyjnego.
Bardziej szczegóªowo:
• przy pomocy funkcji octave'a z zadania 12 znajd¹ wspóª-czynniki odpowiedniego splajnu liniowego sNfj.
• policz przybli»on¡ norm¦ maksimum bª¦du (na 1000 równo-miernych punktach), tzn. przybli»enie
eN = ‖sNfj − fj‖∞,[a,b].
• policz wspóªczynniki eNe2N
. Czy wida¢, »e
eNe2N≈ 2p
dla jakiego± p caªkowitego np. p = 2, 4 lub 8? Czy wida¢ró»nic¦ dla ró»nych j?
24
Rozdziaª 6
Wielomiany Czebyszewa
Wielomiany Czebyszewa de�niujemy rekurencyjnie: T−1 ≡ 0, T0 ≡ 1 oraz
Tn+1(x) = 2xTn(x)− Tn−1(x) (6.1)
albo ze wzoru:
Tn(x) = cos(n ∗ arccos(x)) x ∈ [−1, 1]. (6.2)
W tym rozdziale przetestujemy podstawowe wªasno±ci tych wielomianów.
Zadanie 1 Napisz rekurencyjn¡ funkcj¦ octave'a obliczaj¡c¡ warto±¢ wie-lomianu zadanego poprzez wspóªczynniki w bazie Czebyszewawprost ze wzoru rekurencyjnego (6.1), tzn. parametrami funkcjib¦d¡:
• x argument dla którego chcemy obliczy¢ warto±¢ wielomianu
• a - wektor zawieraj¡cy wspóªczynniki a0, . . . , an takie, »ew(x) =
∑nk=0 akTk(x).
• n - stopie« wielomianu (parametr opcjonalny, mo»na t¦ war-to±¢ uzyska¢ z wektora a)
Funkcja octave'a ma zwróci¢ warto±¢ w(x).
Przetestuj t¦ funkcj¦ dla w(x) = T15(x), tzn. narysuj dwa wy-kresy T15(x) raz korzystaj¡c z tej funkcji oraz drugi raz korzysta-j¡c wprost ze wzoru (6.2).
Zadanie 2 Napisz nierekurencyjn¡ funkcj¦ octave'a
function [Y]=Czebyszew (X, a , n)
25
obliczaj¡c¡ warto±¢ wielomianu zadanego poprzez wspóªczynnikiw bazie Czebyszewa z wzoru (6.1), tzn. parametry wej±ciowefunkcji to:
• macierz X = (xij)ij, wymiaru k × l• wektor wspóªczynników
a = [a0, . . . , an]
takich, »e
w(x) =n∑k=0
akTk(x).
• n stopie« wielomianu; ten parametr mo»e by¢ opcjonalny,je±li go nie podamy to funkcja powinna przyj¡¢, »e n towymiar wektora wspóªczynników minus jeden.
Funkcja octave'a powinna zwróci¢ macierz Y = (yij)ij, wymiaruk × l z warto±ciami yij = w(xij).
Funkcja ma korzysta¢ z wzoru rekurencyjnego (6.1), ale jakofunkcja octave'a ma by¢ nierekurencyjna. Koszt algorytmupowinien wynosi¢ k ∗ l ∗O(n).
Narysuj dwa wykres T3(x) - jeden korzystaj¡c z tej funkcji orazdrugi - ze wzoru (6.2).
Zadanie 3 Sprawd¹ obliczeniowo, czy powy»sze wzory na wielomiany Cze-byszewa: wzór de�niuj¡cy wielomiany Czebyszewa rekurencyjnie(6.1) i (6.2), s¡ zgodne na odcinku [−1, 1]. Tzn. dla du»ej ilo±cinp. 10000 losowych punktów na [−1, 1] policz warto±ci T32 zewzoru
T32(x) = cos(32 ∗ arccos(x))
oraz ze wzoru rekurencyjnego (6.1).
Policz maksimum warto±ci absolutnych z ró»nicy mi¦dzy warto-±ciami wielomianu obliczonymi obiema metodami. Porównaj czasobliczania warto±ci tego wielomianu obydwoma wzorami.
Powtórz testy ale dla wielomianów innych stopni, np. T7, T50.
Zadanie 4 Narysuj korzystaj¡c z wzoru
Tn(x) = cos(n ∗ arccos(x))
26
wykres wielomianów Tn dla n = 0, 1, 2, 3, 4, 5. Policz dyskretn¡norm¦ maksimum na siatce. Czy wynosi jeden? Policz na wy-kresie zera oraz ekstrema ka»dego z wielomianów.
Zadanie 5 Wyznacz zera i ekstrema T10 i T15 ze wzoru Tn(x) = cos(n ∗arccos(x)). Sprawd¹ warto±ci tych wielomianów w jego zerach iekstremach.
Zadanie 6 Sprawdzenie wªasno±ci optymalno±ci zer wielomianu Czebyszewajako w¦zªów interpolacji Lagrange'a.
Chcemy eksperymentalnie sprawdzi¢, czy wielomian 2−nTN+1(x)ma minimaln¡ norm¦ supremum na [−1, 1] w±ród wszystkich wie-lomianów postaci ΠN
k=0(x− xk).Policz dla N + 1 ró»nych losowych w¦zªów xk, k = 0, . . . , N zodcinka [−1, 1] dla N = 2, 4, 8, 16, 32 i kilkuset ró»nych losowychzestawów przybli»on¡ norm¦ supremum wielomianu Πn
k=0(x−xk).Przeprowad¹ testy równie» dla w¦zªów Czebyszewa (czyli zer TN+1)oraz w¦zªów równoodlegªych dla tego samego N .
Zadanie 7 Sprawdzenie wªasno±ci ekstremalnej wielomianów Czebyszewa.
Z teorii wiadomo, »e wielomian 2−nTN+1(x) ma minimaln¡ norm¦supremum na [−1, 1] w±ród wszystkich wielomianów postaci
w(x) = xn+1 +n∑k=0
akxk.
Chcemy sprawdzi¢ eksperymentalnie, czy ta wªasno±¢ si¦ potwier-dzi.
Policz dla N + 1 losowych wspóªczynników ak dla k = 0, . . . , Nprzybli»on¡ norm¦ supremum wielomianu:
w(x) = xn+1 +n∑k=0
akxk.
Przetestuj dla N = 2, 4, 8, 16, 32 i co najmniej kilku tysi¦cy ró»-nych losowych zestawów w¦zªów. W¦zªy losujemy funkcj¡ randn()zwracaj¡c¡ liczby losowe o rozkªadzie normalnym.
Zadanie 8 Sprawdzenie wªasno±ci ekstremalnej wielomianów Czebyszewa przyj-muj¡cych ustalon¡ warto±¢ poza [−1, 1].
27
Chcemy sprawdzi¢, czy dla dowolnego punktu a = 2 i b 6= 1wielomian
w∗(x) = Tn(x)/Tn(2)
ma minimaln¡ norm¦ supremum na [−1, 1] w±ród wszystkich wie-lomianów w stopnia nie wi¦kszego od n+1 przyjmuj¡cych warto±¢b w punkcie a.
Policz dla n losowych wspóªczynników ak z k = 1, . . . , n dlan = 2, 4, 8, 16, 32 i co najmniej kilku tysi¦cy ró»nych losowychzestawów w¦zªów przybli»on¡ norm¦ supremum wielomianu
w(x) = 1 +n∑k=1
ak(x− 2)k
i porównaj z norm¡ supremum w∗ na [−1, 1] równ¡ 1/Tn(2) (dla-czego tyle ona wynosi?).
W¦zªy losujemy funkcj¡ randn() zwracaj¡c¡ liczby losowe o roz-kªadzie normalnym.
Zadanie 9 Funkcja octave'a sªu»¡ca przybli»onemu obliczaniu caªek po od-cinkach (zadanie pomocnicze)
Zapoznaj si¦ z funkcj¡ octave'a quad().
Policz caªk¦ przy pomocy funkcji quad() z sin(x) na [−π, 2 ∗ π].
Zadanie 10 (trudne) Iloczyn skalarny typu L2w(a, b).
Napisz funkcj¦ octave'a:
function [ n l2 ]=IlSkL2w (FCN,GCN, a , b ,FCNW)
komendy octave ' a
n l2 = . . . .
endfunction
która oblicza iloczyn skalarny typu L2w(a, b) z wag¡ w(x) tzn.:
(f, g)L2w(a,b) =
∫ b
a
f(x)g(x)w(x) dx
dla danej funkcji wagowej w(x) i funkcji f, g.
Parametry funkcji to:
28
• wska¹niki do funkcji FCN , GCN do dwóch funkcji octave'a
function y=f (x )
y = . . . . . .endfunction
function y=g (x )
y = . . . . . .endfunction
obliczaj¡cych odpowiednio warto±ci funkcji f(x) i g(x) dlax ∈ [a, b].
• a, b - ko«ce odcinka caªkowania [a, b],
• FCNW to wska¹nik do funkcji wagowej
function y=w(x )
y = . . . . . .endfunction
Funkcja powinna zwróci¢ przybli»enie iloczynu skalarnego obli-czone za pomoc¡ funkcji octave'a quad().
W przypadku wywoªania funkcji IlSkL2() tylko z czterema pierw-szymi argumentami (tzn. bez podania wska¹nika do wagi) funk-cja powinna zwróci¢ iloczyn skalarny z wag¡ w ≡ 1.
Zadanie 11 Ortogonalno±¢ wielomianów Czebyszewa w L21√
1−x2
(−1, 1).
Sprawd¹ eksperymentalnie w octavie, np. za pomoc¡ funkcjiquad() lub wªasnej funkcji z poprzedniego zadania, czy wielo-miany Czebyszewa tworz¡ ukªad ortogonalny w L2
1√1−x2
(−1, 1),
tzn. czy prawd¡ jest, »e
29
∫ 1
−1Tn(x)Tm(x)
1√1− x2
dx =
0 m 6= n,π2
m = n > 0,π m = n = 0.
Sprawd¹ powy»sze zale»no±ci dla ró»nych m,n ró»nej wielko±cinp. dla m = 0, 1, 2, 3, 100, 1000 i n = 0, 3, 10, 500, 1004.
30
Rozdziaª 7
Kwadratury
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∫ b
a
f(t) dt −∞ ≤ a < b ≤ +∞,
Mo»emy wi¦c znajdowa¢ przybli»enia caªek po caªej prostej rzeczywistej czypóªprostych.
Zadanie 1 Zapoznaj si¦ z pomoc¡ do funkcji octave'a quad().
Policz przy pomocy quad() caªk¦∫ baf(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)
31
obliczaj¡c¡ zªo»on¡ kwadratur¦ trapezów:
Tnf = h
(0.5[f(a) + f(b)] +
n−1∑k=1
f(a+ k ∗ h)
)
dla h = (b− a)/n.
Parametry funkcji:
• FCN - 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 ztrzema parametrami. Wtedy n powinno domy±lnie przyj¡¢warto±¢ sto.
(b) Przetestuj funkcj¦ octave'a z poprzedniego podpunktu dlaNk = 2kN0 k = 0, 1, 2, . . . z ustalonym N0 = 5 licz¡c:
ENE2N
dla bª¦du
EN = |∫ 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]) io 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
32
obliczony zªo»on¡ kwadratur¡ trapezów jest na poziomiebª¦du funkcji octave quad() - i porówna¢ ilo±¢ wywoªa«funkcji f przez obie procedury.
Zadanie 3 Czy wielomiany Czebyszewa tworz¡ ukªad funkcji ortogonalnychw L2 na [−1, 1] z wag¡ 1√
1−x2 .
Policz za pomoc¡ funkcji octave quad():∫ 1
−1
1√1− x ∗ x
Tn(x)Tm(x) dx
dla m = 2 i n = 3. Czy wynik jest zgodny z teori¡?
Zadanie 4 Kwadratura Gaussa-Czebyszewa dla
I(f) =
∫ 1
−1
1√1− x2
f(x) dx
czyli
GCn+1f =π
n+ 1
n∑k=0
f(xk) =π
n+ 1
n∑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 funkcjifunction y=f(x) i ilo±¢ punktów kwadratury.
Przetestuj jej dziaªanie:
• policz przybli»enia caªek I(T 2k ). Czy GCn(T 2
k ) przybli»a π/2dla k > 0 dla n = 20, 40, 80?
• policz przybli»enie caªki z wielomianów ró»nych stopni dlan = 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órejcaªk¦ z t¡ wag¡ mo»emy obliczy¢ dokªadnie.
Porównaj warto±¢ kwadratury z wynikiem dokªadnym dlan = 10, 20, 40, 80, tzn. policz
en = |GCn(f)− I(f)|
przyjmuj¡c za I(f) warto±¢ dokªadn¡.
33
• analogicznie do poprzedniego podpunktu tego zadania, po-ró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 ekranen = |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 iwypisz 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 dlafunkcji f na odcinku [a, b] na n równoodlegªych punktach:
Pnf = hn∑k=1
f(a+ (k − 0.5) ∗ h)), h = (b− a)/n.
Parametry funkcji:
• FCN - 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.
34
(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:
ENE2N
, EN = |∫ 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 silnieoscyluj¡ca (du»e warto±ci drugiej pochodnej),
• xj+0.5 na [0, 1] dla j = 0, 1, 2 czyli funkcji w Cj([0, 1]) io 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 wynikamifunkcji 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 dlaobu kwadratur:
• dla tej samej ilo±ci wywoªa« funkcji f , tzn. porównaj PNfz TN−1f ,
• porównaj obie kwadratury dla tego samego h, tzn. TNf zPNf , 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,N0 obliczaj¡c¡ przybli»enie caªki∫ baf(t) dt.
Parametry funkcji:
• FCN wska¹nik do funkcji octave'a function y=f(x)obliczaj¡cej warto±¢ funkcji podcaªkowej
35
• a lewy koniec odcinka
• b prawy koniec odcinka
• p ilo±¢ poziomów w kwadraturze Romberga
• N0 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 ztrzema albo czterema parametrami. Parametr p powinienwtedy domy±lnie przyj¡¢ warto±¢ 5, a N0 warto±¢ sto.
(b) Przetestuj kwadratur¦ Romberga dla caªki∫ baf dt dla na-
st¦puj¡cych funkcji, odcinków i warto±ci parametrów N0 ip:
• 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 = |∫ baf dt−Rp,N0|.
36
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¡zaniainnych 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 , . . .to la , maxit ) ,
37
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 samznak.
Funkcja ma dziaªa¢ równie» je±li podamy tylko trzy lub czterypierwsze argumenty - wtedy maksymalna ilo±¢ iteracji domy±lniepowinna 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 prostychprzykª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 prostychprzykªadach skalarnych, np. na tych z poprzedniego zadania.
38
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 Newtonazbiega, 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 startowymix0.
Zadanie 7 Powtórz zadanie 6 zast¦puj¡c metod¦ Newtona przez metod¦siecznych.
Przetestuj, czyen/(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 = 2lub innych równa« z poprzedniego zadania.
Za x1 mo»emy przyj¡¢ x0 + 10−7.
39
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ólnieostatnie 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?
40
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 siatcek ∗ 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
‖x− xn‖p‖x− xn−1‖qp
dla p = 1, 2,∞ oraz q = 1, 2, 3. Czy ten iloraz zbiega do staªejdla jakiego± z tych q?
Funkcj¦ F (x) := (f1(x), f2(x))T w octavie mo»na zde�niowa¢ 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)
41
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
‖x− xn‖p‖x− xn−1‖p
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órabyªa zastosowana do rozwi¡zania tego ukªadu.
Czy obie metody zbiegaj¡ do tego samego rozwi¡zania dla tychsamych 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.
42
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¡zywaniaukª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¡zywaniu ukªadów równa« liniowychz 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 nieosobliwejmacierzy A, czyli PA = 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 czynnikaL = RT ),
• operator x=A\b - operator rozwi¡zuj¡cy ukªad równa« Ax = b dla Amacierzy 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 macierzyA, czyli ‖A‖2 ∗ ‖A−1‖2.
Zadanie 1 Operator octave'a \ sªu»¡cy m.in. do rozwi¡zywaniu ukªadówrówna« liniowych w octavie.
43
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¡zaniemtego ukªadu?
Policz normy residualn¡ ‖Ay − f‖p i norm¦ bª¦du ‖x − x‖p dlap = 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óchprostych 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 macierzykorzystaj¡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¡cmacierz odwrotn¡ do A = [1, 1; 1,−1]. Czy macierz B obliczonaza pomoc¡ tej funkcji rzeczywi±cie jest macierz¡ odwrotn¡?
Policz normy pierwsz¡ i Frobeniusa ‖A∗B−I‖ oraz ‖B ∗A−I‖.Zastosuj funkcje do rozwi¡zywania ukªadu równa« liniowychAx =f dla znanego x (liczymy f = A ∗x). Policz y jako iloczyn B z fi policz bª¦dy residualny ‖Ay − f‖ i ‖x− y‖ w normie pierwszeji drugiej.
Powtórz to zadanie dla macierzy N×N losowej (funkcja octave'arand() 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: PA =LU i rozkªad Choleskiego A = LT1L1.
44
• Sprawd¹ te rozkªady licz¡c normy macierzowe pierwsz¡ iFrobeniusa bª¦dów np. PA− 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, awynikiem 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 wyboremi bez wyboru dla macierzy A = [e, 1; 1, 1] z e = eps/10 (funk-cja octave'a eps zwraca epsilon maszynowy) i wektorem prawejstrony 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) ‖H(N)x − f‖ i ‖x − sol‖ 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 dlaN = 10, 20, 30, gdzie iH(N) macierz odwrotna do macierzyHilberta obliczona przez invhilb().
45
• 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, 30korzystaj¡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 ‖H(N)x−f‖p i ‖x−sol‖p dla 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 macierzz 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 czynnikirozkª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.
46
Zadanie 12 Zastosuj funkcj¦ z zadania 11 do uzyskania rozkªadu LU macierzyz zadania 9 dla N = 4, 10, 15. Porównaj z wynikiem uzyskanymprzy pomocy funkcji octave'a lu().
Zadanie 13 Zastosuj funkcj¦ z zadania 11 do rozwi¡zania ukªadu równa« zmacierz¡ 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. ‖x − x‖2 i ‖f − A ∗ x‖2, gdzie f = A ∗ x, a x torozwi¡zanie obliczone przez octave'a lub obliczone wªasnymalgorytmem.
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¡ zpoprzedniego zadania A i z macierz¡ A− 1.5 ∗ I.
Zadanie 15 Zaprogramuj rozkªad Choleskiego typu dla macierzy A = AT > 0trójdiagonalnej, tzn. policz L dolnotrójk¡tn¡ z jedn¡ poddia-gonal¡ (czyli reprezentowan¡ przez dwa wektory z przek¡tn¡ ipodprzek¡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.
47
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 chcemyznale¹¢ wektor x wymiaru N taki, »e
‖Ax− b‖2 = miny‖Ay − b‖2.
Je±li A jest macierz¡ kolumnami regularn¡ (rz¡d A jest maksymalny równyN), to zadanie to ma jednoznaczne rozwi¡zanie i nazywamy je regularnymLZNK (RLZNK).
Podstawowym algorytmem sªu»¡cym jego rozwi¡zaniu jest metoda Ho-useholdera, czyli znalezienia rozkªadu QR macierzy A, gdzie Q to macierzortogonalna - iloczyn macierzy Householdera, a R to macierz górnotrójk¡tna.
W tym rozdziale przetestujemy podstawowy operator octave'a sªu»acy dorozwi¡zywania dowolnego LZNK, tzn. operator \. Zauwa»my, »e je±liM = Ni A jest macierz¡ kolumnami regularn¡, to A jest nieosobliwa i to regularneLZNK jest równowa»ne rozwi¡zaniu ukªadu równa« liniowych Ax = b.
Przetestujemy w zadaniach funkcj¦ octave'a qr() sªu»¡c¡ znajdowaniurozkª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ówrówna« liniowych i LZNK w octavie.
• Przetestuj operator octave'a \ rozwi¡zuj¡c RLZNK dla ma-cierzy A ze znanym konkretnym rozwi¡zaniem x:
48
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¡ ‖Ay− f‖2 i norm¦ bª¦du ‖x− y‖2.• 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¡ ‖ATy−f‖2 i norm¦ bª¦du ‖x−y‖2.
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 normyFrobeniusa 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 LZNKAx =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 odpowiedniegorozkª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 pierwszejkolumnie 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(),
49
(c) poprzez rozwi¡zanie ukªadu równa« normalnych:
Bx = g
dlaB = 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¦pnierozwi¡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 - ‖x− y‖2• bª¡d residualny ‖Ax− f‖2
dla x rozwi¡zania dokªadnego LZNK, f wektora prawej stronyLZNK, 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 ‖x− y‖2,• bª¡d rezydualny: ‖Ax− f‖2,
dla x rozwi¡zania dokªadnego tego ukªadu równa«, f wektoraprawej strony ukªadu i y przybli»enia rozwi¡zania uzyskanegodan¡ metod¡.
50
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¹ takiea, b, »e ∑
k
|ax2k + by2k − 1|2 = minc,d
∑k
|cx2k + dy2k − 1|2.
Za (xk, yk) przyjmiemy zaburzone punkty z danej elipsy
yk =√
1− 4 ∗ x2k + zk,
gdzie zk to zaburzenie wylosowane z [0, 10−2] a xk = 1/k lubxk = −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 narysujfragmenty wykresów obu elips: pierwszej - dla a = 4, b = 1 idrugiej 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 = ‖w‖2 zwróci wektor y = Hw~x dla
Hw = I − 2 ∗ 1
nw~w~wT
czyli przeksztaªcenia (macierzy) Householdera.
Skalar mo»e by¢ parametrem opcjonalnym. Je±li funkcja b¦dziewywoª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
‖Hw~x‖2 = ‖~x‖2, Hw(Hwx) = x.
Zadanie 7 Napisz ogólniejsz¡ wersj¦ funkcji z poprzedniego zadania, tzn.:funkcj¦:
function Y=Hm(X,w,nw) ,
51
gdzie X macierz N × M i wtedy zwracany wynik to macierzY = Hw ∗ X . Pozostaªe dwa parametry funkcji pozostan¡ bezzmian.
Czy mo»na zaimplementowa¢ tak¡ funkcj¦ bez u»ycia p¦tli?
Sprawd¹, wykorzystuj¡c t¦ funkcj¦, czy mno»enie przez macierzHouseholder nie zmienia norm macierzowych drugiej i Frobe-niusa, tzn. czy:
‖A‖2 = ‖Hw ∗ A‖2 = ‖A ∗Hw‖2
i‖A‖F = ‖Hw ∗ A‖F = ‖A ∗Hw‖F
dla losowej macierzy A i Hw macierzy Householdera dla losowegowektora w 6= 0.
Zadanie 8 Znajd¹ wektor Householdera ~w taki, »e odpowiednie przeksztaª-cenie Householdera przeprowadza dany wektor ~u 6= 0 na kierunekdrugiego danego niezerowego wektora l ∗ ~v 6= 0 dla l = ‖v‖2
‖u‖2 .
Przetestuj dla dowolnych dwóch ró»nych wektorów o tej samejdª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¡cejN punktów (xk, yk) =(k, 1 + 2 ∗ k + εk) dla k = 1, . . . , N gdzie (ε1, . . . , εN) to losowywektor za zakresu [−ε, ε], tzn.:∑
k
|axk + b− yk|2 = minc,d
∑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 funkcji octave'aqr(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:
52
• a, b, c przek¡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 elementyna 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.
53
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 funkcjaoctave'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 zde�niowana nast¦puj¡co: dla dowolnego wektorax0 = x0 o normie drugiej równej jeden (np. losowego), de�niujemy ci¡giteracji metody pot¦gowej nast¦puj¡co:
xk = Axk−1 (iteracja)
xk = xk‖xk‖2
(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 x2k zbiegnie do tegowektora 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 11 0 11 1 0
.
Sprawd¹, czy dla λ warto±ci wªasnejA prawd¡ jest, »e wyznacznikA− λ ∗ I wynosi zero.
Wyznacz macierz V tak¡, »e jej kolumny to wektory wªasne A.
Przetestuj w normie macierzowej Frobeniusa, czy ‖AV − ΛV ‖2wynosi zero. Tutaj Λ - to macierz diagonalna z warto±ciami wªa-snymi A.
54
Zadanie 2 Zastosuj metod¦ pot¦gow¡ (11.1) do zadania wªasnego z macie-rz¡ A z poprzedniego zadania. Za warunek stopu przyjmiemy, »eiloraz Rayleigha rk praktycznie przestanie si¦ zmienia¢, co mo»esugerowa¢, »e jest bliski granicy, czyli odpowiedniej warto±ci wªa-snej, tzn. je±li
|rk+1 − rk| < tol
to zatrzymujemy iteracj¦. Przyjmijmy, »e tol = 10−12.
Przetestuj, czy otrzymane rk rzeczywi±cie jest dobrym przybli»e-niem najwi¦kszej co do moduªu warto±ci wªasnej A - czyli dwa, axk zbiegªo do wektora wªasnego dla tej warto±ci wªasnej o normiedrugiej równej jeden, tzn. do v1 = ( 1√
3, 1√
3, 1√
3)T , lub −v1.
Przetestuj algorytm bior¡c za x0:
(a) wektory losowe - otrzymane za pomoc¡ funkcji losowychrand() lub randn().
(b) wektor wªasny dla drugiej warto±ci wªasnej, tzn. dla minusjeden, czyli unormowany wektor v2 = (−2, 1, 1)T
(c) wektor prawie ortogonalny do v1 = ( 1√3, 1√
3, 1√
3)T , np. wek-
tor otrzymany przez zaburzenie ostatniej skªadowej wektorav2: (−2, 1, 1.01)T .
Czy we wszystkich tych przypadkach metoda zbiegnie do v1 lub−v1?Czy wybór x0 wpªywa na ilo±¢ iteracji metody pot¦gowej?
Zadanie 3 Napisz funkcj¦ octave'a z implementacj¡ metody pot¦gowej (11.1),tzn. napisz m-plik z funkcj¡:
function [ x , r , i t ]=power (A, to l , x0 )
która za parametry ma
• A - macierz wymiary N ×N , której wektora i warto±ci wªa-snej szukamy
• tol - warunek stopu, domy±lnie przyjmuj¡cy warto±¢ 10−12,
• x0 -wektor startowy niezerowy, domy±lnie losowy,
i która zwraca
• przybli»enie - unormowanego w normie drugiej - wektorawªasnego x dla najwi¦kszej warto±ci wªasnej co do moduªumacierzy A,
55
• r - przybli»enie tej warto±ci wªasnej,• it - ilo±¢ iteracji metody pot¦gowej.
Warunek stopu przyjmiemy jak w poprzednim zadaniu, tzn. »eiloraz Rayleigha rk przestanie si¦ zmienia¢. Je±li
|rk+1 − rk| < tol
to zatrzymujemy iteracj¦.
Zadanie 4 Utwórz macierz symetryczn¡ (ale nie diagonaln¡) N ×N o war-to±ciach wªasnych 1, . . . , N . Sprawd¹ dla N = 10, 100, 1000 czyfunkcja octave'a eig() znajdzie warto±ci wªasne tej macierzy.
Zadanie 5 Utwórz macierze symetryczne Aa (niediagonalne) wymiaru 11×11 o warto±ciach wªasnych 1, . . . , 10, a dla a = 11, 101, 1001 i zeznanymi wektorami wªasnymi.
Sprawd¹, ile iteracji b¦dzie potrzebowaªa metoda pot¦gowa dlalosowego wektora startowego do znalezienia najwi¦kszej warto±ciwªasnej.
Czy potwierdzaj¡ si¦ wyniki teoretyczne, »e szybko±¢ zbie»no±cizale»y od stosunku najwi¦kszej co do moduªu warto±ci wªasnejdo drugiej co do moduªu warto±ci wªasnej, czyli w tym zadaniua/10?
Zadanie 6 Dla macierzy z zadania 5 dla a = 11, 101 ze znanym wektoremwªasnym v1 dla warto±ci wªasnej a, przetestuj zbie»no±¢ xk obli-czanego przy pomocy metody pot¦gowej do v1. W szczególno±cisprawd¹, czy
‖v1 − xk‖2 = O(|λ2/λ1|k)dla λ2 = 10 i λ1 = a.
Zadanie 7 Dla macierzy z zadania 5 dla a = 11, 101 dla warto±ci wªasneja, przetestuj zbie»no±¢ rk ilorazu Rayleigha obliczanego przy po-mocy metody pot¦gowej do λ1. W szczególno±ci sprawd¹, czy
|λ1 − rk| = O(|λ2/λ1|2k)
dla λ2 = 10 i λ1 = a.
Zadanie 8 Dla macierzy z zadania 5 dla a = 11, 101 ze znanym wektoremwªasnym v1 dla warto±ci wªasnej 11 przetestuj zbie»no±¢ metodypot¦gowej dla ró»nych wektorów startowych:
56
• dla losowego wektora x0 ortogonalnego do v1 (jak go mo»nautworzy¢?)
• dla wektora prawie ortogonalnego - za x0 bierzemy w+10−6∗z, gdzie wTv1 = 0 i z to wektor losowy o normie drugiejrównej jeden.
• dla dowolnego losowego wektora x0
Prosz¦ powtórzy¢ testy kilka razy dla ka»dego podpunktu - czyzdarzyªo si¦, »e wyniki byªy istotnie ró»ne w zale»no±ci od wylo-sowanego wektora?
Zadanie 9 Zaimplementuj funkcj¦ analogiczn¡ do tej z zadania 3 z imple-mentacj¡ odwrotnej metody pot¦gowej, tzn. metody pot¦gowejzastosowanej do macierzy odwrotnej A−1 zamiast A:
function [ x , r , i t ]= invpower (A, to l , x0 )
Wszystkie parametry i zwracane warto±ci b¦d¡ takie same jak wfunkcji power() z zadania 3.
Zadanie 10 Utwórz macierz z zadania 5 dla a = 11, 101, 1001. Sprawd¹, ileiteracji b¦dzie potrzebowaªa odwrotna metoda pot¦gowa dla lo-sowego wektora startowego do znalezienia przybli»enia najmniej-szej warto±ci wªasnej przy ustalonym warunku stopu |rk−rk+1| ≤10−12. Tutaj rk - to odpowiedni iloraz Rayleigha.
Zadanie 11 Zaimplementuj funkcj¦ analogiczn¡ do tej z zadania 3 z imple-mentacj¡ odwrotnej metody pot¦gowej z przesuni¦ciem (shift),tzn. metody pot¦gowej zastosowanej do macierzy (A − b ∗ I)−1
dla parametru b:
function [ x , r , i t ]= invpowwiel (A, b , to l , x0 )
Tutaj b b¦dzie dodatkowym parametrem tej funkcji, a pozostaªeparametry i zwracane warto±ci pozostaj¡ takie same jak w funkcjiz zadania 3.
Zadanie 12 Utwórz macierz z zadania 5 dla a = 11, 101, 1001.
Sprawd¹, ile iteracji b¦dzie potrzebowaªa odwrotna metoda pot¦-gowa z przesuni¦ciem dla losowego wektora startowego i ró»nychwarto±ci parametru b = 1.3, 1.5, 1.8, 2.1, 2.01 do znalezienia ró»-nych warto±ci wªasnych macierzy Aa.
57
Zadanie 13 Zaimplementuj funkcj¦ analogiczn¡ do tej z zadania 3 z imple-mentacj¡ metody ilorazów Rayleigha:
function [ x , r , i t ]= ray l egh (A, b , to l , x0 )
Metoda polega na tym, »e dla danego wektora startowego x0 odrugiej normie równej jeden, obliczamy iloraz Rayleigha r0 =xT0Ax0 i iterujemy:
xk = (A−rk−1I)−1xk−1
‖(A−rk−1I)−1xk−1‖2rk = xTkAxk
k > 0 (11.2)
Oczywi±cie w implementacji prosz¦ nie oblicza¢ macierzy odwrot-nej do A− rk ∗ I, tylko rozwi¡zywa¢ ukªad równa« liniowych z t¡macierz¡.
Wszystkie parametry i zwracane warto±ci b¦d¡ takie same jak wfunkcji power() z zadania 3.
Zadanie 14 Przetestuj metod¦ ilorazów Rayleigha na przykªadzie macierzysymetrycznej z zadania 5 dla a = 11, 101, 1001 bior¡c losowywektor startowy. W kolejnych testach prosz¦ wzi¡¢ wektory star-towe bliskie wektorom wªasnym dla warto±ci wªasnych 2 i 7.
Zadanie 15 Zaimplementuj funkcj¦ octave'a sprowadzaj¡c¡ macierz syme-tryczn¡ A wymiaru N×N do macierzy podobnej trójdiagonalnej:QTBQ = A lub B = QAQT za pomoc¡ odpowiednich przeksztaª-ce« Householdera:
function [B,Q]= sym2tr id iag (A, typ )
która za parametry ma
• A - symetryczn¡ macierz wymiary N ×N• tol - typ zwracanej macierzy Q, typ=0 oznacza, »e Q jestzwracana jako macierz N × N - wymno»one macierze Ho-useholdera (domy±lna opcja), typ=1 oznacza, »e w macierzyQ zwracamy kolumny odpowiednich macierzy Householdera
i która zwraca
• B - trójdiagonaln¡ macierz symetryczn¡ podobn¡ do A wformacie rzadkim octave'a (sparse),
58
• Q macierz b¦d¡c¡ iloczynem przeksztaªce« Householderalub macierz, w której kolumnach s¡ odpowiednie wektoryHouseholdera w zale»no±ci od warto±ci parametru typ.
Zadanie 16 Przetestuj funkcj¦ z poprzedniego zadania dla jakiej± macierzysymetrycznej A (ani diagonalnej, ani trójdiagonalnej, ani trójk¡t-nej) o znanych warto±ciach wªasnych, np. dla macierzy z zadania5 dla a = 11, 101, 1001.
Policz norm¦ Frobeniusa ‖A−QTBQ‖F i ‖QAQT −B‖F .Sprawd¹, czy funkcja octave'a eig() dla obu macierzy zwróci tesame warto±ci wªasne, i czy odpowiednie wektory wªasne speª-niaj¡:
Qvk = wk, QTwk = vk,
gdzie wk to wektor wªasny macierzy B dla warto±ci wªasnej λk,a vk - to wektor wªasny dla tej samej warto±ci wªasnej λk dlamacierzy A.
59
Rozdziaª 12
Algorytm FFT
W tym rozdziale przedstawimy zadania laboratoryjne, w których przetestu-jemy dyskretn¡ transformat¦ Fouriera (DFT) oraz szybki algorytm jej obli-czania, czyli algorytm szybkiej trasformaty Fouriera; FFT (ang. Fast FourierTransform)
W opisie matematycznym przyjmujemy, »e mamy do czynienia z wekto-rami okresowymi o okresie dªugo±ci N indeksowanymi od zera i xk = xk+Ndla k ujemnych.
Przez FNx oznaczymy wynik dziaªania operatora DFT na wektorze x, aprzez F−1N x oznaczymy wynik dziaªania operatora odwrotnego do DFT nawektorze x.
Zadanie 1 Funkcja octave'a z algorytmem FFT �t (), która oblicza warto±¢DFT i funkcja octave'a z algorytmem odwrotnym FFT i�t (),która oblicza warto±¢ transformaty odwrotnej do DFT.
Sprawd¹, czy rzeczywi±cie operacje wykonywane przez �t () ii�t () s¡ do siebie odwrotne, tzn. dla ró»nych losowych wektorówx o dªugo±ci N = 4, 8, 16, 32 policz y = FNx za pomoc¡ �t (), anast¦pnie z = F−1N y za pomoc¡ i�t ().
Policz normy drugie ró»nicy z − x.
Zadanie 2 Skalowanie w funkcjach octave'a �t () i i�t ().
W literaturze zdarza si¦ de�nicja DFT bez 1/N przed macierz¡.Wtedy macierz odwrotn¡ do DFT nale»y przemno»y¢ przez Nalbo obie przez 1/
√N .
Sprawd¹, jaka jest staªa przed DFT obliczanym przez funkcj¦
60
�t (), tzn. wyznacz CN takie, »e
(FNx)j = CN
N−1∑k=0
xk exp(−2π ∗ j ∗ k/N)
dla FNx obliczanego przez t¦ funkcj¦ octave'a .
Zadanie 3 Sprawd¹, czy DFT obliczona przy pomocy funkcji �t () speªnia
‖FNx‖2 = CN‖x‖2ze staª¡ CN dla stu losowych wektorów x, oraz czy analogicznieodwrotna DFT obliczona i�t () speªnia:
‖F−1N y‖2 = C−1N ‖x‖2.
Zadanie 4 Algorytm szybkiego mno»enia wielomianów.
Napisz funkcj¦ octave'a
function w=polymult (p , q )
szybko mno»¡c¡ dwa wielomiany stopnia nie wi¦kszego od N ,dla których znamy ich wspóªczynniki w bazie pot¦gowej. Funk-cja powinna korzysta¢ z DFT i odwrotnej DFT, czyli dyskretnejtransformaty Fouriera i odwrotnej dyskretnej transformaty Fo-uriera.
Parametry funkcji powinny by¢:
• wektor p = (pk)k ze wspóªczynnikami wielomianu P (x) =∑k pkx
k,
• wektor q = (qk)k ze wspóªczynnikami wielomianu Q(x) =∑k qkx
k.
Funkcja powinna zwróci¢ wspóªczynniki wielomianuW (x) = P (x)∗Q(x) =
∑k wkx
k.
Sprawd¹ dziaªanie funkcji dla wielomianów P (x) = 1+x i Q(x) =2 + x, czyli (P ∗Q)(x) = 2 + 3x+ x2, a potem dla wielomianówdu»ych stopni, czyli np. dla Q(x) = x50 i P (X) = x50 +1 funkcjapowinna zwróci¢ wspóªczynniki wielomianu (P ∗Q)(x) = x100 +x50.
Porównaj czas oblicze« tej funkcji z wynikiem funkcji octave'aconv() dla wielomianów ró»nych stopni z losowymi wspóªczyn-nikami.
61
Zadanie 5 DFT a dyskretny splot dwóch wektorów.
Napisz dwie funkcje obliczaj¡ce splot dwóch wektorów z = x ? y
• wprost z de�nicji, tzn. zk =∑N−1
j=0 xkyk−j
• z wykorzystaniem DFT - tu musimy skorzysta¢ z tego, »e
(FN(x ? y))k = αN(FNx)k ∗ (FNy)k k = 0, . . . , N − 1
dla pewnej staªej αN . Trzeba t¦ staª¡ wyznaczy¢ teoretycz-nie albo eksperymentalnie.
Przetestuj obie funkcje dla losowych wektorów i ró»nychN = 4, 8, 64, 1024. Porównaj z wynikami funkcji octave'aconv(). Nale»y zapozna¢ si¦ z pomoc¡ do tej funkcji.
Zadanie 6 Filtry a DFT.
W niektórych zastosowaniach wspóªczynniki wektora x mog¡ od-powiada¢ próbkom sygnaªu (np. d¹wi¦ku). Stosuje si¦ wtedy�ltry w postaci splotu x z zadanym wektorem F peªni¡cym rol¦�ltru: x ? F .
Rozwa»my �ltr postaci F = 14∗ (1, 1, 1, 1, 0, . . . , 0)T (pierwsze
cztery wspóªrz¦dne s¡ równe 14, pozostaªe - zero).
Zastosuj ten �ltr do wektora imituj¡cego próbki sygnaªu z szu-mem: z = x+ y, gdzie xk = sin(k ∗ h) dla h = 2 ∗ π/N - imitujesygnaª bez szumów, a y jest wektorem losowym o warto±ciachw [−0.1, 0.1] imituj¡cym losowe zaburzenie, czyli tzw. szumy.Przetestuj �ltr dla du»ych N , np. N = 1024 lub 2048, tzn.:
• Narysuj wykres z przed zastosowaniem �ltra i po zastosowa-niu, tzn. wykresy z i z?F . Mo»na narysowa¢ maªy fragmentwykresu, np dla 100 ≤ k ≤ 120. Jaki efekt optyczny wida¢na wykresach?
• Policz maksimum z moduªu ró»nicy kolejnych elementówobu wektorów, tzn. maxk>0 |zk − zk−1| i maxk>0 |(z ? F )k −(z ? F )k−1|. Im ta warto±¢ dla danego wektora z próbkamisygnaªu jest mniejsza, tym sygnaª jest gªadszy, czyli mo»emyuzna¢ go za sygnaª z mniejsz¡ ilo±ci¡ szumów.
62
Rozdziaª 13
Przykªadowe projekty
zaliczeniowe
W tej cz¦±ci skryptu przedstawimy przykªady projektów na zaliczenia zaj¦¢z laboratorium komputerowego z matematyki obliczeniowej. Projekty mo»napotraktowa¢ jako trudniejsze zadania laboratoryjne.
Niektóre projekty s¡ proste je±li chodzi o stron¦ programistyczn¡. Wprzypadku wi¦kszo±ci takich projektów gªówn¡ cz¦±ci¡ jest przetestowaniedanej metody. Inne projekty mog¡ polega¢ na zaimplementowaniu bardziejskomplikowanej metody z wykorzystaniem ró»nych funkcji octave'a.
64
Interpolacja wielomianowa. Algorytm ró»nic dzie-
lonych.
1. Zaprogramuj w octave funkcje obliczaj¡c¡ warto±ci wielomianu zada-nego w bazie Newtona dla danych w¦zªów zmody�kowanym algoryt-mem Hornera dla danej tablicy punktów. Parametrami maj¡ by¢:
• x tablica punktów - wektor dªugo±ci N z w¦zªami bazy Newtona,
• a wektor dªugo±ci N + 1 ze wspóªczynnikami wielomianu w bazieNewtona,
• N - stopie« wielomianu (mo»na opcjonalnie obliczy¢ N z wektorawspóªczynników).
Funkcja zwraca y tablice warto±ci wielomianu w punktach x.
2. Zaprogramuj funkcj¦ obliczaj¡c¡ ró»nice dzielone dla danych N + 1w¦zªów i warto±ci funkcji w tych w¦zªach algorytmem ró»nic dzielonych(jak z tabelki ró»nic dzielonych). Parametry funkcji to:
• x wektor dªugo±ci N + 1 z ró»nymi w¦zªami
• y wektor dªugo±ci N + 1 z warto±ciami funkcji f w w¦zªach.
Funkcja powinna zwróci¢ wektor rd z ró»nicami dzielonymi rd(k) =f [x0, . . . , xk] dla k = 0, . . . , N .
Czy mo»na to zrobi¢ za pomoc¡ tylko jednej p¦tli w octavie?
3. Testy: Interpolacja funkcji f(x) = sin(x) i g(x) = sin(4∗x) na [−π, 2π]dla w¦zªów równoodlegªych i Czebyszewa.
• Porównanie algorytmu ró»nic dzielonych z algorytmem z funkcjioctave'a poly�t.
Znajd¹ wielomiany interpolacyjne w w¦zªach Czebyszewa i równo-odlegªych stopnia N dla N = 4, 8, 16, 32, 64 w bazie Newtona zapomoc¡ funkcji z projektu i za pomoc¡ funkcji poly�t octave'aw bazie pot¦gowej. Oblicz dyskretn¡ norm¦ maksimum (na 1000punktach) mi¦dzy wielomianem w bazie Newtona uzyskanym wªa-sn¡ funkcj¡, a jej wielomianem interpolacyjnym uzyskanym poly�t.Czy ró»nice s¡ pomijalne?
• Bª¡d interpolacji
65
Oblicz dyskretn¡ norm¦ maksimum (na 1000 punktach) mi¦dzyfunkcj¡, a jej wielomianem interpolacyjnym otrzymanym za po-moc¡ funkcji z projektu dla N = 4, 8, 16, 32, 64. Narysuj wykresyfunkcji i wykres jej wielomianu interpolacyjnego (na jednym ry-sunku).
Warto±¢ wielomianu w bazie Newtona obliczamy algorytmem Horneraz pierwszego podpunktu.
66
Równania nieliniowe. Metoda Ste�ensena
Zaprogramuj funkcj¦ octave'a z metod¡ Ste�ensena zde�niowan¡ wzorem
xn+1 = xn −f(xn)2
f(xn + f(xn))− f(xn)
- która ma znale¹¢ przybli»enie f(x∗) = 0.
Napisz funkcj¦:
function [ x , i t ]= s t e f (FCN, x0 )
w m-pliku steff.m z parametrami:
• FCN - 'wska¹nik' do funkcji (function handle) obliczaj¡cej warto±¢ f(x)dla danego argumentu x,
• x0 - liczba, przybli»enie startowe.
Funkcja powinna zwraca¢
• x obliczone przybli»enie pierwiastka,
• it - ilo±¢ iteracji.
Funkcja powinna si¦ zatrzyma¢, drukuj¡c komunikat o braku zbie»no±cina ekranie komputera, gdy ilo±¢ iteracji przekroczy 100.
W przypadku przekroczenia ilo±ci iteracji funkcja ma zwróci¢ komunikato tym na ekran.
Przetestuj metod¦ Ste�ensena z wykorzystaniem funkcji ste� () na przy-kªadach równa« rozpatrywanych w zadaniach w � 8.
W szczególno±ci nale»y sprawdzi¢, czy metoda zbiega kwadratowo lokal-nie, o ile f ′(x∗) 6= 0 dla konkretnej funkcji f(x) = x3 − 27.
67
Równania nieliniowe. Metoda Halleya
Zaprogramuj funkcj¦ octave'a z metod¡ Halleya, która jest metod¡ New-tona zastosowan¡ do funkcji
g(x) :=f(x)√|f ′(x)|
,
która ma znale¹¢ przybli»enie f(x∗) = 0.Wyprowad¹ wzór na kolejn¡ iteracj¦ metody Halleya, w którym b¦dziemy
potrzebowa¢ odwoªania tylko do warto±ci f , f ′ i f ′′.
Napisz funkcj¦ z metod¡ Halleya 1:
function [ x , i t ]= ha l l e y (FCN,DFCN, D2FCN, x0 )
w m-pliku halley.m z parametrami:
• FCN - 'wska¹nik' do funkcji (function handle) obliczaj¡cej warto±¢ f(x)dla danego argumentu x,
• DFCN - 'wska¹nik' do funkcji (function handle) obliczaj¡cej warto±¢pochodnej f ′(x) dla danego argumentu x,
• D2FCN - 'wska¹nik' do funkcji (function handle) obliczaj¡cej warto±¢drugiej pochodnej f ′′(x) dla danego argumentu x,
• x0 - liczba, przybli»enie startowe.
Funkcja powinna zwraca¢
• x obliczone przybli»enie pierwiastka,
• it - ilo±¢ iteracji.Jako warunek stopu nale»y przyj¡¢ warunek speªnienie, którego± z wa-
runków |f(xn)| < 10−7 lub |xn+1 − xn| < 10−10.Funkcja powinna si¦ zatrzyma¢, drukuj¡c komunikat o braku zbie»no±ci
na ekranie komputera, gdy ilo±¢ iteracji przekroczy 100.W przypadku przekroczenia ilo±ci iteracji funkcja ma zwróci¢ komunikat
o tym na ekran.
Przetestuj metod¦ Halleya z wykorzystaniem funkcji halley() na przykªa-dach równa« rozpatrywanych w zadaniach w � 8.
W szczególno±ci nale»y sprawdzi¢, czy metoda zbiega kubicznie lokalnie,o ile f ′(x∗) 6= 0 dla f(x) = x2 − 4 dla x∗ = 2.
1Tak, tego Halleya od komety Halleya.
68
Równania nieliniowe. Rozwikªywanie funkcji.
Rozpatrzmy dan¡ krzyw¡ okre±lon¡ równaniem f(x, y) = 0, gdzie funkcjaf(x, y) jest okre±lona na prostok¡cie [a, b]× [c, d].
Chcemy znale¹¢ przybli»one warto±ci funkcji y(x) zadanej w sposób uwi-kªany przez
f(x, y(x)) = 0
w punktach xk = a + k ∗ h dla h = (b − a)/N , znaj¡c dobre przybli»eniey(x0) = y(a) = y0. Tutaj N - to ustalona liczba naturalna.
• Napisz funkcj¦ (w m-pliku) octave'a, która dla danych parametrów
� FCN wska¹nika do funkcji dwóch argumentów f(x, y),
� ustalonych a, b - ko«ców odcinka
� y0 b¦d¡cego przybli»eniem y0
� N ilo±ci punktów, w których chcemy znale¹¢ przybli»enie yk ≈y(xk) - ten parametr mo»e by¢ opcjonalny. Je±li nie zostanie po-dany to powinien przyjmowa¢ domy±ln¡ warto±¢ sto.
Funkcja powinna zwróci¢ jako wektor yk = y(xk) dla k = 0, . . . , N .
W ka»dym kroku trzeba rozwi¡za¢, u»ywaj¡c funkcji octave'a fsolve ()),równanie nieliniowe:
g(yk) = f(xk, yk) = 0
bior¡c za startowe przybli»enie yk−1 (obliczone w poprzednim kroku dlak − 1).
Je±li si¦ oka»e, »e fsolve() nie potra� rozwikªa¢ funkcji powinien naekranie pojawi¢ si¦ komunikat o bª¦dzie.
• Testowa¢ na dwóch przykªadach:
� Fragment elipsy:
f(x, y) = 2 ∗ x ∗ x+ y ∗ y − 4.
Interesuje nas tu y(x) na [−1.5, 1.5] na siatce 101 punktowej. Zay0 mo»emy wzi¡¢ y0 = 1
� g(x, y) = x3 + y3 − 4 na [0, 1]× [0, 1].
69
Metoda Householdera. LZNK
Zaªó»my, »e w wyniku do±wiadczenia otrzymujemym punktów (xk, yk), którepowinny le»e¢ na jednej prostej, ale w wyniku bª¦dów pomiaru le»¡ tylkoblisko prostej. Chcemy wyznaczy¢ prost¡ y = ax + b, która le»y najbli»ejtych punktów w sensie najmniejszych kwadratów, tzn. takie a, b, »e suma
m∑k=1
|axk + b− yk|2
jest minimalna. To zadanie mo»emy przedstawi¢ jako odpowiednie regularneLZNK. Je±li istniej¡ dwa punkty o ró»nych odci¦tych, to LZNK ma jedno-znaczne rozwi¡zanie.
Celem projektu jest zaprogramowanie funkcji rozwi¡zuj¡cej problem zna-lezienia wspóªczynników prostej y = ax + b najlepiej przybli»aj¡cej danepunkty (xk, yk) k = 1, . . . ,m za pomoc¡ rozkª¡du QR macierzy przy pomocymetody Householdera. Tzn. szukamy (a, b) takich, »e
m∑k=1
|axk + b− yk|2 = mina,b
m∑k=1
|axk + b− yk|2.
Czyli: w funkcji rozwi¡zujemy LZNK A ∗ [a; b] ≈ ~y z macierz¡
A = [~x,~1]
dla wektorów
~1 =
11...1
,
~x =
x1x2...xm
i wektora prawej strony
~y =
y1y2...ym
.
Jako parametry wej±ciowe funkcji traktujemy wektory ~x, ~y dªugo±ci m,funkcja powinna zwraca¢:
70
• wektor [a; b] z rozwi¡zaniem tego LZNK,
• macierz A z LZNK
• macierz górnotrójk¡tn¡ R wymiaru 2 × 2 z rozkªadu QR macierzy Ametod¡ Householdera, tzn. A = Q ∗ [R; 0],
• dwukolumnow¡ macierz B = [~h1,~h2] wymiaru m × 2 - w której od-
powiednie kolumny to wektory Householdera ~hk k = 1, 2 dla macierzyHouseholdera Hk takich, »e H1 ∗H2 = Q.
Je±li kolumny macierzy A oka»¡ si¦ zale»ne liniowo - funkcja ma zwróci¢odpowiedni komunikat na ekran.
Testy:
1. Przetestuj dla dwóch ró»nych punktów z ró»nymi xk - czy znajdzieprost¡ przechodz¡c¡ przez te punkty.
2. Przetestuj dla punktów le»¡cych na prostej: tzn. wygeneruj kilka ró»-nych losowych punktów xk i przyjmij yk = 2 ∗ xk − 10. Nast¦pniesprawd¹, czy funkcja zwróci a = 2, b = −10.
3. Przetestuj dla punktów le»¡cych blisko danej prostej: tzn. przyjmij np.xk = k/m dla k = 1, . . . ,m dla ró»nych m > 1 z yk = xk + 2 + εk dlaεk losowego z przedziaªu [−10−3, 10−3]
(funkcja octave'a rand() zwraca losowe punkty z przedziaªu [0, 1]).
4. Sprawd¹, czy rzeczywi±cie dla otrzymanych wektorów Householdera imacierzy R,A zachodzi
A = H1 ∗H2 ∗ [R; 0],
np. dla przykªadów z poprzednich podpunktów. W tym celu mo»nastworzy¢ macierze Hk i [R; 0] i te trzy macierze wymno»y¢.
71
Bibliogra�a
[1] Åke Björck i Germund Dahlquist. Metody numeryczne. Pa«-stwowe Wydawnictwo Naukowe (PWN), Warszawa, 1983.Przetªumaczone ze szwedzkiego przez Stefana Paszkowskiego.
[2] James W. Demmel. Applied numerical linear algebra. So-ciety for Industrial and Applied Mathematics (SIAM), Phila-delphia, PA, 1997.
[3] Maksymilian Dryja, Janina Jankowska, i Michaª Jankowski.Metody numeryczne, tom 2. Wydawnictwo Naukowo Tech-niczne (WNT), Warszawa, 1982.
[4] John W. Eaton. GNU Octave Manual. Network Theory Li-mited, 2002.
[5] Gene Golub i James M. Ortega. Scienti�c computing. Aca-demic Press Inc., Boston, MA, 1993. An introduction withparallel computing.
[6] Gene H. Golub i James M. Ortega. Scienti�c computing
and di�erential equations. Academic Press Inc., Boston, MA,1992. An introduction to numerical methods.
[7] Wolfgang Hackbusch. Iterative solution of large sparse sys-
tems of equations, tom 95, Applied Mathematical Sciences.Springer-Verlag, New York, 1994. Translated and revisedfrom the 1991 German original.
72
[8] Janina Jankowska i Michaª Jankowski. Metody numeryczne,tom 1. Wydawnictwo Naukowo Techniczne (WNT), War-szawa, 1981.
[9] C. T. Kelley. Solving nonlinear equations with Newton's me-
thod. Fundamentals of Algorithms. Society for Industrial andApplied Mathematics (SIAM), Philadelphia, PA, 2003.
[10] A. Kieªbasi«ski i H. Schwetlick. Numeryczna algebra liniowa:
wprowadzenie do oblicze« zautomatyzowanych. WydawnictwoNaukowo Techniczne (WNT), Warszawa, 1992.
[11] David Kincaid i Ward Cheney. Analiza numeryczna. Wydaw-nictwo Naukowo-Techniczne (WNT), 2006.
[12] J. M. Ortega i W. C. Rheinboldt. Iterative solution of non-
linear equations in several variables, tom 30, Classics in Ap-
plied Mathematics. Society for Industrial and Applied Ma-thematics (SIAM), Philadelphia, PA, 2000. Reprint of the1970 original.
[13] James M. Ortega. Numerical analysis, tom 3, Classics in
Applied Mathematics. Society for Industrial and Applied Ma-thematics (SIAM), Philadelphia, PA, second edition, 1990. Asecond course.
[14] Al�o Quarteroni, Riccardo Sacco, i Fausto Saleri. Nume-
rical mathematics, tom 37, Texts in Applied Mathematics.Springer-Verlag, New York, 2000.
[15] Al�o Quarteroni i Fausto Saleri. Scienti�c computing with
MATLAB, tom 2, Texts in Computational Science and En-
gineering. Springer-Verlag, Berlin, 2003.
[16] Anthony Ralston. Wst�ep do analizy numerycznej. Pa«stwoweWydawnictwo Naukowe (PWN), Warszawa, 1983.
73
[17] J. Stoer i R. Bulirsch. Wst�ep do metod numerycznych. Tom
drugi. Pa«stwowe Wydawnictwo Naukowe (PWN), War-szawa, 1980. Przetªumaczone z niemieckiego przez Maªgo-rzat�e Mikulsk�a.
[18] Lloyd N. Trefethen i David Bau, III. Numerical linear alge-
bra. Society for Industrial and Applied Mathematics (SIAM),Philadelphia, PA, 1997.
74