Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie...

5

Click here to load reader

Transcript of Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie...

Page 1: Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie Scilab dla grupy 1CB Prowadzący: Łukasz Smaga ... horner(w,x 0), gdziex 0 jestpunktem,wktórymobliczamywartośćwielomianuw.

Elementy metod numerycznych DEMN LMOZadania w programie Scilab dla grupy 1CB

Prowadzący: Łukasz Smaga

1 września 2011

Błąd reprezentacji i arytmetyka zmiennoprzecinkowa

Zadanie 1. Przy pomocy pakietu matematycznego Scilab oblicz 2, 7− (1+1, 7) i (2, 7−1)−1, 7 oraz porównajwyniki.

Zadanie 2. Przy pomocy funkcji suma.sci oblicz wartości x =10000∑i=1

1i2 , y =

1∑i=10000

1i2 , x−y. Porównaj otrzymane

wyniki.Wskazówka: Wywołanie funkcji suma.sci :

[s1, s2, s3] = suma(n),

gdzie s1 =n∑i=1

1i2 , s2 =

1∑i=n

1i2 , s3 = s1− s2.

Zadanie 3. Przy pomocy funkcji wiel.sci oblicz wartości wielomianu w(x) w 21 równoodległych punktachprzedziału [0.99, 1.01] dla każdej z poniższych postaci wielomianu w:

a) w(x) = (x− 1)6b) w(x) = x6 − 6x5 + 15x4 − 20x3 + 15x2 − 6x+ 1c) w(x) = (((((x− 6)x+ 15)x− 20)x+ 15)x− 6)x+ 1 (algorytm Hornera).

Porównaj uzyskane wyniki.

Zadanie 4. Napisz funkcję obliczającą wartości wyrażeń√x2 + 1−1, x2√

x2+1+1dla x = 8−1, 8−2, ..., 8−n, n ∈ N.

Powyższe wyrażenia są matematycznie równe. Czy dla komputera takimi pozostają?

Zadanie 5. Niech xn =1∫0

xn

x+5dx. Na podstawie wzoru rekurencyjnego wprowadzamy następujące metody

obliczania całek:a) xn = 1n − 5xn−1 przy danej wartości początkowej x0b) xn−1 = 1

5n −15xn przy danej wartości początkowej xn.

Przy pomocy funkcji calka.sci oblicz powyższe całki obydwoma sposobami dla:a) n = 1, 2, ..., 8 oraz x0 = 0, 182b) n = 7, 6, ..., 0 oraz x8 = 0, 019.

Która z metod jest lepsza?Wskazówka: Wywołanie funkcji calka.sci :

calka(x, y, n),

gdzie x jest punktem startowym w metodzie a), y jest punktem startowym w metodzie b), n jest liczbą iteracji.

Algorytm Hornera

Zadanie 6. Przy pomocy funkcji horner oblicz wartość wielomianu w(x) = 2x4+ x2− x+5 w punkcie x0 = 3algorytmem Hornera.Wskazówka: Wywołanie funkcji horner :

horner(w, x0),

gdzie x0 jest punktem, w którym obliczamy wartość wielomianu w.

1

Page 2: Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie Scilab dla grupy 1CB Prowadzący: Łukasz Smaga ... horner(w,x 0), gdziex 0 jestpunktem,wktórymobliczamywartośćwielomianuw.

Elementy metod numerycznych DEMN LMO - Zadania w programie Scilab dla grupy 1CB

Zadanie 7. Napisz funkcję obliczającą iloraz i resztę będące wynikiem dzielenia wielomianu w(x) przez dwu-mian d(x) = x− x0 za pomocą algorytmu Hornera.Wskazówka: Wywołanie tej funkcji powinno wyglądać następująco:

[a, b] = horner1(w, x0),

gdzie a jest resztą, a b ilorazem z dzielenia wielomianu w przez dwumian x− x0.

Zadanie 8. Wykorzystaj funkcję horner2.sci do wykonania zadania 3.4 (funkcja horner2.sci wykorzystujeprzygotowaną według wskazówki funkcję horner1.sci z zadania 7).Wskazówka: Wywołanie funkcji horner2.sci :

