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 tygodnie laboratorium komputerowego do semestralnego wykªadu z Matematyki Obliczeniowej. Zakªadamy,»e zadania zostan rozwi zane przy wykorzystaniu 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 komputerowym jest przetestowanie numerycznych metod omawianych w czasie wykªadu i wicze«z Matematyki Obliczeniowej. Zadania komputerowe przedstawione w tym zbiorze polegaj na implementacji metod numerycznego rozwi zywania zada«z wykorzystaniem pakietu octave, czyli ±rodowiska oblicze«numerycznych-naukowych i przetestowaniu funkcji octave'a, które s w stanie rozwi za zadania omawiane w trakcie kursu Matematyki Obliczeniowej. Cz ± funkcji octave'a wywoªuje odpowiedni bibliotek numeryczn, w któ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,»e kolejne 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 i j zykiem programowania. Umo»liwia on proste rozwi zywanie podstawowych zada«numerycznych jak: numeryczne obliczenie caªki, rozwi zanie zada«liniowych lub nieliniowych, równa«ró»niczkowych zwyczajnych itp. Mo»na go u»ywa z linii komend, pisa wªasne skrypty, czy m-pliki (czyli pliki z implementacjami wªasnych funkcji octave'a). Pakiet octave jest programem ogólnodost pnym jako wolne oprogramowanie. Rozprowadzany jest na zasadach licencji GNU GPL. Warto doda,»e pakiet octave jest odpowiednikiem ±rodowiska matlab, które jest programem komercyjnym, 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 dystrybuowany 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 pny on-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 jest ksi»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 czników do matematyki obliczeniowej, inaczej nazywanej te» metodami numerycznymi, czy analiz numeryczn. Niektóre z nich zawieraj zadania komputerowe. Warto poleci ksi»ki: [15], [14]. Obie zawieraj wi cej materiaªu ni» standardowy kurs matematyki obliczeniowej na wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego. Innymi wartymi polecenia podr cznikami i monograami 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] dost 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 cia z laboratorium komputerowego do Matematyki Obliczeniowej polegaj zazwyczaj na rozwi zaniu kilku zada«z zadanego tematu. Pozostaªe zadania mog zosta ewentualnie zadane do rozwi zania samodzielnego. Zaj cia z laboratorium do Matematyki Obliczeniowej na wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego odbywaj si co dwa tygodnie, wi c ilo± rozdziaªów w tym skrypcie przewy»sza standardow 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 powinien 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 W przypadku przeznaczenia dwóch laboratoriów scenariusz ka»dych zaj polega 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 kilkanajwa»niejszych pozycji z listy zada«. Zadania w tym rozdziale ilustruj podstawowe operacje, struktury i wªasno±ci octave'a. Przedstawimy w zadaniach octave jako kalkulator naukowy. Omówimy te» operator dwukropek sªu» cy np. tworzeniu indeksów. Przetestujemy, jak tworzy macierze, wektory; jak zapisywa zmienne do plików (czyta z plików) w formatach: tekstowym i binarnym. Sprawdzimy tworzenie macierzy z podmacierzy, wycinanie podmacierzy i inne podstawowe operacje na macierzach - mno»enie, dodawanie, transponowanie, funkcje matematyczne od macierzy, normy wektorów/macierzy. Zadania obejmuj równie» tworzenie wykresów funkcji matematycznych przy pomocy funkcji octave'a plot(). Sprawdzimy te» tworzenie i u»ywanie skryptów i funkcji (m-pliki) w octavie, oraz podstawowe instrukcje warunkowe 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, ile wynosi pierwiastek z 5 oraz policz warto± funkcji sin na tym pierwiastku. Zadanie 2 Operacje macierzowe. Operator dwukropek. Utwórz wektor z liczbami od 1 do 20 oraz wektor ze wszystkimi liczbami parzystymi od 6 do 4. Utwórz dowolne macierze 3x4 A i 3x5 B, a nast pnie macierz 3x8 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ªównego 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 ± macierzy D Wstaw D z powrotem do C jako gªówny minor. Policz sin(d) = (sin(d ij ) od D. Zapisz D do pliku (binarnego i ASCII) - zamie«element D(1,1) na -100 i wczytaj now macierz do octave'a. Zadanie 3 Funkcje matematyczne od macierzy. Normy macierzy i wektorów Policz dyskretn norm maksimum od (sin(x)) 2 na [0, 1] (wektorowoczyli 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 powinien by podpisany, narysowany za pomoc gwiazdek w kolorze czerwonym. Narysuj w jednym oknie podpisane wykresy funkcji sin(x) i log(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ów ekstremalnych. Powtórz to zadanie dla jakiego± wielomianu stopnia dwa i trzy np. x 3 + x 2 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 matematycznej z parametrem: sin(a x) - parametr przeka» jako zmienn 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±li X = (x i,j ) i,j macierz wymiaru M N, to funkcja powinna zwróci Y macierz wymiaru M N tak,»e Y = (y i,j ) i,j, y i,j = f(x i,j ). Narysuj wykres f na odcinku [ 1, 5] z wykorzystaniem tylko jednego wywoªania tak zaimplementowanej funkcji octave'a. Zadanie 9 Funkcje anonimowe. Utwórz funkcj uchwyt do funkcji anonimowej, która dla danego argumentu 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 na ekranie printf(). Przy pomocy p tli for ( k =... ) endfor 7
while ( warunek stopu ) endwhile oblicz sum dla N = 100. U»yj instrukcji warunkowej i f ( ) endif S N = 1 +... + N by sprawdzi, czy otrzymane S N zostaªo obliczone poprawnie, 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 podwójnej precyzji, jakkolwiek w najnowszych wersjach octave'a mo»na równie» sztucznie wymusi u»ywanie zmiennych w precyzji pojedynczej przy pomocy funkcji single (a) zwracaj cej zmienn pojedynczej precyzji z t sam warto±ci. Jedn z wa»nych wªasno±ci arytmetyki zmiennopozycyjnej, która wynika z jej konstrukcji, jest to,»e odejmowanie dwóch warto±ci o tym samym znaku o 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 funkcji w octave'ie. Sprawd¹, czy prawd jest,»e 1 + eps obliczone w arytmetyce podwójnej precyzji w octave'ie jest wi ksze od jeden. Przyjmij,»e a = single(eps) i sprawd¹, czy ponownie 1 + a jest wi 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 jej do jeden otrzymujemy liczb wi ksz od jeden. B dziemy szukali liczby postaci 2 t dla t - ilo±ci bitów mantysy. Porównaj z eps komend octave'a. Zadanie mo»na te» wykona w C/C++. Czy otrzymane wyniki s takie same jak te otrzymane w octavie (dla liczb typu double)? 9
Zadanie 3 Epsilon maszynowy w arytmetyce pojedynczej precyzji Powtórz poprzednie zadanie dla arytmetyki pojedynczej precyzji. Funkcja octave'a single (x) tworzy zmienne takiego typu. Wykorzystuj c t funkcj ponownie wyznacz epsilon maszynowy jako liczb postaci 2 t, ale dla liczb w pojedynczej precyzji. Zadanie 4 Narysuj wykres funkcji f(x) = (x + a) a na [0, 1] dla ró»nych warto±ci a = 10 k 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 Policz f(x) = x 1 + x x algorytmem wprost wynikaj cym z tego wzoru, a nast pnie z wykorzystaniem równowa»nego wzoru tzn. prosz zastosowa : Algorytm 1 oraz Algorytm 2 f(x) = a = 1 + x 2 1 x + 1 + x x w 1 = x a a = 1 + x 2 w 2 = 1 x + a dla x = 10 k i k = 4,..., 10. Czy wida ró»nic w wyniku? Powtórz zadanie w arytmetyce pojedynczej precyzji, tzn. z wykorzystaniem funkcji octave'a single (x). Zadanie 6 Wykres wielomianu na dwa sposoby Oblicz warto±ci wielomianu (x 2) 4 = x 4... + 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), f 1 (x) = a 4 ; 10
Algorytm 2 f 2 (x) = x x x x... + 16. Matematycznie f 1 f 2, ale wyniki obliczone w arytmetyce zmiennopozycyjnej mog si ró»ni. Narysuj wykresy obu funkcji i policz bª d f 1 (x) f 2 (x), czyli max k f 1 (x(k) f 2 (x(k)). Tu x(k) = 2 a + k h dla h = a/500. Wektor x mo»na utworzy w octavie przy pomocy funkcji octave'a linspace(). Zadanie 7 Powtórz poprzednie zadanie dla arytmetyki pojedynczej precyzji, tzn. powtórz obliczenia wielomianu (x 2) 4 = x 4... + 16 na odcinku [2 a, 2 + a] dla a = 10 3, 10 2, 10 4 dla zmiennych w pojedynczej precyzji uzyskanych za pomoc funkcji octave'a: single (x). Narysuj wykresy wielomianu obliczanego obydwoma algorytmami. Zadanie 8 Przybli»enie exp(x) z rozwini cia w szereg k=0 xk /k!. Za odpowiedni aproksymacje exp(x) bierzemy najpierw sto pierwszych elementów szeregu czyli przybli»amy exp(x) przez F N (x) = N k=0 x k k!, dla N = 100, a potem przybli»amy przez tysi c elementów szeregu, czyli ustalamy N = 1000. Sprawd¹ bª d wzgl dny F N (x) exp(x) / exp(x) dla x od 100 do 100 (np. dla liczb ró»ni cych si o dziesi, czyli 100 +k 10 dla k = 0,..., 20) dla obu warto±ci N. Czy bª dy dla liczb ujemnych i dodatnich s tego samego rz du? Jak zmodykowa powy»sz metod przybli»onego obliczania funkcji 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 I n = 1 0 xn /(5+x)dx n = 0,.., 20 dwoma algorytmami ze wzoru I n + 5 I n 1 = 1/n 11
Pierwszy algorytm przyjmuje I 0 = log(6/5) i oblicza z powy»- szego wzoru kolejne dla n = 1, 2, 3,.... I n = 1/n 5 I n 1 Drugi algorytm wykorzystuje fakt,»e 1 (n + 1)6 I n 1 (n + 1)5 (3.1) W tym algorytmie przyjmujemy za I 30 jak kolwiek warto± z tego przedziaªu np. I 30 = 1/180 i iterujemy w tyª, tzn. dla n = 30, 29,..., 20,..., 0 obliczamy I n 1 = 1 5 (1/n I n). Porównaj wyniki obu algorytmów dla 0 n 20 oraz sprawd¹ czy wyniki otrzymane w octave'ie speªniaj oszacowanie (3.1) dla n = 1,..., 20. Dlaczego jeden z algorytmów dziaªa zdecydowanie lepiej w arytmetyce zmiennopozycyjnej? Jako dodatkowe zadanie teoretyczne pozostawimy uzasadnienie wzoru rekurencyjnego i oszacowania (3.1) wykorzystywanych w algorytmach. Zadanie 10 Zastosuj algorytm bisekcji (algorytm poªowienia odcinka) dla funkcji (x 2) 3 liczonej z wzoru na rozwini cie dwumianu x 3... 8 startuj c z a = 2 10 3 a b = 2 + 10 3. Jako warunek zako«- czenia dziaªania algorytmu przyjmujemy,»e bª d jest mniejszy od 10 20 (za przybli»enie rozwi zania przyjmujemy ±rodek danego odcinka w metodzie bisekcji, czyli warunkiem zako«czenia iteracji jest to,»e dªugo±ci odcinka, w którym jest rozwi zanie powinna by mniejsza od 2 10 20 ). Czy algorytm zwraca przybli»enie liczby dwa jedynego pierwiastka tego wielomianu? Narysuj wykresy tej funkcji obliczone z obu wzorów. tzn. (x 2) 3 i x 3... 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 miejsce zerowe w otoczeniu dwa? 12
Rozdziaª 4 Interpolacja Lagrange'a, bazy wielomianów W tym rozdziale zajmiemy si interpolacj wielomianow. Zadanie interpolacji wielomianowej polega na znalezieniu wielomianu stopnia nie wi kszego od n, speªniaj cego n + 1 warunków interpolacyjnych. W octave'ie istnieje funkcja znajduj ca wspóªczynniki wielomianu interpolacyjnego Lagrange'a. Jest to funkcja polyt(), czyli funkcja obliczaj ca wspóªczynniki wielomianu interpolacyjnego w bazie pot gowej dla zadanych warto±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 lub równocze±nie wielu punktach - czyli wektorowo. Co wa»ne, obie funkcje s ze sob zgodne. Trzeba uwa»a na kolejno± wspóªczynników; octave numeruje wspóªczynniki w bazie pot gowej (x j ) n j=0 przestrzeni wielomianów stopnia nie wi kszego od n w odwrotnej kolejno±ci tzn. (x n, x n 1,..., 1) czyli np. wektor wspóªczynników (3, 2, 1) odpowiada wielomianowi 3x 2 +2x+ 1. Oczywi±cie stopnie«wielomianu, a dokªadniej: dla jakiego n rozpatrujemy baz pot gow dla tego wektora, jest dªugo±ci wektora wspóªczynników pomniejszon o jeden. Zadanie 1 Zapoznaj si z pomoc octave'a do funkcji octave'a polyval(). Oblicz warto± wielomianu x 50 1 dla x = 1, 0, 1. Zadanie 2 Korzystaj c z funkcji polyval() narysuj wykres wielomianu x 3 + x 2 bez wykorzystania p tli - czyli wektorowo. 13
Zadanie 3 Zadanie 4 Test funkcji polyt(). Zapoznaj si z pomoc octave'a do funkcji octave'a polyt(). Wykorzystuj c funkcj polyt() znajd¹ wielomian interpolacyjny L n F dla funkcji F (x) = sin(x) dla w zªów 1, 0, 1. Policz warto- ±ci ró»nicy F L n F w w zªach oraz korzystaj c z funkcji plot() narysuj wykresy F i L n F 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 wykorzystaniem funkcji polyval(). Interpolacja Lagrange'a - zbie»no± ci gu wielomianów interpolacyjnych dla w zªów równoodlegªych i w zªów Czebyszewa: Wykorzystuj c funkcj polyt() znajd¹ wielomiany interpolacyjne L N f dla funkcji f = sin() dla N w zªów równoodlegªych na [0, 2 π] dla N = 4, 8, 16, 32, 64. Oblicz dyskretn norm maksimum ró»nicy f L N f na siatce tysi ca równoodlegªych punktów na tym odcinku, tzn. e N = max f(x k ) L N f(x k ), gdzie x k to punkty siatki. Policz stosunek e N /e 2N dla N < 64. Czy bª dy malej do zera? Jak zachowuje si e N /e 2N? 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 dla ró»nych N - u»ywaj c funkcji polyval() i plot(). Zadanie 5 Zadanie 6 Powtórz zadanie 4 dla tej samej funkcji i tego samego odcinka dla w zªów Czebyszewa. W zªy Czebyszewa to pierwiastki wielomianu: T n+1 (t) = cos((n + 1)arccos(t)) na [ 1, 1] odpowiednio przesuni te i przeskalowane. Przetestuj, czy bª dy e N dla w zªów Czebyszewa s mniejsze ni» dla w zªów równoodlegªych. Napisz funkcj znajduj c wspóªczynniki w bazie pot gowej wielomianu interpolacyjnego zadanego stopnia dla w zªów równoodlegª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 handle) 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 L N f wielomianu interpoluj cego funkcj w tych w zªach oraz en przybli»enie dyskretnej normy maksimum ró»nicy L N f f na tym odcinku. Przybli»enie normy maksimum liczymy na dyskretnej siatce zawieraj cej tysi c punktów. Zadanie 7 Powtórz zadanie 4 dla obu typów w zªów, tzn. powtórz znajdowanie wielomianów interpolacyjnych na w zªach równoodlegªych i 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 maksimum malej wraz ze wzrostem N? Porównaj wyniki otrzymane w tym zadaniu w obliczeniach z oszacowaniami teoretycznymi bª du interpolacji Lagrange'a. Zadanie 8 Interpolacja Lagrange'a - przykªad Rungego. Powtórz zadanie 4 dla obu typów w zªów, tzn. znajdowanie wielomianów interpolacyjnych na w zªach równoodlegªych i w zªach Czebyszewa, ale dla funkcji: f(x) = 1/(1 + x x) na [ 5, 5]. Czy obliczone wyniki wskazuj na to,»e obliczone ci gi wielomianów interpolacyjnych zbiegaj do f jednostajnie dla obu typów w zªów? 15
Zadanie 9 Napisz funkcj octave'a obliczaj c warto± wielomianu zadanego w bazie pot gowej tzn. w(x) = n a k x k k=0 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 a minus jeden) Funkcja ma zwróci warto±ci wielomianu dla warto±ci w x. Przetestuj funkcj dla wielomianów 1 + x 2 oraz 1 2x + x 2 dla w zªów równoodlegªych na [ 1, 2], tzn. policz warto±ci wielomianów dla kilku warto±ci oraz narysuj wykresy tych wielomianów z wykorzystaniem tej funkcji. Zadanie 10 Napisz funkcj octave'a znajduj c dla danego wielomianu stopnia n: n w(x) = a k x k k=0 oraz danej liczby q wspóªczynniki (b k ) n k=0 wielomianu oraz warto± r takie,»e n 1 p(x) = b k x k k=0 w(x) = (x q) p(x) + r, obliczone z wykorzystaniem algorytmu Hornera. Zadanie 11 Napisz funkcj octave'a znajduj c dla danego wielomianu stopnia n: n w(x) = a k x k oraz liczby q warto± w(q) i pochodnej w (q), obliczone z wykorzystaniem algorytmu Hornera. k=0 16
Zadanie 12 Algorytm Hornera w bazie Newtona. Ró»nice dzielone. Zaprogramuj w octavie funkcj ze zmodykowanym algorytmem Hornera zwracaj c warto± wielomianu zadanego w bazie Newtona dla danych w zªów. Parametrami b d x punkt, w którym obliczamy wielomian (ewentualnie tablica punktów, ale wtedy funkcja te» musi zwróci wektor z warto±ciami wielomianu w tych punktach), N - stopnie«wielomianu, wektor dªugo±ci N + 1 ze wspóªczynnikami wielomianu w bazie Newtona. Przetestuj na kilku prostych przykªadach: dla w zªów 1, 0, 1 i wielomian w(x) = x 2, który w bazie Newtona zwi zanej z tymi w zªami ma nast puj c posta : x 2 = (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óªczynniki tego wielomianu w bazie Newtona dla zadanych w zªów podanych w wektorze y. Tzn. parametrami funkcji b d : wektor a = (a k ) k taki,»e w(x) = n a k x k k=0 y = (y k ) k wektor wspóªczynników bazy Newtona. Zadanie 14 Funkcja powinna zwróci wektor wspóªczynników b k takich,»e n w(x) = b k w k, gdzie k=0 w k (x) = Π k 1 j=0 (x y j). Napisz funkcj, która dla danego wielomianu w(x), którego wspóªczynniki w bazie Newtona (w k ) n k=0 znamy, oblicza wspóªczynniki tego wielomianu w bazie pot gowej (1, x, x 2,..., x n ). Tzn. parametrami funkcji jest wektor wspóªczynników b = (b k ) k takich,»e n w(x) = b k w k k=0 17
i wektor y = (y k ) k w zªów bazy Newtona (w k ) n k=0 dla w k (x) = Π k 1 j=0 (x y j). Funkcja ma zwróci wektor wspóªczynników a = (a k ) k takich,»e w(x) = n a k x k. k=0 Zadanie 15 Sprawd¹ eksperymentalnie ile wynosi dla ró»nych warto±ci N = 4, 8, 16, 32, 64,... przybli»enie: A r,n = N l k,[ 1,1] k=0 dla {l k } N k=0 bazy Lagrange'a dla w zªów równoodlegªych na [ 1, 1], tzn. dla x k = 1 + k h dla h = 2/N. Norm maksimum funkcji f,[a,b] liczymy w sposób przybli»ony obliczaj 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. przybli»enie: N = 4, 8, 16, 32, 64,... A c,n = N l k,[ 1,1] k=0 dla {l k } N k=0 bazy Lagrange'a dla w zªów Czebyszewa na [ 1, 1], tzn. dla x k zer wielomianu T N+1 (x) = cos((n + 1)arccos(x)). Norm maksimum funkcji f,[a,b] liczymy w sposób przybli»ony obliczaj 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 i w zªów Czebyszewa na odcinku [0, 10] i dla odpowiedniej normy maksimum na tym odcinku. Zadanie 18 Policz iloraz L N f,[ 5,5] N k=0 l k,[ 5,5] 18
dla f = 1/(1+x 2 ) i L N f wielomianu interpoluj cego f w w zªach równoodlegªych na [ 5, 5] dla N = 10, 20, 40, 80. Tutaj {l k } N k=0 baza Lagrange'a dla tych w zªów. Norm maksimum funkcji f,[a,b] liczymy w sposób przybli»ony obliczaj 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 odcinka dla w zªów Czebyszewa zamiast w zªów równoodlegªych. 19
s(x 1 ) = y 1. Rozdziaª 5 Splajny kubiczne i liniowe. Interpolacja splajnowa W tym rozdziale zajmiemy si interpolacj splajnow, czyli interpolowaniem danej funkcji za pomoc splajnów - inaczej funkcji gi tych. Skupimy si na splajnach kubicznych, czyli funkcjach, które s klasy C 2 na odcinku [a, b] i dla danego podziaªu tego odcinka: a = x 0 < x 1... < x N = b na pododcinki. Te funkcje obci te do ka»dego pododcinka [x i, x i+1 ] s wielomianami kubicznymi. Zadanie interpolacji splajnami kubicznymi polega na znalezieniu spaljnu kubicznego s speªniaj cego: s(x 0 ) = y 0 s(x N ) = y N dla zadanych warto±ci y k. Okazuje si,»e tak postawione zadanie nie jest jednoznaczne; trzeba doda dwa dodatkowe warunki na s. Zazwyczaj s to odpowiednie warunki brzegowe, tzn. zwi zane z warto±ciami s, pierwszych lub 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 s 1 na podziale równomiernym odcinka [ 3, 3] z w zªami {x k = k} 20
dla k = 3, 2,..., 3 przyjmuj cego warto±ci s 1 (x k ) = ( 1) k w tych w zªach. Nast pnie znajd¹ wspóªczynniki splajnu kubicznego s 2 na tym samym podziale odcinka i przyjmuj cego te same warto±ci w w zªach co s 1, ale który dodatkowo przyjmuje warto±ci pochodnych w 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 s 1 i s 2 na tym samym rysunku. Czy otrzymali±my te same splajny? Policz przybli»on norm maksimum ró»nicy s 1 s 2 na odcinku [ 3, 3]. Zadanie 2 Zadanie 3 Zadanie 4 Splajn kubiczny bazowy. Dla danych w zªów równoodlegªych {k} k= 5, 4,...,5 na [ 5, 5] narysuj wykres splajnu kubicznego typu not-a-knot (czyli splajnu, którego wspóªczynniki zwróci funkcja spline() przy najprostszym wywoªaniu przez podanie wektora w zªów i wektora warto±ci w tych w zªach, por. help spline) takiego,»e s(0) = 1 i s(k) = 0 dla w zªów k 0. Okre±l na podstawie wykresu no±nik tego splajnu. Splajn kubiczny o minimalnym no±niku. Dla danych w zªów równoodlegªych {k} k= 5, 4,...,5 na [ 5, 5] narysuj wykres splajnu kubicznego takiego,»e s( 1) = s(1) = 1, s(0) = 4 i s(k) = 0 dla w zªów k { 1, 0, 1} oraz ma pochodne 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 tego splajnu. Testowanie eksperymentalne rz du zbie»no±ci splajnu interpolacyjnego kubicznego z hermitowskimi warunkami brzegowymi. Korzystaj c z funkcji octave'a spline() znajd¹ wspóªczynniki interpolacyjnego splajnu kubicznego hermitowskiego S N na N w zªach równoodlegªych dla funkcji f(x) = sin(x) na odcinku [ π, 2 π] dla N = 2 k N 0 dla N 0 = 5 i k = 1, 2, 3, 4, 5. Nast pnie 21
narysuj wykresy funkcji f(x) i splajnów S N dla ró»nych N. oblicz dyskretn norm maksimum na siatce równomiernej zªo»onej z tysi ca punktów na tym odcinku, tzn. e N = max k sin(x k ) S N (x k ) dla x k punktów siatki. policz równocze±nie wspóªczynnik e N e2n. Czy prawd jest,»e e N e 2N 2 p dla jakiego± p caªkowitego np. p = 4, 8 lub 16? Zadanie 5 Zadanie 6 Zadanie 7 Testowanie eksperymentalne rz du zbie»no±ci splajnu interpolacyjnego kubicznego bez warunków brzegowych (splajn typu not a knot). Powtórz zadanie 4, ale dla splajnów interpolacyjnych otrzymanych przez spline() bez podawania warto±ci pochodnych w skrajnych w zªach. Czy wspóªczynniki N e e 2N s te same? Tzn. czy szybko± zbie»no±ci sin(x) S N jest taka sama? Testowanie eksperymentalne rz du zbie»no±ci splajnu interpolacyjnego kubicznego naturalnego (warunek brzegowy - zerowanie si drugich pochodnych w ko«cach odcinka). Powtórz zadanie 4, ale dla splajnów interpolacyjnych naturalnych. Tu trzeba wykorzysta funkcj z octave-forge (czyli rozszerzenia 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 Przykªad Rungego, czyli f(x) = 1/(1 + x x) i odcinek [ 5, 5], a zbie»no± interpolacji splajnami kubicznymi. Przetestuj jak w poprzednich zadaniach, czy splajny interpolacyjne kubiczne z podanymi warunkami na pochodne w ko«cach odcinka zbiegaj w normie supremum do f, tzn. korzystaj c z funkcji octave'a spline() znajd¹ wspóªczynniki splajnu interpolacyjnego kubicznego S N na N w zªach równoodlegªych dla f na odcinku [ 5, 5] dla N = 2 k N 0 dla N 0 = 5 i k = 1, 2, 3, 4, 5 oraz narysuj wykresy f i tych splajnów dla ró»nych N. 22
Nast pnie oblicz dyskretn norm maksimum na siatce zªo»onej z tysi ca punktów na tym odcinku, tzn. e N = max sin(x k ) S N sin(x k ) dla x k = 5 + k 0.01 z k = 0,..., 1000. Policz równocze±nie wspóªczynnik e N e2n. Czy e N e2n p caªkowitego? 2 p dla jakiego± Zadanie 8 Zadanie 9 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 stopnia na caªym odcinku [ 1, 1] np. s(x) = x 2 lub (x + 1) 3. 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 wielomian trzeciego stopnia na caªym odcinku [ 1, 1] np. f(x) = (x + 1) 3. Nast pnie sprawd¹ wspóªczynniki s w bazie {(x x k ) j } j=0,1,2,3 za pomoc umkpp() na obu przedziaªach, tzn. dla x 0 = 1 na przedziale [ 1, 0] i x 1 = 0 na [0, 1]. Zadanie 10 Zadanie 11 Znajd¹ za pomoc funkcji octave'a umkpp() wspóªczynniki splajnu z 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 ma no±nik. Porównaj z wynikami otrzymanymi teoretycznie. Interpolacja splajnami liniowymi. Dla danego równomiernego podziaªu odcinka [ π, 2 π] na N pododcinków utwórz za pomoc mkpp() struktur splajnu liniowego s n interpoluj cego funkcj sin(x) w w zªach dla N = 3, 6, 9, 18. Narysuj wykresy funkcji sin(x) oraz tych splajnów liniowych na jednym wykresie Policz przybli»one normy maksimum (na 1000 punktach z tego odcinka) bª du e N = sin s n. Policz wspóªczynnik e N e2n. Czy wida,»e e N e 2N 2 p dla jakiego± p caªkowitego np. p = 2, 4 lub 8? 23
W tym zadaniu mo»na wykorzysta funkcj z nast pnego zadania, 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 = x 0 < x 1... < x N = b) y - wektora N + 1 warto±ci funkcji y = f(x) zwróci w strukturze pp wspóªczynniki splajnu liniowego s dla podziaªu zadanego w zªami x k. Struktur nale»y utworzy funkcj octave'a mkpp() w taki sposó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 w zale»no±ci od gªadko±ci funkcji. Dla funkcji f j (x) = (x) j + = { 0 x < 0 x j x > 0 j = 1, 2, 3 oraz dla podziaªu odcinka [a, b] z a = π i b = 3 na w zªy równoodlegªe {x k = π + 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 s N f j. policz przybli»on norm maksimum bª du (na 1000 równomiernych punktach), tzn. przybli»enie policz wspóªczynniki e N = s N f j f j,[a,b]. e N e 2N. Czy wida,»e e N e 2N 2 p 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 deniujemy rekurencyjnie: T 1 0, T 0 1 oraz T n+1 (x) = 2xT n (x) T n 1 (x) (6.1) albo ze wzoru: T n (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± wielomianu zadanego poprzez wspóªczynniki w bazie Czebyszewa wprost ze wzoru rekurencyjnego (6.1), tzn. parametrami funkcji b d : x argument dla którego chcemy obliczy warto± wielomianu a - wektor zawieraj cy wspóªczynniki a 0,..., a n takie,»e w(x) = n k=0 a kt k (x). n - stopie«wielomianu (parametr opcjonalny, mo»na t warto± uzyska z wektora a) Funkcja octave'a ma zwróci warto± w(x). Przetestuj t funkcj dla w(x) = T 15 (x), tzn. narysuj dwa wykresy T 15 (x) raz korzystaj c z tej funkcji oraz drugi raz korzystaj 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óªczynniki w bazie Czebyszewa z wzoru (6.1), tzn. parametry wej±ciowe funkcji to: macierz X = (x ij ) ij, wymiaru k l wektor wspóªczynników takich,»e a = [a 0,..., a n ] w(x) = n a k T k (x). k=0 n stopie«wielomianu; ten parametr mo»e by opcjonalny, je±li go nie podamy to funkcja powinna przyj,»e n to wymiar wektora wspóªczynników minus jeden. Funkcja octave'a powinna zwróci macierz Y = (y ij ) ij, wymiaru k l z warto±ciami y ij = w(x ij ). Funkcja ma korzysta z wzoru rekurencyjnego (6.1), ale jako funkcja octave'a ma by nierekurencyjna. Koszt algorytmu powinien wynosi k l O(n). Narysuj dwa wykres T 3 (x) - jeden korzystaj c z tej funkcji oraz drugi - ze wzoru (6.2). Zadanie 3 Zadanie 4 Sprawd¹ obliczeniowo, czy powy»sze wzory na wielomiany Czebyszewa: wzór deniuj cy wielomiany Czebyszewa rekurencyjnie (6.1) i (6.2), s zgodne na odcinku [ 1, 1]. Tzn. dla du»ej ilo±ci np. 10000 losowych punktów na [ 1, 1] policz warto±ci T 32 ze wzoru T 32 (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 czas obliczania warto±ci tego wielomianu obydwoma wzorami. Powtórz testy ale dla wielomianów innych stopni, np. T 7, T 50. Narysuj korzystaj c z wzoru T n (x) = cos(n arccos(x)) 26
wykres wielomianów T n dla n = 0, 1, 2, 3, 4, 5. Policz dyskretn norm maksimum na siatce. Czy wynosi jeden? Policz na wykresie zera oraz ekstrema ka»dego z wielomianów. Zadanie 5 Wyznacz zera i ekstrema T 10 i T 15 ze wzoru T n (x) = cos(n arccos(x)). Sprawd¹ warto±ci tych wielomianów w jego zerach i ekstremach. Zadanie 6 Zadanie 7 Sprawdzenie wªasno±ci optymalno±ci zer wielomianu Czebyszewa jako w zªów interpolacji Lagrange'a. Chcemy eksperymentalnie sprawdzi, czy wielomian 2 n T N+1 (x) ma minimaln norm supremum na [ 1, 1] w±ród wszystkich wielomianów postaci Π N k=0 (x x k). Policz dla N + 1 ró»nych losowych w zªów x k, k = 0,..., N z odcinka [ 1, 1] dla N = 2, 4, 8, 16, 32 i kilkuset ró»nych losowych zestawów przybli»on norm supremum wielomianu Π n k=0 (x x k). Przeprowad¹ testy równie» dla w zªów Czebyszewa (czyli zer T N+1 ) oraz w zªów równoodlegªych dla tego samego N. Sprawdzenie wªasno±ci ekstremalnej wielomianów Czebyszewa. Z teorii wiadomo,»e wielomian 2 n T N+1 (x) ma minimaln norm supremum na [ 1, 1] w±ród wszystkich wielomianów postaci w(x) = x n+1 + n a k x k. Chcemy sprawdzi eksperymentalnie, czy ta wªasno± si potwierdzi. Policz dla N + 1 losowych wspóªczynników a k dla k = 0,..., N przybli»on norm supremum wielomianu: w(x) = x n+1 + k=0 n a k x k. 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. k=0 Zadanie 8 Sprawdzenie wªasno±ci ekstremalnej wielomianów Czebyszewa przyjmuj cych ustalon warto± poza [ 1, 1]. 27
Chcemy sprawdzi, czy dla dowolnego punktu a = 2 i b 1 wielomian w (x) = T n (x)/t n (2) ma minimaln norm supremum na [ 1, 1] w±ród wszystkich wielomianów w stopnia nie wi kszego od n+1 przyjmuj cych warto± b w punkcie a. Policz dla n losowych wspóªczynników a k z k = 1,..., n dla n = 2, 4, 8, 16, 32 i co najmniej kilku tysi cy ró»nych losowych zestawów w zªów przybli»on norm supremum wielomianu n w(x) = 1 + a k (x 2) k k=1 i porównaj z norm supremum w na [ 1, 1] równ 1/T n (2) (dlaczego tyle ona wynosi?). W zªy losujemy funkcj randn() zwracaj c liczby losowe o rozkªadzie normalnym. Zadanie 9 Zadanie 10 Funkcja octave'a sªu» ca przybli»onemu obliczaniu caªek po odcinkach (zadanie pomocnicze) Zapoznaj si z funkcj octave'a quad(). Policz caªk przy pomocy funkcji quad() z sin(x) na [ π, 2 π]. (trudne) Iloczyn skalarny typu L 2 w(a, b). Napisz funkcj octave'a: function [ nl2 ]=IlSkL2w (FCN,GCN, a, b,fcnw) komendy octave ' a nl2 =.... endfunction która oblicza iloczyn skalarny typu L 2 w(a, b) z wag w(x) tzn.: (f, g) L 2 w (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 F CN, 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) dla x [a, b]. a, b - ko«ce odcinka caªkowania [a, b], F CNW to wska¹nik do funkcji wagowej function y=w( x ) y =...... endfunction Funkcja powinna zwróci przybli»enie iloczynu skalarnego obliczone za pomoc funkcji octave'a quad(). W przypadku wywoªania funkcji IlSkL2() tylko z czterema pierwszymi argumentami (tzn. bez podania wska¹nika do wagi) funkcja powinna zwróci iloczyn skalarny z wag w 1. Zadanie 11 Ortogonalno± wielomianów Czebyszewa w L 2 1 ( 1, 1). 1 x 2 Sprawd¹ eksperymentalnie w octavie, np. za pomoc funkcji quad() lub wªasnej funkcji z poprzedniego zadania, czy wielomiany Czebyszewa tworz ukªad ortogonalny w L 2 1 ( 1, 1), 1 x 2 tzn. czy prawd jest,»e 29
1 1 1 0 m n, T n (x)t m (x) dx = π m = n > 0, 1 x 2 2 π m = n = 0. Sprawd¹ powy»sze zale»no±ci dla ró»nych m, n ró»nej wielko±ci np. 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 numerycznych, 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 czy póªprostych. Zadanie 1 Zapoznaj si z pomoc do funkcji octave'a quad(). Policz przy pomocy quad() caªk b f(t) dt dla nast puj cych a funkcji i odcinków: x 2 na [ 1, 1] x 9 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: ( ) n 1 T n f = h 0.5[f(a) + f(b)] + f(a + k h) dla h = (b a)/n. Parametry funkcji: k=1 F CN - wska¹nik do funkcji octave'a function y=f(x) obliczaj cej warto± funkcji podcaªkowej a - lewy koniec odcinka b - prawy koniec odcinka n - ilo± oblicze«warto±ci funkcji podcaªkowej w kwadraturze trapezów minus jeden (tak, jak we wzorze powy»ej) Funkcja zwraca przybli»on warto± caªki obliczon za pomoc powy»szego wzoru, tzn. zªo»onej kwadratury trapezów. Funkcja powinna dziaªa równie» je±li j wywoªamy tylko z trzema parametrami. Wtedy n powinno domy±lnie przyj warto± sto. (b) Przetestuj funkcj octave'a z poprzedniego podpunktu dla N k = 2 k N 0 k = 0, 1, 2,... z ustalonym N 0 = 5 licz c: dla bª du E N = E N E 2N b a f dt T N f dla nast puj cych funkcji, dla których warto±ci caªek znamy: x 2 na [0, 1], sin(x) na [0, π] i N 0 = 5 - funkcja analityczna, sin(100 x) na [0, π] i N 0 = 5 - funkcja analityczna, silnie oscyluj ca - du»e warto±ci drugiej pochodnej, x j+0.5 na [0, 1] dla j = 0, 1, 2 czyli funkcji w C j ([0, 1]) i o nieograniczonej w otoczeniu zera j + 1 pochodnej. Porównaj wyniki obliczane kwadratur trapezów z wynikami funkcji quad(). Mo»na sprawdzi dla jakiego n bª d 32
obliczony zªo»on kwadratur trapezów jest na poziomie bª du funkcji octave quad() - i porówna ilo± wywoªa«funkcji f przez obie procedury. Zadanie 3 Czy wielomiany Czebyszewa tworz ukªad funkcji ortogonalnych w L 2 1 na [ 1, 1] z wag 1 x 2. Policz za pomoc funkcji octave quad(): 1 1 1 1 x x T n (x)t m (x) dx dla m = 2 i n = 3. Czy wynik jest zgodny z teori? Zadanie 4 Kwadratura Gaussa-Czebyszewa dla czyli GC n+1 f = π n + 1 I(f) = 1 1 n f(x k ) = k=0 1 f(x) dx 1 x 2 π n + 1 n f k=0 ( cos dla x k zer T n+1 - n + 1 wielomianu Czebyszewa. ( )) 0.5 π + kπ n + 1 Zaimplementuj funkcj function c=gaussczeb(fcn,n) obliczaj c warto± kwadratury GC n f. Parametry - wska¹nik do funkcji function y=f(x) i ilo± punktów kwadratury. Przetestuj jej dziaªanie: policz przybli»enia caªek I(Tk 2). Czy GC n(tk 2 ) przybli»a π/2 dla k > 0 dla n = 20, 40, 80? policz przybli»enie caªki z wielomianów ró»nych stopni dla n = 4, 10, 20 - czy kwadratura jest dokªadna dla wielomianów Czebyszewa stopnia 0 < k < 2n (tzn. czy zwraca zero)? dla funkcji matematycznej f(x) = exp(arccos(x)), której caªk z t wag mo»emy obliczy dokªadnie. Porównaj warto± kwadratury z wynikiem dokªadnym dla n = 10, 20, 40, 80, tzn. policz e n = GC n (f) I(f) przyjmuj c za I(f) warto± dokªadn. 33
analogicznie do poprzedniego podpunktu tego zadania, porównaj wynik obliczony za pomoc kwadratury Gaussa - Czebyszewa, tzn. GC n (f), dla funkcji f(x) = exp(arccos(x)) z wynikiem obliczonym funkcj quad(). Wypisz na ekran e n = GC n (f) c dla c warto±ci uzyskanej za pomoc funkcji 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 e n, analogicznie do poprzednich podpunktów i wypisz e n /e 2n. Zadanie 5 Zªo»ona kwadratura prostok tów. (a) Zaprogramuj w octave funkcj function c=kwadprost(fcn,a,b,n), która zwraca warto± zªo»onej kwadratury prostok tów dla funkcji f na odcinku [a, b] na n równoodlegªych punktach: n P n f = h f(a + (k 0.5) h)), k=1 h = (b a)/n. Parametry funkcji: F CN - wska¹nik do funkcji octave'a postaci function y=f ( x ) y =...... endfunction obliczaj cej warto± funkcji, której caªk chcemy obliczy, 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 pomoc powy»szego wzoru, tzn. zªo»onej kwadratury prostok tów. Funkcja powinna dziaªa równie» je±li j wywoªamy bez ostatniego parametru. Wtedy n powinno domy±lnie przyj ustalon warto±, np. dwie±cie. 34
(b) Testy dla funkcji, których caªki znamy. Przetestuj t funkcj octave'a kwadprost() dla N k = 2 k N 0 k = 0, 1, 2,... z ustalonym N 0 = 5 licz c: E N E 2N, E N = b a f dt P N f dla caªek z nast puj cych funkcji po odpowiednich odcinkach: x 2 na [0, 1] sin(x) na [0, π] i N 0 = 5 - funkcja analityczna, sin(100 x) na [0, π] i N 0 = 5 - funkcja analityczna silnie oscyluj ca (du»e warto±ci drugiej pochodnej), x j+0.5 na [0, 1] dla j = 0, 1, 2 czyli funkcji w C j ([0, 1]) i o nieograniczonej w otoczeniu zera j + 1 pochodnej. Porównaj wyniki obliczane kwadratur prostok tów z wynikami funkcji quad(). Zadanie 6 Porównaj wyniki obliczane kwadratur prostok tów z wynikami funkcji obliczaj cej caªk za pomoc zªo»onej kwadratury trapezów. Porównaj bª dy dla warto±ci N i f(x) z poprzedniego zadania - czyli caªek, których warto± teoretycznie znamy - z wynikami dla obu kwadratur: dla tej samej ilo±ci wywoªa«funkcji f, tzn. porównaj P N f z T N 1 f, porównaj obie kwadratury dla tego samego h, tzn. T N f z P N f, 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 R p,n0 obliczaj c przybli»enie caªki b f(t) dt. a Parametry funkcji: F CN 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 N 0 startowa ilo± punktów w kwadraturze Romberga Funkcja zwraca przybli»on warto± caªki obliczon za pomoc kwadratury Romberga. Funkcja powinna dziaªa równie» je±li j wywoªamy tylko z trzema albo czterema parametrami. Parametr p powinien wtedy domy±lnie przyj warto± 5, a N0 warto± sto. (b) Przetestuj kwadratur Romberga dla caªki b f dt dla nast puj cych funkcji, odcinków i warto±ci parametrów N 0 i a p: sin(x) dla [0, π] sin(x) dla [0, 100 π] sin(10 x) dla [0, π] x j+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 E N /E 2N maleje tak samo dla wszystkich funkcji? Tutaj u»yli±my oznaczenia na bª d E N = b a f dt R p,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 Newtona, metoda siecznych i metoda iteracji prostych oraz dwie metody rozwi - zywania ukªadów równa«nieliniowych, czyli wielowymiarowa metoda Newtona 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ównania cos(x) = 0 na odcinku [0, 2]. Przetestuj, czy funkcja znajdzie dobre przybli»enie π/2. Zadanie 2 Przetestuj metod bisekcji z poprzedniego zadania do rozwi zania innych problemów: x 2 2 = 0 exp(x) = 2 cos(10 x) = 0 startuj c z odcinka [0, 110]. Zadanie 3 Napisz funkcj octave'a: function [ y, i t e r, kod]= b i s e k c j a (FCN, a, b,... tola, maxit ), 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 maksymalnej ilo±ci iteracji, 2 - warto±ci w ko«cach odcinka funkcji maj ten sam znak. Funkcja ma dziaªa równie» je±li podamy tylko trzy lub cztery pierwsze argumenty - wtedy maksymalna ilo± iteracji domy±lnie powinna wynosi sto, a tolerancja 10 5. Zadanie 4 Zapoznaj si z pomoc dla funkcji octave'a fzero() - rozwi zuj c skalarne równania nieliniowe, przetestuj j na kilku prostych przykªadach skalarnych np. cos(x) = 0, x 2 2 = 0, x 10 2 = 0, x sin(x) = 0 i innych prostych równaniach nieliniowych. Prosz przetestowa t funkcj dla ró»nych warto±ci pocz tkowego przedziaªu x 0 = [a, b]. Zadanie 5 Zapoznaj si z pomoc dla funkcji octave'a fsolve () - rozwi zuj c ukªady równa«nieliniowych. Przetestuj j na kilku prostych przykª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 x 0 = 2, f2(x)= x x x 27 z x 0 = 27, f3(x)= exp(x) 2 z x 0 = 10, 10, 1e3, f4(x)= sin(x) dla x 0 = 2, f5(x)= cos(x) z x 0 = 2 f6(x)= (x 2) k x x 0 = 3 dla k = 2, 4, 8, 16, f7(x)= x x 2 z x 0 = 10 6, sprawd¹, czy metoda Newtona zbiega, a je±li tak - to czy zbiega ona kwadratowo, f8(x)= 1/x a dla danych a = 0.5, 2, 4, 100 (oczywi±cie implementuj c bez dzielenia) jak dobra x 0? Dla wszystkich tych funkcji znamy rozwi zania, wi c mo»na wy- ±wietla równocze±nie na ekranie bª d e n = x n r (tutaj r - znane rozwi zanie) i bada eksperymentalnie rz d zbie»- no±ci, tzn. drukowa na ekranie stosunki bª du bie» cego do poprzedniego w odpowiedniej pot dze: dla p = 1, 2, 3. e n / e n 1 p Prosz powtórzy testy z innymi ró»nymi warto±ciami startowymi x 0. Zadanie 7 Powtórz zadanie 6 zast puj c metod Newtona przez metod siecznych. Przetestuj, czy e n /(e n 1 e n 2 ) asymptotycznie zbiega do staªej, i czy e n / e n 1 p dla p = (1 + 5)/2 zbiega do staªej np. dla x x 2 z x 0 = 2 lub innych równa«z poprzedniego zadania. Za x 1 mo»emy przyj x 0 + 10 7. 39
Zadanie 8 Sprawd¹, czy metoda iteracji prostych zbiega do x = cos(x ). x n = cos(x n 1 ) Zbadaj eksperymentalnie, czy zbie»no± jest liniowa, tzn. czy x x n x x n 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. x n+1 = x n dla ustalonego h. f(x n ) f(x n+h) f(x n) h = x n f(x n ) h f(x n + h) f(x n ) Przetestuj ró»ne h, np. h = 10 4, 10 7, 10 10 itp. Porówna zbie»no± z dokªadn metod Newtona (szczególnie ostatnie iteracje) dla funkcji z zadania 6. Zadanie 10 Rozwikªywanie funkcji: Dla funkcji y(x) zadanej w sposób uwikªany równaniem g(x, y) = 2x 2 + 3y 2 3 = 0 znajd¹ przybli»one warto±ci y k = y(x k ) dla x k = k h dla k = N,..., N i h = 1/N, tzn. speªniaj ce g(x k, y k ) = 0. Testuj dla ró»nych warto±ci N, np. N = 10, 20, 40, 80,... oblicz y k rozwi zuj c równanie g(x k, y k ) = 0. korzystaj c z odpowiedniej funkcji octave'a lub wªasnej implementacji metody Newtona. Jak w kolejnych krokach dobiera przybli»enie startowe w metodzie 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 siatce k h dla k = 0,.., 100. Narysuj wykres funkcji f 1. Sam wykres mo»na narysowa du»o pro±ciej bez wyliczania warto±ci f 1. Jak to zrobi w octave'ie? Zadanie 12 Wielowymiarowa metoda Newtona Zaimplementuj wielowymiarow metod Newtona w wersji z dokªadnym Jakobianem i w wersji, gdy Jakobian przybli»amy ró»- nicami dzielonymi z parametrem h. Zastosuj t metod do rozwi zania ukªadu f 1 (x 1, x 2 ) = x 1 + 2x 2 = 1 f 2 (x 1, x 2 ) = 3 x 2 1 + x 2 2 = 1 dla ró»nych przybli»e«pocz tkowych. W przypadku zbie»no±ci policz x x n p x x n 1 q p dla p = 1, 2, oraz q = 1, 2, 3. Czy ten iloraz zbiega do staªej dla jakiego± z tych q? Funkcj F (x) := (f 1 (x), f 2 (x)) T w octavie mo»na zdeniowa nast 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 x n = x n af (x) 41
do ukªadu z zadania 12, tzn. przyjmijmy,»e F (x) := (f 1 (x), f 2 (x)) T, a parametr a 0 np. a = 1, 1, 10 1 itp. Czy metoda zawsze zbiega, a je±li tak - to jak szybko? W przypadku zbie»no±ci policz dla p = 1, 2,. x x n p x x n 1 p Zadanie 14 Do ukªadu równa«z zadania 12 zastosuj funkcj fsolve () - porównaj z implementacj metody Newtona w zadaniu 12, która byªa zastosowana do rozwi zania tego ukªadu. Czy obie metody zbiegaj do tego samego rozwi zania dla tych samych warto±ci wektorów startowych? Sprawd¹ - za pomoc funkcji tic i toc - czas potrzebny do rozwi 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 zywania ukªadów równa«liniowych przy pomocy uzyskiwaniu odpowiednich rozkªadów macierzy typu LU i LL T oraz obliczaniu macierzy odwrotnej. Zapoznamy si z odpowiednimi funkcjami octave'a sªu» cymi znajdowaniu odpowiednich rozkªadów, czy rozwi zywaniu ukªadów równa«liniowych z pomoc tych rozkªadów. Podstawowe funkcje i operatory octave'a zwi zane z rozkªadem LU to: [L,U,P]=lu(A) - funkcja zwracaj ca czynniki rozkªad LU nieosobliwej macierzy A, czyli P A = LU, [R]=chol(A) - funkcja zwracaj ca czynnik rozkªadu Choleskiego macierzy symetrycznej dodatnio okre±lonej A = A T > 0, czyli A = R T R, (zazwyczaj w literaturze podaje si ten rozkªad w terminach czynnika L = R T ), operator x=a\b - operator rozwi zuj cy ukªad równa«ax = b dla A macierzy nieosobliwej i b wektora prawej strony, inv(a) - funkcja zwracaj ca macierz odwrotn do A macierzy nieosobliwej, cond(a) - funkcja zwracaj ca wspóªczynnik uwarunkowania macierzy A, czyli A 2 A 1 2. Zadanie 1 Operator octave'a \ sªu» cy m.in. do rozwi zywaniu ukªadów równa«liniowych w octavie. 43