Marcinkowski L Zadania do wykładu z matematyki obliczeniowej

background image

Zadania i scenariusze zaj¦¢ z laboratorium

komputerowego do wykªadu z Matematyki

Obliczeniowej

Leszek Marcinkowski

12 grudnia 2011

background image

Streszczenie

W skrypcie przedstawimy zestawy zada« do odbywaj¡cego si¦ co dwa tygo-

dnie laboratorium komputerowego do semestralnego wykªadu z Matematyki

Obliczeniowej. Zakªadamy, »e zadania zostan¡ rozwi¡zane przy wykorzysta-

niu pakietu oblicze« numerycznych octave albo pakietu matlab.

background image

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

background image

Rozdziaª 1

Wst¦p

Celem zada« komputerowych przeprowadzanych w laboratorium komputero-

wym jest przetestowanie numerycznych metod omawianych w czasie wykªadu

i ¢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 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 oprogramo-

wanie. 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 dystry-

buowany w wersjach binarnych zarówno pod ró»ne dystrybucje Linuxa, jak i

2

background image

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¦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 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] 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¦cia

z laboratorium komputerowego do Matematyki Obliczeniowej polegaj¡ za-

zwyczaj 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 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

background image

Scenariusze i zadania

komputerowe

4

background image

Rozdziaª 2

Wst¦pne zapoznanie si¦ z octavem

W przypadku 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 podstawowe

operacje na macierzach - mno»enie, dodawanie, transponowanie, funkcje ma-

tematyczne 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 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

background image

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 wszyst-