horner2(w, x0),

gdzie x0 jest punktem, w którym funkcja wyznacza wartości wszystkich znormalizowanych pochodnych wielo-mianu w.

Dzielenie wielomianów

Do dzielenia wielomianów służy instrukcja pdiv. Wywołanie:

[a, b] = pdiv(p, q),

gdzie a jest resztą, a b ilorazem z dzielenia wielomianu p przez wielomian q.

Zadanie 9. Przy pomocy powyższej instrukcji wyznacz iloraz i resztę z dzielenia wielomianu p(x) = x3 − 2przez dwumian q(x) = x− 1.

Interpolacja wielomianowa

Do interpolacji liniowej i funkcjami sklejanymi służy np. instrukcja interp1. Wywołanie:

interp1(x, y, z,′ n′),

gdzie x jest wektorem węzłów, y wektorem wartości w węzłach, z są punktami, w których chcemy obliczyćwartości funkcji interpolującej, n jest nazwą metody (linear - metoda liniowa, spline - interpolacja funkcjamisklejanymi).

Zadanie 10. Przy pomocy powyższej instrukcji dla danych z zadania 4.1 znajdź wartości funkcji interpolująceja) liniowejb) sklejanej

w punktach: −2,−1, 0, 1, 2, 3, 4.

Zadanie 11. Napisz funkcję wyznaczającą wielomian interpolacyjny Lagrange’a dla danych węzłów x1, x2, ..., xni wartości y1, y2, ..., yn pewnej funkcji f w tych punktach oraz obliczającą wartość tego wielomianu w punktachleżących wewnątrz przedziału interpolacji.Wskazówka: Wywołanie tej funkcji powinno wyglądać następująco:

[w, a] = lagrange(x, y, s),

gdzie w jest wielomianem interpolacyjnym Lagrange’a, a = w(s), x = [x1, x2, . . . , xn], y = [y1, y2, . . . , yn].

Rozkład LU i rozwiązywanie układów równań liniowych

Do wyznaczania rozkładu LU macierzy służy instrukcja lu. Wywołanie:

[L,U, P ] = lu(A),

gdzie PA = LU i P jest macierzą permutacji.2

Page 3: Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie Scilab dla grupy 1CB Prowadzący: Łukasz Smaga ... horner(w,x 0), gdziex 0 jestpunktem,wktórymobliczamywartośćwielomianuw.

Elementy metod numerycznych DEMN LMO - Zadania w programie Scilab dla grupy 1CB

Zadanie 12. Przy pomocy powyższej instrukcji znajdź rozkład LU macierzy:

a) AAA =

1 1 22 −1 24 1 4

, b) BBB =

60 30 2030 20 1520 15 12

.Operator \ służy do rozwiązywania układów równań liniowych stosując rozkład LU z częściową zamianą

wierszy prowadzącą do rozwiązania dwóch trójkątnych układów równań (patrz Wprowadzenie do Scilaba str.17). Wywołanie:

A\b,

gdzie A jest macierzą układu równań, a b kolumną wyrazów wolnych. Funkcja pinv wyznacza pseudoodwrot-ność Moore’a-Penrose’a A+ macierzy A. Spełnia ona warunki AA+A = A, A+AA+ = A+, (AA+)∗ = AA+,(A+A)∗ = A+A. Jeśli układ jest sprzeczny wektor x = pinv(A) ∗ b jest taki, że ‖b−Ax‖ = min

y∈Rn‖b−Ay‖, gdzie

‖ · ‖ jest normą euklidesową.

Zadanie 13. Przy pomocy operatora \ lub funkcji pinv rozwiązać następujące układy równań:

a)

x+ y + 2z = −12x− y + 2z = −44x+ y + 4z = −2

b)

x+ y + z = 02x− 3y + 4z = 04x− 11y + 10z = 0

c)

{x+ 2y + z = 1x+ 2y = 1

d)

