Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie...
Click here to load reader
Transcript of Elementy metod numerycznych DEMN LMO Zadania w …ls/EMN/EMN_3MOscilabst.pdf · Zadania w programie...
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
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
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
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
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