kimi 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ªó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(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] (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 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

background image

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 ma-

tematycznej 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 jed-

nego 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

background image

while ( warunek stopu )

endwhile

oblicz sum¦

S

N

= 1 + ... + N

dla N = 100.

U»yj instrukcji warunkowej

i f ( )

endif

by sprawdzi¢, czy otrzymane S

N

zostaªo obliczone popraw-

nie, tzn. czy otrzymali±my 0.5 ∗ N ∗ (N + 1)

wyprowad¹ na ekran komunikat u»ywaj¡c

printf ( )

8

background image

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 pomocy

funkcji single (a) zwracaj¡cej zmienn¡ pojedynczej precyzji z t¡ sam¡ war-

to±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

background image

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. Wyko-

rzystuj¡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

f (x) =

−1

x +

1 + x ∗ x

tzn. prosz¦ zastosowa¢:
Algorytm 1

a =

1 + x

2

w

1

= x − a

oraz
Algorytm 2

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 wy-

korzystaniem 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

background image

Algorytm 2

f

2

(x) = x ∗ x ∗ x ∗ x − . . . + 16.

Matematycznie f

1

≡ f

2

, ale wyniki obliczone w arytmetyce zmien-

nopozycyjnej mog¡ si¦ ró»ni¢.
Narysuj wykresy obu funkcji i policz bª¡d kf

1

(x) − f

2

(x)k

, 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 P


k=0

x

k

/k!

. Za odpo-

wiedni¡ aproksymacje exp(x) bierzemy najpierw sto pierwszych

elementów szeregu czyli przybli»amy exp(x) przez

F

N

(x) =

N

X

k=0

x

k

k!

,

dla N = 100, a potem przybli»amy przez tysi¡c elementów sze-

regu, 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 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 I

n

=

R

1

0

x

n

/(5+x)dx n = 0, .., 20

dwoma algorytmami

ze wzoru

I

n

+ 5 ∗ I

n−1

= 1/n

11

background image

Pierwszy algorytm przyjmuje I

0

= log(6/5)

i oblicza z powy»-

szego wzoru kolejne

I

n

= 1/n − 5 ∗ I

n−1

dla n = 1, 2, 3, . . ..
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 aryt-

metyce 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 funk-

cji (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 da-

nego 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

background image

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¦kszego

od 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 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 po-

mniejszon¡ 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

background image

Zadanie 3 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().

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¦ polyt() znajd¹ wielomiany inter-

polacyjne L

N

f

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 − 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. Po-

licz 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 Powtórz zadanie 4 dla tej samej funkcji i tego samego odcinka

dla w¦zªów Czebyszewa. W¦zªy Czebyszewa to pierwiastki wie-

lomianu:

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.

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

background image

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 L

N

f

wielomianu interpolu-

j¡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 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ª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 interpo-

lacyjnych 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 wielomia-

nów interpolacyjnych zbiegaj¡ do f jednostajnie dla obu typów

w¦zªów?

15

background image

Zadanie 9 Napisz funkcj¦ octave'a obliczaj¡c¡ warto±¢ wielomianu zadanego

w bazie pot¦gowej tzn.

w(x) =

n

X

k=0

a

k

x

k

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 wielomia-

nó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 stop-

nia n:

w(x) =

n

X

k=0

a

k

x

k

oraz danej liczby q wspóªczynniki (b

k

)

n
k=0

wielomianu

p(x) =

n−1

X

k=0

b

k

x

k

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

X

k=0

a

k

x

k

oraz liczby q warto±¢ w(q) i pochodnej w

0

(q)

, obliczone z wyko-

rzystaniem algorytmu Hornera.

16

background image

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 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 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óªczyn-

niki tego wielomianu w bazie Newtona dla zadanych w¦zªów po-

danych w wektorze y. Tzn. parametrami funkcji b¦d¡:

wektor a = (a

k

)

k

taki, »e

w(x) =

n

X

k=0

a

k

x

k

• y = (y

k

)

k

wektor wspóªczynników bazy Newtona.

Funkcja powinna zwróci¢ wektor wspóªczynników b

k

takich, »e

w(x) =

n

X

k=0

b

k

w

k

,

gdzie

w

k

(x) = Π

k−1
j=0

(x − y

j

).

Zadanie 14 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. pa-

rametrami funkcji jest wektor wspóªczynników b = (b

k

)

k

takich,

»e

w(x) =

n

X

k=0

b

k

w

k

17

background image

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

X

k=0

a

k

x

k

.

Zadanie 15 Sprawd¹ eksperymentalnie ile wynosi dla ró»nych warto±ci N =

4, 8, 16, 32, 64, . . .

przybli»enie:

A

r,N

=

N

X

k=0

kl

k

k

∞,[−1,1]

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 kfk

∞,[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.

N = 4, 8, 16, 32, 64, . . .

przybli»enie:

A

c,N

=

N

X

k=0

kl

k

k

∞,[−1,1]

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 kfk

∞,[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

kL

N

f k

∞,[−5,5]

P

N
k=0

kl

k

k

∞,[−5,5]

18

background image

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 kfk

∞,[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

background image

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¡ wielo-

mianami kubicznymi.

Zadanie interpolacji splajnami kubicznymi polega na znalezieniu spaljnu

kubicznego s speªniaj¡cego:

s(x

0

) = y

0

s(x

1

) = y

1

...

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

background image

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 ry-

sunku.
Czy otrzymali±my te same splajny?
Policz przybli»on¡ norm¦ maksimum ró»nicy s

1

− s

2

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 i
s(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 tego

splajnu.

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 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

background image

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

e

2N

. Czy prawd¡ jest, »e

e

N

e

2N

≈ 2

p

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

e

N

e

2N

s¡ te same? Tzn. czy

szybko±¢ zbie»no±ci k sin(x) − S

N

k

jest taka sama?

Zadanie 6 Testowanie eksperymentalne rz¦du zbie»no±ci splajnu interpola-

cyjnego kubicznego naturalnego (warunek brzegowy - zerowanie

si¦ 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], a

zbie»no±¢ interpolacji splajnami kubicznymi.
Przetestuj jak w poprzednich zadaniach, czy splajny interpola-

cyjne 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 interpo-

lacyjnego 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

background image

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

e

2N

. Czy

e

N

e

2N

≈ 2

p

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) = x

2

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 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 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.

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 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

= k sin −s

n

k

.

Policz wspóªczynnik

e

N

e

2N

. Czy wida¢, »e

e

N

e

2N

≈ 2

p

dla jakiego± p caªkowitego np. p = 2, 4 lub 8?

23

background image

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 = 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 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 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ówno-

miernych punktach), tzn. przybli»enie

e

N

= ks

N

f

j

− f

j

k

∞,[a,b]

.

policz wspóªczynniki

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

background image

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±¢ wie-

lomianu 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) =

P

n
k=0

a

k

T

k

(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) = T

15

(x)

, tzn. narysuj dwa wy-

kresy T

15

(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

background image

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

a = [a

0

, . . . , a

n

]

takich, »e

w(x) =

n

X

k=0

a

k

T

k

(x).

• 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 Sprawd¹ obliczeniowo, czy powy»sze wzory na wielomiany Cze-

byszewa: 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

.

Zadanie 4 Narysuj korzystaj¡c z wzoru

T

n

(x) = cos(n ∗ arccos(x))

26

background image

wykres wielomianów T

n

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 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 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 wie-

lomianó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.

Zadanie 7 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

X

k=0

a

k

x

k

.

Chcemy sprawdzi¢ eksperymentalnie, czy ta wªasno±¢ si¦ potwier-

dzi.
Policz dla N + 1 losowych wspóªczynników a

k

dla k = 0, . . . , N

przybli»on¡ norm¦ supremum wielomianu:

w(x) = x

n+1

+

n

X

k=0

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.

Zadanie 8 Sprawdzenie wªasno±ci ekstremalnej wielomianów Czebyszewa przyj-

muj¡cych ustalon¡ warto±¢ poza [−1, 1].

27

background image

Chcemy sprawdzi¢, czy dla dowolnego punktu a = 2 i b 6= 1

wielomian

w

(x) = T

n

(x)/T

n

(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 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

w(x) = 1 +

n

X

k=1

a

k

(x − 2)

k

i porównaj z norm¡ supremum w

na [−1, 1] równ¡ 1/T

n

(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 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)

=

Z

b

a

f (x)g(x)w(x) dx

dla danej funkcji wagowej w(x) i funkcji f, g.
Parametry funkcji to:

28

background image

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 CN W

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 L

2

1

1−x2

(−1, 1)

.

Sprawd¹ eksperymentalnie w octavie, np. za pomoc¡ funkcji

quad() lub wªasnej funkcji z poprzedniego zadania, czy wielo-

miany Czebyszewa tworz¡ ukªad ortogonalny w L

2

1

1−x2

(−1, 1)

,

tzn. czy prawd¡ jest, »e

29

background image

Z

1

−1

T

n

(x)T

m

(x)

1

1 − x

2

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±ci

np. dla m = 0, 1, 2, 3, 100, 1000 i n = 0, 3, 10, 500, 1004.

30

background image

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

Z

b

a

f (t) dt

− ∞ ≤ a < b ≤ +∞,

Mo»emy wi¦c znajdowa¢ przybli»enia caªek po caªej prostej rzeczywistej czy

póªprostych.

Zadanie 1 Zapoznaj si¦ z pomoc¡ do funkcji octave'a quad().

Policz przy pomocy quad() caªk¦ R

b

a

f (t) dt

dla nast¦puj¡cych

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

background image

obliczaj¡c¡ zªo»on¡ kwadratur¦ trapezów:

T

n

f = h

0.5[f (a) + f (b)] +

n−1

X

k=1

f (a + k ∗ h)

!

dla h = (b − a)/n.
Parametry funkcji:

• F CN

- wska¹nik do funkcji octave'a function y=f(x)

obliczaj¡cej warto±¢ funkcji podcaªkowej

• a

- lewy koniec odcinka

• b

- prawy koniec odcinka

• n

- ilo±¢ oblicze« warto±ci funkcji podcaªkowej w kwa-

draturze trapezów minus jeden (tak, jak we wzorze po-

wy»ej)

Funkcja zwraca przybli»on¡ warto±¢ caªki obliczon¡ za po-

moc¡ powy»szego wzoru, tzn. zªo»onej kwadratury trape-

zów.
Funkcja powinna dziaªa¢ równie» je±li j¡ wywoªamy tylko z

trzema parametrami. Wtedy n powinno domy±lnie przyj¡¢

warto±¢ sto.

(b) Przetestuj funkcj¦ octave'a z poprzedniego podpunktu dla

N

k

= 2

k

N

0

k = 0, 1, 2, . . .

z ustalonym N

0

= 5

licz¡c:

E

N

E

2N

dla bª¦du

E

N

= |

Z

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 wyni-

kami funkcji quad(). Mo»na sprawdzi¢ dla jakiego n bª¡d

32

background image

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

na [−1, 1] z wag¡

1

1−x

2

.

Policz za pomoc¡ funkcji octave quad():

Z

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

I(f ) =

Z

1

−1

1

1 − x

2

f (x) dx

czyli

GC

n+1

f =

π

n + 1

n

X

k=0

f (x

k

) =

π

n + 1

n

X

k=0

f

cos

0.5 ∗ π + kπ

n + 1

dla x

k

zer T

n+1

- n + 1 wielomianu Czebyszewa.

Zaimplementuj funkcj¦ function c=gaussczeb(FCN,n) oblicza-

j¡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(T

2

k

)

. Czy GC

n

(T

2

k

)

przybli»a π/2

dla k > 0 dla n = 20, 40, 80?

policz przybli»enie caªki z wielomianów ró»nych stopni dla
n = 4, 10, 20

- czy kwadratura jest dokªadna dla wielomia-

nów Czebyszewa stopnia 0 < k < 2n (tzn. czy zwraca zero)?

dla funkcji matematycznej f(x) = exp(arccos(x)), której

caªk¦ z t¡ wag¡ mo»emy obliczy¢ dokªadnie.
Porównaj warto±¢ kwadratury z wynikiem dokªadnym dla
n = 10, 20, 40, 80

, tzn. policz

e

n

= |GC

n

(f ) − I(f )|

przyjmuj¡c za I(f) warto±¢ dokªadn¡.

33

background image

analogicznie do poprzedniego podpunktu tego zadania, po-

ró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¡ 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 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:

P

n

f = h

n

X

k=1

f (a + (k − 0.5) ∗ h)),

h = (b − a)/n.

Parametry funkcji:

• F CN

- wska¹nik do funkcji octave'a postaci

function y=f ( x )

y = . . . . . .

endfunction

obliczaj¡cej warto±¢ funkcji, której caªk¦ chcemy obli-

czy¢, tj. f(x), w danym punkcie x.

• a, b

- ko«ce odcinka,

• n

- ilo±¢ w¦zªów wykorzystywanych przez kwadratur¦.

Funkcja zwraca przybli»on¡ warto±¢ caªki obliczon¡ za po-

moc¡ powy»szego wzoru, tzn. zªo»onej kwadratury prosto-

k¡tów.
Funkcja powinna dziaªa¢ równie» je±li j¡ wywoªamy bez ostat-

niego parametru. Wtedy n powinno domy±lnie przyj¡¢ usta-

lon¡ warto±¢, np. dwie±cie.

34

background image

(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

= |

Z

b

a

f dt − P

N

f |

dla caªek z nast¦puj¡cych funkcji po odpowiednich odcin-

kach:

• 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 wyni-

kami funkcji quad() .

Zadanie 6 Porównaj wyniki obliczane kwadratur¡ prostok¡tów z wynikami

funkcji obliczaj¡cej caªk¦ za pomoc¡ zªo»onej kwadratury trape-

zów.
Porównaj bª¦dy dla warto±ci N i f(x) z poprzedniego zadania -

czyli caªek, których warto±¢ teoretycznie znamy - z wynikami dla

obu kwadratur:

dla tej samej ilo±ci wywoªa« funkcji f, tzn. porównaj 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,N 0

obliczaj¡c¡ przybli»enie caªki

R

b

a

f (t) dt

.

Parametry funkcji:

• F CN

wska¹nik do funkcji octave'a function y=f(x)

obliczaj¡cej warto±¢ funkcji podcaªkowej

35

background image

• 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 po-

moc¡ kwadratury Romberga.
Funkcja powinna dziaªa¢ równie» je±li j¡ wywoªamy tylko z

trzema albo czterema parametrami. Parametr p powinien

wtedy domy±lnie przyj¡¢ warto±¢ 5, a N0 warto±¢ sto.

(b) Przetestuj kwadratur¦ Romberga dla caªki R

b

a

f dt

dla na-

st¦puj¡cych funkcji, odcinków i warto±ci parametrów N0 i
p

:

• sin(x)

dla [0, π]

• sin(x)

dla [0, 100 ∗ π]

• sin(10 ∗ x)

dla [0, π]

• 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 funk-

cji?
Tutaj u»yli±my oznaczenia na bª¡d E

N

= |

R

b

a

f dt − R

p,N 0

|

.

36

background image

Rozdziaª 8

Rozwi¡zywanie równa«

nieliniowych

W poni»szych zadaniach przetestujemy jak dziaªaj¡ cztery metody rozwi¡-

zywania równa« nieliniowych skalarnych, tzn. metoda bisekcji, metoda New-

tona, metoda siecznych i metoda iteracji prostych oraz dwie metody rozwi¡-

zywania ukªadów równa« nieliniowych, czyli wielowymiarowa metoda New-

tona i metoda iteracji prostych w najprostszej formie.

Zapoznamy si¦ równie» z funkcjami octave'a fzero() oraz fsolve () sªu-

»¡cymi do rozwi¡zywania równa« nieliniowych skalarnych i ukªadów równa«

nieliniowych.

Zadanie 1 Zaimplementuj metod¦ bisekcji w skrypcie - dla rozwi¡zania rów-

nania cos(x) = 0 na odcinku [0, 2]. Przetestuj, czy funkcja znaj-

dzie dobre przybli»enie π/2.

Zadanie 2 Przetestuj metod¦ bisekcji z poprzedniego zadania do rozwi¡zania

innych problemów:

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

background image

której parametrami b¦d¡

wska¹nik do funkcji FCN (inaczej: function handle),

• a, b

- ko«ce przedziaªu,

tola - »¡dana tolerancja bezwzgl¦dna - bª¡d powinien by¢

mniejszy od tola,

maxit - maksymalna ilo±¢ iteracji.

Funkcja ma zwróci¢

y - przybli»one rozwi¡zanie,

iter - ilo±¢ iteracji,

kod - kod wyniku:

0 metoda zbiegªa,
1 - metoda zatrzymaªa si¦ z powodu przekroczenia mak-

symalnej ilo±ci iteracji,

2 - warto±ci w ko«cach odcinka funkcji maj¡ ten sam

znak.

Funkcja ma dziaªa¢ równie» je±li podamy tylko trzy lub cztery

pierwsze argumenty - wtedy maksymalna ilo±¢ iteracji domy±lnie

powinna wynosi¢ sto, a tolerancja 10

−5

.

Zadanie 4 Zapoznaj si¦ z pomoc¡ dla funkcji octave'a fzero() - rozwi¡zu-

j¡c¡ skalarne równania nieliniowe, przetestuj j¡ na kilku prostych

przykªadach skalarnych np.

• cos(x) = 0

,

• 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¡tko-

wego przedziaªu x

0

= [a, b]

.

Zadanie 5 Zapoznaj si¦ z pomoc¡ dla funkcji octave'a fsolve () - rozwi¡zu-

j¡c¡ ukªady równa« nieliniowych. Przetestuj j¡ na kilku prostych

przykªadach skalarnych, np. na tych z poprzedniego zadania.

38

background image

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 imple-

mentuj¡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 po-

przedniego w odpowiedniej pot¦dze:

|e

n

|/|e

n−1

|

p

dla p = 1, 2, 3.
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

background image

Zadanie 8 Sprawd¹, czy metoda iteracji prostych

x

n

= cos(x

n−1

)

zbiega do x

= cos(x

)

.

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

f (x

n

)

f (x

n

+h)−f (x

n

)

h

= x

n

f (x

n

) ∗ h

f (x

n

+ h) − f (x

n

)

dla ustalonego h.
Przetestuj ró»ne h, np. h = 10

−4

, 10

−7

, 10

−10

itp.

Porówna¢ zbie»no±¢ z dokªadn¡ metod¡ Newtona (szczególnie

ostatnie iteracje) dla funkcji z zadania 6.

Zadanie 10 Rozwikªywanie funkcji:

Dla funkcji y(x) zadanej w sposób uwikªany równaniem

g(x, y) = 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 imple-

mentacji metody Newtona.
Jak w kolejnych krokach dobiera¢ przybli»enie startowe w meto-

dzie Newtona?

40

background image

Zadanie 11 Odwracanie funkcji

Rozpatrzmy dan¡ funkcj¦, np.

f (x) = sin(x) + 2 ∗ x.

Znajd¹ warto±ci funkcji odwrotnej f

−1

na odcinku [0, 5] na siatce

k ∗ h

dla k = 0, .., 100. Narysuj wykres funkcji f

−1

.

Sam wykres mo»na narysowa¢ du»o pro±ciej bez wyliczania war-

to±ci f

−1

. Jak to zrobi¢ w octave'ie?

Zadanie 12 Wielowymiarowa metoda Newtona

Zaimplementuj wielowymiarow¡ metod¦ Newtona w wersji z do-

kªadnym Jakobianem i w wersji, gdy Jakobian przybli»amy ró»-

nicami dzielonymi z parametrem h.
Zastosuj t¦ metod¦ do rozwi¡zania ukªadu

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

kx − x

n

k

p

kx − x

n−1

k

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¢ 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

x

n

= x

n

− aF (x)

41

background image

do ukªadu z zadania 12, tzn. przyjmijmy, »e F (x) := (f

1

(x), f

2

(x))

T

,

a parametr a 6= 0 np. a = 1, −1, 10

−1

itp.

Czy metoda zawsze zbiega, a je±li tak - to jak szybko? W przy-

padku zbie»no±ci policz

kx − x

n

k

p

kx − x

n−1

k

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óra

byªa zastosowana do rozwi¡zania tego ukªadu.
Czy obie metody zbiegaj¡ do tego samego rozwi¡zania dla tych

samych warto±ci wektorów startowych?
Sprawd¹ - za pomoc¡ funkcji tic i toc - czas potrzebny do roz-

wi¡zania tego ukªadu równa« za pomoc¡ obu metod.

42

background image

Rozdziaª 9

Ukªady równa« liniowych -

rozkªady typu LU i LL'

W tym rozdziale zapoznamy si¦ z metodami sªu»¡cych do rozwi¡zywania

ukªadów równa« liniowych przy pomocy uzyskiwaniu odpowiednich rozkªa-

dów macierzy typu LU i LL

T

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« liniowych

z pomoc¡ tych rozkªadów.

Podstawowe funkcje i operatory octave'a zwi¡zane z rozkªadem LU to:

[L,U,P]=lu(A) - funkcja zwracaj¡ca czynniki rozkªad LU nieosobliwej

macierzy A, czyli P A = LU,

[R]=chol(A) - funkcja zwracaj¡ca czynnik rozkªadu Choleskiego ma-

cierzy symetrycznej dodatnio okre±lonej A = 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 nieoso-

bliwej,

cond(A) - funkcja zwracaj¡ca wspóªczynnik uwarunkowania macierzy
A

, czyli kAk

2

∗ kA

−1

k

2

.

Zadanie 1 Operator octave'a \ sªu»¡cy m.in. do rozwi¡zywaniu ukªadów

równa« liniowych w octavie.

43

background image

Przetestuj operator octave'a \ dla ukªadu równa« z macierz¡
A = [1, 2; 3, 4]

i x = [1; 3] z f=A∗x. Czy y=A\f jest rozwi¡zaniem

tego ukªadu?
Policz normy residualn¡ kAy − fk

p

i norm¦ bª¦du kx − xk

p

dla

p = 1, 2

.

Powtórz testy dla macierzy osobliwej [1, 2; 3, 6] i prawie osobliwej
[1, 2; 3, 6 − 10

−6

]

. Co si¦ wtedy dzieje?

Zadanie 2 Przetestuj solver octave'a, tzn operator backslash dla dwóch

prostych ukªadów równa« liniowych z macierzami nieosobliwymi:
A

1

= [1, 1; 1, 0.98]

i b = [2; 1], A

2

= [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 A

1

− A

2

oraz uwarunkowania tych macierzy

korzystaj¡c z funkcji octave'a cond().
Powtórz zadanie dla macierzy: A

1

= [1, 1; 1, 1 − 2]

i b = [2; 1],

A

2

= [1, 1; 1, 1 − ]

dla = 10

−p

z p = 3, 4, . . . , 16.

Zadanie 3 Funkcja inv().

Zapoznaj si¦ z pomoc¡ do funkcji: inv(). Przetestuj, obliczaj¡c

macierz odwrotn¡ do A = [1, 1; 1, −1]. Czy macierz B obliczona

za pomoc¡ tej funkcji rzeczywi±cie jest macierz¡ odwrotn¡?
Policz normy pierwsz¡ i Frobeniusa kA∗B −Ik oraz kB ∗A−Ik.
Zastosuj funkcje do rozwi¡zywania ukªadu równa« liniowych Ax =
f

dla znanego x (liczymy f = A ∗ x). Policz y jako iloczyn B z f

i policz bª¦dy residualny kAy − fk i kx − yk w normie pierwszej

i drugiej.
Powtórz to zadanie dla macierzy N ×N losowej (funkcja octave'a

rand() zwraca macierz losow¡) dla n = 10, 50, 250, 1250 ze zna-

nym rozwi¡zaniem - oszacuj czas przy pomocy funkcji tic i toc.

Porównaj czas i bª¦dy w normie pierwszej dla rozwi¡zania uzy-

skanego przy pomocy operatora octave'a \.

Zadanie 4 Funkcje lu() i chol().

Zapoznaj si¦ z pomoc¡ do funkcji: lu() i chol().

Dla macierzy A = [1, 1; 1, −1] znajd¹ jej rozkªady: P A =
LU

i rozkªad Choleskiego A = L

T
1

L

1

.

44

background image

Sprawd¹ te rozkªady licz¡c normy macierzowe pierwsz¡ i

Frobeniusa bª¦dów np. P A − LU i A − L

T
1

L

1

.

Zastosuj te rozkªady do znalezienia rozwi¡zania ukªadu rów-

na« liniowych Ax = f ze znanym rozwi¡zaniem np. x =
[1; 1]

i f = [2; 0].

Policz normy pierwsz¡ i drug¡ wektorowe pomi¦dzy x, a

wynikiem algorytmu w, polegaj¡cym na zastosowaniu od-

powiedniego rozkªadu, oraz takie same normy residualne,

tzn. normy Aw − f.

Zadanie 5 W octavie przetestuj eliminacje Gaussa z cz¦±ciowym wyborem

i bez wyboru dla macierzy A = [e, 1; 1, 1] z e = eps/10 (funk-

cja octave'a eps zwraca epsilon maszynowy) i wektorem prawej

strony f = [1; 0]

T

. Trzeba tu zaprogramowa¢ samodzielnie elimi-

nacj¦ Gaussa bez wyboru elementu gªównego, tzn. bez permuta-

cji ani wierszy, ani kolumn dla macierzy 2 × 2.

Zadanie 6 Testy solvera octave'a dla macierzy Hilberta H(N)

Polecenie octave'a hilb() tworzy macierz Hilberta.

Stwórz macierz H(N) dla N = 10, 20, 30,

Dla znanego rozwi¡zania, np. staªego równego jeden na ka»-

dej pozycji, czyli sol

k

= 1

, policz H(N) ∗ sol = f,

Rozwi¡» w octavie ukªad z H(N) i f,

Policz normy (1,2 itd) kH(N)x − fk i kx − solk dla x roz-

wi¡zania wyliczonego przez octave,

Policz uwarunkowanie macierzy Hilberta dla powy»szych N.

Zadanie 7 Powtórz zadanie 6 w arytmetyce pojedynczej precyzji.

Nale»y tu sztucznie wymusi¢, za pomoc¡ funkcji octave'a single (),

aby zmienne byªy zmiennymi pojedynczej precyzji.

Zadanie 8 Przetestuj funkcj¦ invhilb() tworz¡c¡ macierz odwrotn¡ do ma-

cierzy Hilberta (por. zadanie 6).

Policz normy: macierzowa norm¦ Frobeniusa i norm¦ macie-

rzow¡ pierwsz¡ ró»nicy macierzy E = H(N)∗iH(N)−I dla
N = 10, 20, 30

, gdzie iH(N) macierz odwrotna do macierzy

Hilberta obliczona przez invhilb().

45

background image

Wykorzystaj iH(N) do rozwi¡zania ukªadu równa« z ma-

cierz¡ Hilberta H(N), tzn.:

(a) stwórz macierze H(N) oraz iH(N) dla N = 10, 20, 30

korzystaj¡c z funkcji hilb() i invhilb(),

(b) dla znanego rozwi¡zania sol, policz H(N) ∗ sol = f,

(c) rozwi¡» ukªad H(N)x = f mno»¡c f przez iH(N), tzn.

x = iH(N ) ∗ f

,

(d) policz normy kH(N)x−fk

p

i kx−solk

p

dla p = 1, 2, ∞.

Zadanie 9 Stwórz w octavie macierz trójdiagonaln¡ A = (a

ij

)

n
i,j=1

wymiaru

n × n

z 2 na diagonali i −1 na pod- i nad diagonal¡, tzn.

a

i,j

=

2

i = j

−1

|i − j| = 1

0

|i − j| > 1

,

i, j = 1, . . . , n.

przy pomocy funkcji octave'a diag(), jak i wprost w p¦tli. Po-

równaj czas u»ywaj¡c tic i toc dla n = 10, 100, 1000.
Policz uwarunkowanie macierzy dla ró»nych N.
Policz macierz odwrotn¡ przy pomocy inv() (czy jest trójdiago-

nalna?).

Zadanie 10 Sprawd¹ z wykorzystaniem funkcji octave'a chol(), czy macierz

z zadania 9 jest symetryczna i dodatnio okre±lona.

Zadanie 11 Zaimplementuj rozkªad LU dla macierzy trójdiagonalnej N ×

N

bez wyboru elementu gªównego, tzn. stwórz wªasn¡ funkcj¦

octave'a:
function [x,d,l]=lu3diag(a,b,c, f ,N)
Parametry funkcji:

• a, b, c

- przek¡tna, podprzek¡tna i nadprzek¡tna macierzy A,

• f

- wektor prawej strony,

• N

- wymiar zadania - dªugo±¢ przek¡tnej a.

Funkcja powinna zwróci¢ x - rozwi¡zanie Ax = f oraz czynniki

rozkªadu macierzy A = LU, czyli diagonal¦ macierzy górnotrój-

k¡tnej U w wektorze d i poddiagonal¦ L - macierzy dolnotrójk¡t-

nej, trójdiagonalnej z jedynkami na diagonali, czyli wektor l.
Naddiagonala U równa si¦ nadiagonali A, tzn. wektorowi c.

46

background image

Zadanie 12 Zastosuj funkcj¦ z zadania 11 do uzyskania rozkªadu LU macierzy

z zadania 9 dla N = 4, 10, 15. Porównaj z wynikiem uzyskanym

przy pomocy funkcji octave'a lu().

Zadanie 13 Zastosuj funkcj¦ z zadania 11 do rozwi¡zania ukªadu równa« z

macierz¡ z zadania 9 dla N = 10, 100, 1000, czy 10000:

Rozwi¡» ukªad dla znanego rozwi¡zania, np. x = (1, . . . , 1)

T

,

Porównaj czas rozwi¡zywania wªasnym algorytmem i algo-

rytmem octave'a, czyli operatorem A\f,

Policz bª¡d rezydualny i bª¡d rzeczywisty w normie drugiej,

tzn. kx − ˜xk

2

i kf − A ∗ ˜xk

2

, gdzie f = A ∗ x, a ˜x to

rozwi¡zanie obliczone przez octave'a lub obliczone wªasnym

algorytmem.

Zadanie 14 Zaimplementuj rozkªad LU dla macierzy trójdiagonalnej z cz¦-

±ciowym wyborem elementu gªównego.
Nast¦pnie testuj ten rozkªad jak w zadaniu 13.
Zastosuj ten rozkªad do rozwi¡zania ukªadu równa« z macierz¡ z

poprzedniego zadania A i z macierz¡ A − 1.5 ∗ I.

Zadanie 15 Zaprogramuj rozkªad Choleskiego typu dla macierzy A = A

T

> 0

trójdiagonalnej, tzn. policz L dolnotrójk¡tn¡ z jedn¡ poddia-

gonal¡ (czyli reprezentowan¡ przez dwa wektory z przek¡tn¡ i

podprzek¡tn¡) tak¡, »e A = L

T

L

.

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

background image

Rozdziaª 10

LZNK. Rozkªad QR. Metoda

Householdera

W tym rozdziale zajmiemy si¦ liniowym zadaniem najmniejszych kwadratów

(LZNK).

Dla danej macierzy A wymiaru M × N i wektora b wymiaru M chcemy

znale¹¢ wektor x wymiaru N taki, »e

kAx − bk

2

= min

y

kAy − bk

2

.

Je±li A jest macierz¡ kolumnami regularn¡ (rz¡d A jest maksymalny równy
N

), to zadanie to ma jednoznaczne rozwi¡zanie i nazywamy je regularnym

LZNK (RLZNK).

Podstawowym algorytmem sªu»¡cym jego rozwi¡zaniu jest metoda Ho-

useholdera, czyli znalezienia rozkªadu QR macierzy A, gdzie Q to macierz

ortogonalna - iloczyn macierzy Householdera, a R to macierz górnotrójk¡tna.

W tym rozdziale przetestujemy podstawowy operator octave'a sªu»acy do

rozwi¡zywania dowolnego LZNK, tzn. operator \. Zauwa»my, »e je±li M = N

i A jest macierz¡ kolumnami regularn¡, to A jest nieosobliwa i to regularne

LZNK jest równowa»ne rozwi¡zaniu ukªadu równa« liniowych Ax = b.

Przetestujemy w zadaniach funkcj¦ octave'a qr() sªu»¡c¡ znajdowaniu

rozkªadu QR macierzy, kilka wªasno±ci macierzy (przeksztaªce«) Househol-

dera i rozwi¡»emy kilka konkretnych LZNK.

Zadanie 1 Operator octave'a \ sªu»¡cy m.in. do rozwi¡zywaniu ukªadów

równa« liniowych i LZNK w octavie.

Przetestuj operator octave'a \ rozwi¡zuj¡c RLZNK dla ma-

cierzy A ze znanym konkretnym rozwi¡zaniem x:

48

background image

A = [1, 1; 1, −1; 1, 3],

x = [1; 2]

przyjmuj¡c, »e f = Ax.
Czy y=A\f jest rozwi¡zaniem tego ukªadu?
Policz normy residualn¡ kAy − fk

2

i norm¦ bª¦du kx − yk

2

.

Przetestuj ten operator dla nieregularnego LZNK dla ma-

cierzy A

T

z x = [1; 1; 1] i f = Ax.

Czy y=A'\f jest rozwi¡zaniem tego ukªadu?
Policz normy residualn¡ kA

T

y − f k

2

i norm¦ bª¦du kx−yk

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 normy

Frobeniusa QQ

T

− I

i Q

T

Q − I

.

(d) Sprawd¹ ten rozkªad licz¡c normy macierzowe: norm¦ drug¡

i norm¦ Frobeniusa bª¦du A − QR.

(e) Zastosuj ten rozkªad do znalezienia rozwi¡zania LZNK Ax =

f

ze znanym rozwi¡zaniem, np. x = [1; 0] i f = [1; 1; 1].

(f) Policz norm¦ drug¡ wektorow¡ pomi¦dzy x, a wynikiem al-

gorytmu w, polegaj¡cym na zastosowaniu odpowiedniego

rozkªadu oraz takie same normy residualne, tzn. normy dru-

gie Aw − f oraz Rw − Q

T

f

.

Zadanie 3 Ukªad równa« normalnych, a rozkªad QR.

Rozpatrzmy macierz A

2n,k

- pod-macierz wymiaru 2n × k ma-

cierzy Vandermonde'a A

2n,2n

dla 2n w¦zªów równoodlegªych na

[0, 1]

.

LZNK z A

2n,k

z wektorem prawej strony f równym pierwszej

kolumnie tej macierzy (rozwi¡zanie to pierwszy wersor) rozwi¡»

trzema sposobami:

(a) u»ywaj¡c operator \,

(b) u»ywaj¡c rozkªad QR uzyskanym funkcj¡ qr(),

49

background image

(c) poprzez rozwi¡zanie ukªadu równa« normalnych:

Bx = g

dla

B = A

T
2n,k

A

2n,k

,

g = A

T
2n,k

f,

tzn. tworzymy macierz ukªadu równa« normalnych B, wek-

tor prawej strony g ukªadu równa« normalnych, a nast¦pnie

rozwi¡zujemy ukªad równa« normalnych operatorem \ .

Macierz Vandermonde'a mo»na w octave'ie utworzy¢ za pomoc¡

funkcji vander().
Przeprowad¹ testy dla N = 10, 20, 40, 80 i k = 2, 4, n. Porównaj

czas oblicze«

bª¡d - kx − yk

2

bª¡d residualny kAx − fk

2

dla x rozwi¡zania dokªadnego LZNK, f wektora prawej strony

LZNK, y przybli»enia rozwi¡zania uzyskanego dan¡ metod¡.

Zadanie 4 Rozkªad QR a operator \ przy rozwi¡zywaniu ukªadów równa«

liniowych,
Rozpatrzmy macierz A

n,n

Vandermonde'a dla n w¦zªów równo-

odlegªych na [0, 1].
Ukªad równa« liniowych z wektorem prawej strony równym pierw-

szej kolumnie tej macierzy (rozwi¡zanie to pierwszy wersor) roz-

wi¡» dwoma sposobami:

(a) operatorem \,

(b) rozkªadem QR uzyskanym funkcj¡ qr(),

Przetestuj dla N = 10, 20, 40, 80. Porównaj

czas oblicze«,

bª¡d kx − yk

2

,

bª¡d rezydualny: kAx − fk

2

,

dla x rozwi¡zania dokªadnego tego ukªadu równa«, f wektora

prawej strony ukªadu i y przybli»enia rozwi¡zania uzyskanego

dan¡ metod¡.

50

background image

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: (x

k

, y

k

)

, tzn. znajd¹ takie

a, b

, »e

X

k

|ax

2
k

+ by

2

k

− 1|

2

= min

c,d

X

k

|cx

2
k

+ dy

2

k

− 1|

2

.

Za (x

k

, y

k

)

przyjmiemy zaburzone punkty z danej elipsy

y

k

=

q

1 − 4 ∗ x

2
k

+ z

k

,

gdzie z

k

to zaburzenie wylosowane z [0, 10

−2

]

a x

k

= 1/k

lub

x

k

= −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 (x

k

, y

k

)

plusami oraz narysuj

fragmenty wykresów obu elips: pierwszej - dla a = 4, b = 1 i

drugiej elipsy - dopasowanej do zaburzonych punktów.
Powtórz obliczenia dla ró»nych zaburze« z

k

.

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 = kwk

2

zwróci wektor y = H

w

~

x

dla

H

w

= I − 2 ∗

1

nw

~

w ~

w

T

czyli przeksztaªcenia (macierzy) Householdera.
Skalar mo»e by¢ parametrem opcjonalnym. Je±li funkcja b¦dzie

wywoªana z dwoma tylko parametrami, to norm¦ w mo»na obli-

czy¢ w tej funkcji.
Przetestuj t¦ funkcj¦ dla losowych wektorów ~x i ~w i sprawd¹, czy

kH

w

~

xk

2

= k~

xk

2

,

H

w

(H

w

x) = x.

Zadanie 7 Napisz ogólniejsz¡ wersj¦ funkcji z poprzedniego zadania, tzn.:

funkcj¦:

function Y=Hm(X,w, nw) ,

51

background image

gdzie X macierz N × M i wtedy zwracany wynik to macierz
Y = H

w

∗ X

. Pozostaªe dwa parametry funkcji pozostan¡ bez

zmian.
Czy mo»na zaimplementowa¢ tak¡ funkcj¦ bez u»ycia p¦tli?
Sprawd¹, wykorzystuj¡c t¦ funkcj¦, czy mno»enie przez macierz

Householder nie zmienia norm macierzowych drugiej i Frobe-

niusa, tzn. czy:

kAk

2

= kH

w

∗ Ak

2

= kA ∗ H

w

k

2

i

kAk

F

= kH

w

∗ Ak

F

= kA ∗ H

w

k

F

dla losowej macierzy A i H

w

macierzy Householdera dla losowego

wektora w 6= 0.

Zadanie 8 Znajd¹ wektor Householdera ~w taki, »e odpowiednie przeksztaª-

cenie Householdera przeprowadza dany wektor ~u 6= 0 na kierunek

drugiego danego niezerowego wektora l ∗ ~v 6= 0 dla l =

kvk

2

kuk

2

.

Przetestuj dla dowolnych dwóch ró»nych wektorów o tej samej

dªugo±ci, czy rzeczywi±cie H

w

~

u = ~

v

.

Zadanie 9 Zastosuj metod¦ Householdera do rozwi¡zania zadania znalezie-

nia prostej y = ax+b najlepiej przybli»aj¡cej N punktów (x

k

, y

k

) =

(k, 1 + 2 ∗ k +

k

)

dla k = 1, . . . , N gdzie (

1

, . . . ,

N

)

to losowy

wektor za zakresu [−, ], tzn.:

X

k

|ax

k

+ b − y

k

|

2

= min

c,d

X

k

|cx

k

+ d − y

k

|

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'a

qr(A).

Zadanie 10 Zaprogramuj metod¦ Householdera rozwi¡zywania ukªadu rów-

na« liniowych A~x = ~b dla A macierzy trójdiagonalnej N × N,

tzn. napisz funkcj¦ octave'a:
function [x]=hous3diag(a,b,c,f,N)
Parametry funkcji:

52

background image

• 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 elementy

na gªównej diagonali s¡ równe dwa, a elementy na pod- i nad-

diagonalach s¡ równe minus jeden dla N = 10

p

z p = 1, 2, . . . , 9..

Za wektor prawej strony f mo»emy przyj¡¢ pierwsz¡ kolumn¦

macierzy A.

53

background image

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 = A

T

. W zadaniach zbadamy, jak dziaªa podstawowa funkcja

octave'a rozwi¡zuj¡ca zadanie wªasne, tzn. funkcja octave'a eig() oraz zba-

damy zbie»no±¢ ró»nych wersji metody pot¦gowej.

Metoda pot¦gowa jest zdeniowana nast¦puj¡co: dla dowolnego wektora

ˆ

x

0

= x

0

o normie drugiej równej jeden (np. losowego), deniujemy ci¡g

iteracji metody pot¦gowej nast¦puj¡co:

ˆ

x

k

= Ax

k−1

(iteracja)

x

k

=

ˆ

x

k

x

k

k

2

(normowanie)

r

k

= x

T
k

Ax

k

(iloraz

Rayleigha)

k > 0

(11.1)

Zgodnie z teori¡, o ile x

0

nie jest ortogonalny do wektora wªasnego (pod-

przestrzeni wªasnej) dla najwi¦kszej warto±ci wªasnej, to x

2k

zbiegnie do tego

wektora wªasnego, a r

k

- iloraz Rayleigha - do tej warto±ci wªasnej.

Zadanie 1 Zapoznaj si¦ z pomoc¡ do funkcji octave'a eig().

Za jej pomoc¡ oblicz warto±ci wªasne macierzy

0 1 1
1 0 1
1 1 0

.

Sprawd¹, czy dla λ warto±ci wªasnej A prawd¡ jest, »e wyznacznik
A − λ ∗ I

wynosi zero.

Wyznacz macierz V tak¡, »e jej kolumny to wektory wªasne A.
Przetestuj w normie macierzowej Frobeniusa, czy kAV − ΛV k

2

wynosi zero. Tutaj Λ - to macierz diagonalna z warto±ciami wªa-

snymi A.

54

background image

Zadanie 2 Zastosuj metod¦ pot¦gow¡ (11.1) do zadania wªasnego z macie-

rz¡ A z poprzedniego zadania. Za warunek stopu przyjmiemy, »e

iloraz Rayleigha r

k

praktycznie przestanie si¦ zmienia¢, co mo»e

sugerowa¢, »e jest bliski granicy, czyli odpowiedniej warto±ci wªa-

snej, tzn. je±li

|r

k+1

− r

k

| < tol

to zatrzymujemy iteracj¦. Przyjmijmy, »e tol = 10

−12

.

Przetestuj, czy otrzymane r

k

rzeczywi±cie jest dobrym przybli»e-

niem najwi¦kszej co do moduªu warto±ci wªasnej A - czyli dwa, a
x

k

zbiegªo do wektora wªasnego dla tej warto±ci wªasnej o normie

drugiej równej jeden, tzn. do v

1

= (

1

3

,

1

3

,

1

3

)

T

, lub −v

1

.

Przetestuj algorytm bior¡c za x

0

:

(a) wektory losowe - otrzymane za pomoc¡ funkcji losowych

rand() lub randn().

(b) wektor wªasny dla drugiej warto±ci wªasnej, tzn. dla minus

jeden, czyli unormowany wektor v

2

= (−2, 1, 1)

T

(c) wektor prawie ortogonalny do v

1

= (

1

3

,

1

3

,

1

3

)

T

, np. wek-

tor otrzymany przez zaburzenie ostatniej skªadowej wektora
v

2

: (−2, 1, 1.01)

T

.

Czy we wszystkich tych przypadkach metoda zbiegnie do v

1

lub

−v

1

?

Czy wybór x

0

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, tol , 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

,

• x

0

-wektor startowy niezerowy, domy±lnie losowy,

i która zwraca

przybli»enie - unormowanego w normie drugiej - wektora

wªasnego x dla najwi¦kszej warto±ci wªasnej co do moduªu

macierzy A,

55

background image

• r

- przybli»enie tej warto±ci wªasnej,

• it

- ilo±¢ iteracji metody pot¦gowej.

Warunek stopu przyjmiemy jak w poprzednim zadaniu, tzn. »e

iloraz Rayleigha r

k

przestanie si¦ zmienia¢. Je±li

|r

k+1

− r

k

| < 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 czy

funkcja octave'a eig() znajdzie warto±ci wªasne tej macierzy.

Zadanie 5 Utwórz macierze symetryczne A

a

(niediagonalne) wymiaru 11 ×

11

o warto±ciach wªasnych 1, . . . , 10, a dla a = 11, 101, 1001 i ze

znanymi wektorami wªasnymi.
Sprawd¹, ile iteracji b¦dzie potrzebowaªa metoda pot¦gowa dla

losowego wektora startowego do znalezienia najwi¦kszej warto±ci

wªasnej.
Czy potwierdzaj¡ si¦ wyniki teoretyczne, »e szybko±¢ zbie»no±ci

zale»y od stosunku najwi¦kszej co do moduªu warto±ci wªasnej

do drugiej co do moduªu warto±ci wªasnej, czyli w tym zadaniu
a/10

?

Zadanie 6 Dla macierzy z zadania 5 dla a = 11, 101 ze znanym wektorem

wªasnym v

1

dla warto±ci wªasnej a, przetestuj zbie»no±¢ x

k

obli-

czanego przy pomocy metody pot¦gowej do v

1

. W szczególno±ci

sprawd¹, czy

kv

1

− x

k

k

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ªasnej

a

, przetestuj zbie»no±¢ r

k

ilorazu Rayleigha obliczanego przy po-

mocy metody pot¦gowej do λ

1

. W szczególno±ci sprawd¹, czy

1

− r

k

| = O(|λ

2

1

|

2k

)

dla λ

2

= 10

i λ

1

= a

.

Zadanie 8 Dla macierzy z zadania 5 dla a = 11, 101 ze znanym wektorem

wªasnym v

1

dla warto±ci wªasnej 11 przetestuj zbie»no±¢ metody

pot¦gowej dla ró»nych wektorów startowych:

56

background image

dla losowego wektora x

0

ortogonalnego do v

1

(jak go mo»na

utworzy¢?)

dla wektora prawie ortogonalnego - za x

0

bierzemy w+10

−6

z

, gdzie w

T

v

1

= 0

i z to wektor losowy o normie drugiej

równej jeden.

dla dowolnego losowego wektora x

0

Prosz¦ powtórzy¢ testy kilka razy dla ka»dego podpunktu - czy

zdarzyª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¦gowej

zastosowanej do macierzy odwrotnej A

−1

zamiast A:

function [ x , r , i t ]= invpower (A, tol , x0 )

Wszystkie parametry i zwracane warto±ci b¦d¡ takie same jak w

funkcji power() z zadania 3.

Zadanie 10 Utwórz macierz z zadania 5 dla a = 11, 101, 1001. Sprawd¹, ile

iteracji 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 |r

k

−r

k+1

| ≤

10

−12

. Tutaj r

k

- 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 , tol , x0 )

Tutaj b b¦dzie dodatkowym parametrem tej funkcji, a pozostaªe

parametry i zwracane warto±ci pozostaj¡ takie same jak w funkcji

z 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ó»nych

warto±ci parametru b = 1.3, 1.5, 1.8, 2.1, 2.01 do znalezienia ró»-

nych warto±ci wªasnych macierzy A

a

.

57

background image

Zadanie 13 Zaimplementuj funkcj¦ analogiczn¡ do tej z zadania 3 z imple-

mentacj¡ metody ilorazów Rayleigha:

function [ x , r , i t ]= raylegh (A, b , tol , x0 )

Metoda polega na tym, »e dla danego wektora startowego x

0

o

drugiej normie równej jeden, obliczamy iloraz Rayleigha r

0

=

x

T
0

Ax

0

i iterujemy:

x

k

=

(A−r

k−1

I)

−1

x

k−1

k(A−r

k−1

I)

−1

x

k−1

k

2

r

k

= x

T
k

Ax

k

k > 0

(11.2)

Oczywi±cie w implementacji prosz¦ nie oblicza¢ macierzy odwrot-

nej do A − r

k

∗ I

, tylko rozwi¡zywa¢ ukªad równa« liniowych z t¡

macierz¡.
Wszystkie parametry i zwracane warto±ci b¦d¡ takie same jak w

funkcji power() z zadania 3.

Zadanie 14 Przetestuj metod¦ ilorazów Rayleigha na przykªadzie macierzy

symetrycznej z zadania 5 dla a = 11, 101, 1001 bior¡c losowy

wektor 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:
Q

T

BQ = A

lub B = QAQ

T

za pomoc¡ odpowiednich przeksztaª-

ce« Householdera:

function [B,Q]= sym2tridiag (A, typ )

która za parametry ma

• A

- symetryczn¡ macierz wymiary N × N

• tol

- typ zwracanej macierzy Q, typ=0 oznacza, »e Q jest

zwracana jako macierz N × N - wymno»one macierze Ho-

useholdera (domy±lna opcja), typ=1 oznacza, »e w macierzy
Q

zwracamy kolumny odpowiednich macierzy Householdera

i która zwraca

• B

- trójdiagonaln¡ macierz symetryczn¡ podobn¡ do A w

formacie rzadkim octave'a (sparse),

58

background image

• Q

macierz b¦d¡c¡ iloczynem przeksztaªce« Householdera

lub macierz, w której kolumnach s¡ odpowiednie wektory

Householdera w zale»no±ci od warto±ci parametru typ.

Zadanie 16 Przetestuj funkcj¦ z poprzedniego zadania dla jakiej± macierzy

symetrycznej A (ani diagonalnej, ani trójdiagonalnej, ani trójk¡t-

nej) o znanych warto±ciach wªasnych, np. dla macierzy z zadania

5 dla a = 11, 101, 1001.
Policz norm¦ Frobeniusa kA − Q

T

BQk

F

i kQAQ

T

− Bk

F

.

Sprawd¹, czy funkcja octave'a eig() dla obu macierzy zwróci te

same warto±ci wªasne, i czy odpowiednie wektory wªasne speª-

niaj¡:

Qv

k

= w

k

,

Q

T

w

k

= v

k

,

gdzie w

k

to wektor wªasny macierzy B dla warto±ci wªasnej λ

k

,

a v

k

- to wektor wªasny dla tej samej warto±ci wªasnej λ

k

dla

macierzy A.

59

background image

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 Fourier

Transform)

W opisie matematycznym przyjmujemy, »e mamy do czynienia z wekto-

rami okresowymi o okresie dªugo±ci N indeksowanymi od zera i x

k

= x

k+N

dla k ujemnych.

Przez F

N

x

oznaczymy wynik dziaªania operatora DFT na wektorze x, a

przez F

−1

N

x

oznaczymy wynik dziaªania operatora odwrotnego do DFT na

wektorze x.

Zadanie 1 Funkcja octave'a z algorytmem FFT t (), która oblicza warto±¢

DFT i funkcja octave'a z algorytmem odwrotnym FFT it (),

która oblicza warto±¢ transformaty odwrotnej do DFT.
Sprawd¹, czy rzeczywi±cie operacje wykonywane przez t () i

it () s¡ do siebie odwrotne, tzn. dla ró»nych losowych wektorów

x

o dªugo±ci N = 4, 8, 16, 32 policz y = F

N

x

za pomoc¡ t (), a

nast¦pnie z = F

−1

N

y

za pomoc¡ it ().

Policz normy drugie ró»nicy z − x.

Zadanie 2 Skalowanie w funkcjach octave'a t () i it ().

W literaturze zdarza si¦ denicja DFT bez 1/N przed macierz¡.

Wtedy macierz odwrotn¡ do DFT nale»y przemno»y¢ przez N

albo obie przez 1/

N

.

Sprawd¹, jaka jest staªa przed DFT obliczanym przez funkcj¦

60

background image

t (), tzn. wyznacz C

N

takie, »e

(F

N

x)

j

= C

N

N −1

X

k=0

x

k

exp(−2π ∗ j ∗ k/N )

dla F

N

x

obliczanego przez t¦ funkcj¦ octave'a .

Zadanie 3 Sprawd¹, czy DFT obliczona przy pomocy funkcji t () speªnia

kF

N

xk

2

= C

N

kxk

2

ze staª¡ C

N

dla stu losowych wektorów x, oraz czy analogicznie

odwrotna DFT obliczona it () speªnia:

kF

−1

N

yk

2

= C

−1

N

kxk

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 dyskretnej

transformaty Fouriera i odwrotnej dyskretnej transformaty Fo-

uriera.
Parametry funkcji powinny by¢:

wektor p = (p

k

)

k

ze wspóªczynnikami wielomianu P (x) =

P

k

p

k

x

k

,

wektor q = (q

k

)

k

ze wspóªczynnikami wielomianu Q(x) =

P

k

q

k

x

k

.

Funkcja powinna zwróci¢ wspóªczynniki wielomianu W (x) = P (x)∗
Q(x) =

P

k

w

k

x

k

.

Sprawd¹ dziaªanie funkcji dla wielomianów P (x) = 1+x i Q(x) =
2 + x

, czyli (P ∗ Q)(x) = 2 + 3x + x

2

, a potem dla wielomianów

du»ych stopni, czyli np. dla Q(x) = x

50

i P (X) = x

50

+ 1

funkcja

powinna zwróci¢ wspóªczynniki wielomianu (P ∗ Q)(x) = x

100

+

x

50

.

Porównaj czas oblicze« tej funkcji z wynikiem funkcji octave'a

conv() dla wielomianów ró»nych stopni z losowymi wspóªczyn-

nikami.

61

background image

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 denicji, tzn. z

k

=

P

N −1
j=0

x

k

y

k−j

z wykorzystaniem DFT - tu musimy skorzysta¢ z tego, »e

(F

N

(x ? y))

k

= α

N

(F

N

x)

k

∗ (F

N

y)

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ó»nych
N = 4, 8, 64, 1024

. Porównaj z wynikami funkcji octave'a

conv(). 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 =

1
4

∗ (1, 1, 1, 1, 0, . . . , 0)

T

(pierwsze

cztery wspóªrz¦dne s¡ równe

1
4

, pozostaªe - zero).

Zastosuj ten ltr do wektora imituj¡cego próbki sygnaªu z szu-

mem: z = x + y, gdzie x

k

= sin(k ∗ h)

dla h = 2 ∗ π/N - imituje

sygnaª bez szumów, a y jest wektorem losowym o warto±ciach

w [−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 fragment

wykresu, np dla 100 ≤ k ≤ 120. Jaki efekt optyczny wida¢

na wykresach?

Policz maksimum z moduªu ró»nicy kolejnych elementów

obu wektorów, tzn. max

k>0

|z

k

− z

k−1

|

i max

k>0

|(z ? F )

k

(z ? F )

k−1

|

. Im ta warto±¢ dla danego wektora z próbkami

sygnaªu jest mniejsza, tym sygnaª jest gªadszy, czyli mo»emy

uzna¢ go za sygnaª z mniejsz¡ ilo±ci¡ szumów.

62

background image

Projekty zaliczeniowe

63

background image

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»na

potraktowa¢ jako trudniejsze zadania laboratoryjne.

Niektóre projekty s¡ proste je±li chodzi o stron¦ programistyczn¡. W

przypadku wi¦kszo±ci takich projektów gªówn¡ cz¦±ci¡ jest przetestowanie

danej metody. Inne projekty mog¡ polega¢ na zaimplementowaniu bardziej

skomplikowanej metody z wykorzystaniem ró»nych funkcji octave'a.

64

background image

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 zmodykowanym 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 bazie

Newtona,

• N

- stopie« wielomianu (mo»na opcjonalnie obliczy¢ N z wektora

wspóªczynników).

Funkcja zwraca y tablice warto±ci wielomianu w punktach x.

2. Zaprogramuj funkcj¦ obliczaj¡c¡ ró»nice dzielone dla danych N + 1

w¦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 [x

0

, . . . , x

k

]

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 funkcji

octave'a polyt.
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 za

pomoc¡ funkcji z projektu i za pomoc¡ funkcji polyt octave'a

w bazie pot¦gowej. Oblicz dyskretn¡ norm¦ maksimum (na 1000

punktach) mi¦dzy wielomianem w bazie Newtona uzyskanym wªa-

sn¡ funkcj¡, a jej wielomianem interpolacyjnym uzyskanym polyt.

Czy ró»nice s¡ pomijalne?

Bª¡d interpolacji

65

background image

Oblicz dyskretn¡ norm¦ maksimum (na 1000 punktach) mi¦dzy

funkcj¡, a jej wielomianem interpolacyjnym otrzymanym za po-

moc¡ funkcji z projektu dla N = 4, 8, 16, 32, 64. Narysuj wykresy

funkcji i wykres jej wielomianu interpolacyjnego (na jednym ry-

sunku).

Warto±¢ wielomianu w bazie Newtona obliczamy algorytmem Hornera

z pierwszego podpunktu.

66

background image

Równania nieliniowe. Metoda Steensena

Zaprogramuj funkcj¦ octave'a z metod¡ Steensena zdeniowan¡ wzorem

x

n+1

= x

n

f (x

n

)

2

f (x

n

+ f (x

n

)) − f (x

n

)

- 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±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¦ Steensena 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

0

(x

) 6= 0

dla konkretnej funkcji f(x) = x

3

− 27

.

67

background image

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)

p|f

0

(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

0

i f

00

.

Napisz funkcj¦ z metod¡ Halleya

1

:

function [ x , i t ]= h a 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

0

(x)

dla danego argumentu x,

D2FCN - 'wska¹nik' do funkcji (function handle) obliczaj¡cej warto±¢

drugiej pochodnej f

00

(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(x

n

)| < 10

−7

lub |x

n+1

− x

n

| < 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

0

(x

) 6= 0

dla f(x) = x

2

− 4

dla x

= 2

.

1

Tak, tego Halleya od komety Halleya.

68

background image

Równania nieliniowe. Rozwikªywanie funkcji.

Rozpatrzmy dan¡ krzyw¡ okre±lon¡ równaniem f(x, y) = 0, gdzie funkcja
f (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 x

k

= a + k ∗ h

dla h = (b − a)/N, znaj¡c dobre przybli»enie

y(x

0

) = 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 y

0

N ilo±ci punktów, w których chcemy znale¹¢ przybli»enie y

k

y(x

k

)

- 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 y

k

= y(x

k

)

dla k = 0, . . . , N.

W ka»dym kroku trzeba rozwi¡za¢, u»ywaj¡c funkcji octave'a fsolve ()),

równanie nieliniowe:

g(y

k

) = f (x

k

, y

k

) = 0

bior¡c za startowe przybli»enie y

k−1

(obliczone w poprzednim kroku dla

k − 1

).

Je±li si¦ oka»e, »e fsolve() nie potra rozwikªa¢ funkcji powinien na

ekranie 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. Za
y0

mo»emy wzi¡¢ y0 = 1

g(x, y) = x

3

+ y

3

− 4

na [0, 1] × [0, 1].

69

background image

Metoda Householdera. LZNK

Zaªó»my, »e w wyniku do±wiadczenia otrzymujemy m punktów (x

k

, y

k

)

, które

powinny le»e¢ na jednej prostej, ale w wyniku bª¦dów pomiaru le»¡ tylko

blisko prostej. Chcemy wyznaczy¢ prost¡ y = ax + b, która le»y najbli»ej

tych punktów w sensie najmniejszych kwadratów, tzn. takie a, b, »e suma

m

X

k=1

|ax

k

+ b − y

k

|

2

jest minimalna. To zadanie mo»emy przedstawi¢ jako odpowiednie regularne

LZNK. 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 dane

punkty (x

k

, y

k

) k = 1, . . . , m

za pomoc¡ rozkª¡du QR macierzy przy pomocy

metody Householdera. Tzn. szukamy (a, b) takich, »e

m

X

k=1

|ax

k

+ b − y

k

|

2

= min

ˆ

a,ˆ

b

m

X

k=1

ax

k

+ ˆ

b − y

k

|

2

.

Czyli: w funkcji rozwi¡zujemy LZNK A ∗ [a; b] ≈ ~y z macierz¡

A = [~

x, ~1]

dla wektorów

~1 =




1
1

...

1




,

~

x =




x

1

x

2

...

x

m




i wektora prawej strony

~

y =




y

1

y

2

...

y

m




.

Jako parametry wej±ciowe funkcji traktujemy wektory ~x, ~y dªugo±ci m,

funkcja powinna zwraca¢:

70

background image

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 A

metod¡ Householdera, tzn. A = Q ∗ [R; 0],

dwukolumnow¡ macierz B = [~h

1

, ~h

2

]

wymiaru m × 2 - w której od-

powiednie kolumny to wektory Householdera ~h

k

k = 1, 2

dla macierzy

Householdera H

k

takich, »e H

1

∗ H

2

= 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 x

k

- czy znajdzie

prost¡ przechodz¡c¡ przez te punkty.

2. Przetestuj dla punktów le»¡cych na prostej: tzn. wygeneruj kilka ró»-

nych losowych punktów x

k

i przyjmij y

k

= 2 ∗ x

k

− 10

. Nast¦pnie

sprawd¹, czy funkcja zwróci a = 2, b = −10.

3. Przetestuj dla punktów le»¡cych blisko danej prostej: tzn. przyjmij np.

x

k

= k/m

dla k = 1, . . . , m dla ró»nych m > 1 z y

k

= x

k

+ 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 i

macierzy R, A zachodzi

A = H

1

∗ H

2

∗ [R; 0],

np. dla przykªadów z poprzednich podpunktów. W tym celu mo»na

stworzy¢ macierze H

k

i [R; 0] i te trzy macierze wymno»y¢.

71

background image

Bibliograa

[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. Scientic computing. Aca-

demic Press Inc., Boston, MA, 1993. An introduction with

parallel computing.

[6] Gene H. Golub i James M. Ortega. Scientic computing

and dierential 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 revised

from the 1991 German original.

72

background image

[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 and

Applied Mathematics (SIAM), Philadelphia, PA, 2003.

[10] A. Kieªbasi«ski i H. Schwetlick. Numeryczna algebra liniowa:

wprowadzenie do oblicze« zautomatyzowanych. Wydawnictwo

Naukowo 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 the

1970 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. A

second course.

[14] Alo Quarteroni, Riccardo Sacco, i Fausto Saleri. Nume-

rical mathematics, tom 37, Texts in Applied Mathematics.

Springer-Verlag, New York, 2000.

[15] Alo Quarteroni i Fausto Saleri. Scientic computing with

MATLAB, tom 2, Texts in Computational Science and En-

gineering. Springer-Verlag, Berlin, 2003.

[16] Anthony Ralston. Wstep do analizy numerycznej. Pa«stwowe

Wydawnictwo Naukowe (PWN), Warszawa, 1983.

73

background image

[17] J. Stoer i R. Bulirsch. Wstep do metod numerycznych. Tom

drugi. Pa«stwowe Wydawnictwo Naukowe (PWN), War-

szawa, 1980. Przetªumaczone z niemieckiego przez Maªgo-

rzate Mikulska.

[18] Lloyd N. Trefethen i David Bau, III. Numerical linear alge-

bra. Society for Industrial and Applied Mathematics (SIAM),

Philadelphia, PA, 1997.

74


Document Outline


Wyszukiwarka

Podobne podstrony:
Zadania do wykładów z fizyki
3 Zadania do wykladu Dzialania na macierzach rzad macierzy
1 Zadania do wykladu Liczby zespolone
8 Zadania do wykladu Granica funkcji Ciaglosc funkcji 1
3.Zadania do wykladu Dzialania na macierzach rzad macierzy
MAPY GEOGRAFICZNE, Zadania do zamiany skali i obliczania odległości, Zadanie 1
zadania do wykladu 6, WNoŻ Technologia żywności SGGW zaoczne, I semestr, chemia nieorganiczna
Zadania do wykładu pierwszego 18 wrzesień 2010
6.Zadania do wykladu Funkcje, wlasnosci
7 Zadania do wykladu Granica ciagu
Zadania do wykładu, UEK FIR, licencjat, 6 semestr, rezerwy Poniatowska
6 Zadania do wykladu Funkcje wlasnosci
9 Zadania do wykladu Asymptoty funkcji pochodna funkcji
2 Zadania do wykladu Macierze wyznaczniki
statystyka matematyczna - PWS 2014, statystyka, zadania, do rozwiązania, matematyczna
6 Zadania do wykladu Funkcje wlasnosci
3 Zadania do wykladu Dzialania na macierzach rzad macierzy
8 Zadania do wykladu Granica funkcji Ciaglosc funkcji 1

więcej podobnych podstron