{x+ y = 1x+ y = 0

Rozwiązywanie równań nieliniowych

Do numerycznego rozwiązywania równań nieliniowych i ich układów służy instrukcja fsolve. Wywołanie:

fsolve(x0, f),

gdzie x0 jest przybliżeniem początkowym (odpowiednio bliskim) pierwiastka, f jest funkcją, której miejscazerowe szukamy.

Zadanie 14. Za pomocą powyższej instrukcji znajdź pierwiastki wielomianu f(x) = x3 − 4x2 − 11x+ 30.

Zadanie 15. Za pomocą powyższej instrukcji rozwiąż równanie sin(x) = ex.

Zadanie 16. Wykorzystując funkcję bisekcja.sci znajdź pierwiastek funkcji f(x) = x3 − 4x2 − 11x + 30 wprzedziale (1, 4).Wskazówka: Wywołanie funkcji bisekcja.sci :

bisekcja(a, b, i, d, e, f),

gdzie a lewy koniec przedziału początkowego, b prawy koniec przedziału początkowego, i ograniczenie na liczbęiteracji, d zadawalająca długość przedziału, e ograniczenie na wartość |f(xn)|, f funkcja, której miejsca zeroweszukamy.

Zadanie 17. Wykorzystując funkcję Newton1.sci znajdź pierwiastek funkcji f(x) = x3 − 4x2 − 11x + 30 wprzedziale (1.5, 2.5).Wskazówka: Wywołanie funkcji Newton1.sci :

Newton1(a, b, i, e, f, fp1, fp2),

gdzie a lewy koniec przedziału początkowego, b prawy koniec przedziału początkowego, i ograniczenie na liczbęiteracji, e ograniczenie na wartość |f(xn)|, f funkcja, której miejsca zerowe szukamy, fp1 = f ′, fp2 = f ′′.

Zadanie 18. Wykorzystując funkcję Newton.sci znajdź pierwiastek funkcji g(x) = x2+1 przyjmując za punktstartowy liczbę zespoloną 3 + i.Wskazówka: Wywołanie funkcji Newton.sci :

Newton(x0, i, e, f, fp1),

gdzie x0 przybliżenie początkowe (odpowiednio bliskie) pierwiastka, i ograniczenie na liczbę iteracji, e ograni-czenie na wartość |f(xn)|, f funkcja, której miejsca zerowe szukamy, fp1 = f ′.

3

Page 4: Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie Scilab dla grupy 1CB Prowadzący: Łukasz Smaga ... horner(w,x 0), gdziex 0 jestpunktem,wktórymobliczamywartośćwielomianuw.

Elementy metod numerycznych DEMN LMO - Zadania w programie Scilab dla grupy 1CB

Zadanie 19. Napisz funkcję obliczającą pierwiastki funkcji f w przedziale (a, b) metodą siecznych. Wykorzystajją do znalezienia pierwiastka funkcji f(x) = x3 − 4x2 − 11x+ 30 w przedziale (−4,−2).Wskazówka: Należy oprzeć swoje rozwiązanie na funkcji Newton1.sci z zadania 17. Wywołanie tej funkcjipowinno wyglądać następująco:

sieczne(a, b, i, e, f),

gdzie a lewy koniec przedziału początkowego, b prawy koniec przedziału początkowego, i ograniczenie na liczbęiteracji, e ograniczenie na wartość |f(xn)|, f funkcja, której miejsca zerowe szukamy.

Liczba i lokalizacja pierwiastków wielomianu

Zadanie 20. Przy pomocy funkcji sturm1.sci wykonaj polecenie zadania 7.1.Wskazówka: Wywołanie funkcji sturm1.sci :

sturm1(a, b, w),

gdzie a (b) lewy (prawy) koniec przedziału, w którym badamy liczbę pierwiastków danego wielomianu, w danywielomian.

Zadanie 21. Przy pomocy funkcji fourier.sci wykonaj polecenie zadania 7.2.Wskazówka: Wywołanie funkcji fourier.sci :

[l,m,mb,ma] = fourier(a, b, w),

gdzie l tabela z pochodnymi danego wielomianu i ich wartościami w punktach a i b, ma (mb) liczba zmianznaku w ciągu wartości pochodnych w punkcie a (b), m = ma −mb, a (b) lewy (prawy) koniec przedziału, wktórym badamy liczbę pierwiastków danego wielomianu, w dany wielomian.

Zadanie 22. Przy pomocy funkcji laguerr.sci wykonaj polecenie zadania 7.3.

Zadanie 23. Napisz funkcję wyznaczającą liczbę zmian znaku w ciągu współczynników wielomianu (pomijającązera, jak w metodzie Kartezjusza).Wskazówka: Można, przy pisaniu odpowiedniej funkcji, wspomóc się funkcją fourier.sci z zadania 21. Wywo-łanie tej funkcji powinno wyglądać następująco:

[l,m] = kartezjusz(w),

gdzie l jest wektorem współczynników wielomianu w, m jest liczbą zmian znaku w ciągu współczynników.

Całkowanie numeryczne

Do numerycznego wyznaczania całek oznaczonych służą instrukcje:

• integrate oblicza wartość numeryczną całki

integrate(′f(x)′,′ x′, a, b) ≈b∫a

f(x) dx

• intsplin oblicza całkę z funkcji sklejanej (jednej zmiennej) interpolującej zbiór punktów

• inttrap oblicza całkę z funkcji (jednej zmiennej) interpolującej zbiór punktów – wzór trapezów

• int2d oblicza całkę z funkcji dwóch zmiennych po obszarze opisanym siatką trójkątów. Wywołanie:

[I, e] = int2t(X,Y, f),

gdzie I wartość przybliżenia, e błąd, X,Y macierze tworzące siatkę trójkątów, f funkcja.

4

Page 5: Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie Scilab dla grupy 1CB Prowadzący: Łukasz Smaga ... horner(w,x 0), gdziex 0 jestpunktem,wktórymobliczamywartośćwielomianuw.

Elementy metod numerycznych DEMN LMO - Zadania w programie Scilab dla grupy 1CB

Zadanie 24. Za pomocą powyższych instrukcji wyznacz wartości następujących całek:

a)3∫1

