76

Zadania i scenariusze zaj¦¢ z laboratorium …dydmat.mimuw.edu.pl/sites/default/files/wyklady/...niu pakietu oblicze« numerycznych octave albo pakietu matlab. Spis tre±ci 1 Wst

  • 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

Scenariusze i zadania

komputerowe

4

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

Projekty zaliczeniowe

63

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