dx

x, b)

1∫0

ln(x) dx, c)1∫0

1∫0

xy2 dy dx.

Zadanie 25. Napisz funkcję obliczającą wartość całki metodą trapezów (złożoną). Wykonaj ją dla danych zzadania 8.4.Wskazówka: Wywołanie tej funkcji powinno wyglądać następująco:

trapez(f, x),

gdzie f funkcja podcałkowa, x wektor końców przedziałów.

Zadanie 26. Napisz funkcję obliczającą wartość całki metodą Simpsona (złożoną). Wykonaj ją dla danych zzadania 8.6.Wskazówka: Wywołanie tej funkcji powinno wyglądać następująco:

simpson(f, x),

gdzie f funkcja podcałkowa, x wektor końców przedziałów.

Numeryczne rozwiązywanie równań różniczkowych zwyczajnych

Do numerycznego rozwiązywania równań różniczkowych zwyczajnych służy instrukcja ode. Wywołanie dla za-gadnienia Cauchy’ego {

y′(t) = f(t, y)y(t0) = y0

jest postaci:ode(′m′, y0, t0, x, f),

gdzie m jest skrótem metody, którą wykorzystujemy (domyślnie jest to metoda Adamsa, rk - metoda Rungego-Kutty), x jest punktem (wektorem punktów), w którym obliczamy wartość rozwiązania.

Zadanie 27. Wyznacz wartość rozwiązania zagadnienia Cauchy’ego{y′(x) = −3y(x)y(0) = 1

w punkcie x = 2 metodą Adamsa.

Zadanie 28. Znajdź wartości rozwiązania zagadnienia Cauchy’ego

a)

{y′ − xy

2(x2−1) =x2y

y(0) = 1b)

{y · y′ = exy(0) = 1

w punktach: 0, 14 ,12 ,34 metodą Rungego-Kutty.

5