Metody matematyczne w inżynierii chemicznej Wykład 3. Całkowanie numeryczne
Graficzna definicja całki oznaczonej P a b
Graficzna definicja całki oznaczonej y Pi f(x) x x1 x2 a b
Metoda prostokątów y Pi a b x x0 x1 x2 xi xi+1 xN
Błąd metody zależność u(x)= przybliżamy (aproksymujemy) inną funkcją U(x, h) = Wymagane jest by funkcja "zastępcza" dla h 0 była zbieżna do u(x). Oznacza to, że różnica (Residuum) R musi dążyć do 0 dla h dążącego do 0
Błąd metody Dla metody istotne jest jak szybko zmniejsza się R, co można zapisać n – dodatnia liczba całkowita oznaczająca rząd metody Dla jednego kroku metoda prostokątów ma rząd n = 2 Wielokrotne użycie każdej z metoda zmniejsza rząd o 1 Ostatecznie
Metoda trapezów y Pi a b x x0 x1 x2 xi xi+1 xN
Metoda trapezów Ostateczny wzór na obliczanie całki metodą trapezów:
Metoda trapezów algorytm Przeczytaj granice całkowania, x0 i xN Przeczytaj ilość podziałów N Oblicz h = (x0 - x1)/N Oblicz y0 i yN Oblicz P = h/2(y0 + yN) Przyjmij i = 1 Oblicz xi = x0 +ih Oblicz yi Oblicz P = P + hyi Zwiększ i o 1 (i=i+1) Jeżeli iN-1 to idź do p. 6 Drukuj P Koniec
Metoda trapezów schemat blokowy start 1 Czytaj N, x0,xN P = P + hyi h = (x0+xN)/N i = i + 1 y0 = y(x0) i N-1 yN = y(xN) Drukuj P P = h/2(y0 + yN) koniec i = 1 y(x) xi = x0+ih y = funkcja x yi = y(xi) powrót 1
Metoda trapezów program 5 DEF FNy(x) = funkcja x 10 INPUT "Podaj granice całkowania"; x0, xN 20 INPUT "Podaj ilość podziałów N:"; N 30 h = (xN – x0)/N 40 y0 = FNy(x0): yN = FNy(xN) 50 P = h/2*(y0+yN) 60 FOR i= 1 to N-1 70 xi = x0 + i*h 80 yi = FNy(xi) 90 P = P + h*yi 100 NEXT i 110 PRINT "Wartość całki to:"; P 120 END
Metoda Simpsona y2 y1 y0 P x0 x0+2h x0+h
Metoda Simpsona Inna postać:
Metoda Simpsona n 2 n = 2k, gdzie k to dowolna liczba naturalna Warunki jakie musi spełniać ilość podziałów n: n 2 n = 2k, gdzie k to dowolna liczba naturalna
Metoda Simpsona program 10 DEF FNy(x) = jakaś funkcja x 20 INPUT "Podaj granice całkowania:"; x0, xN 30 INPUT "Na ile części podzielić przedział (liczba parzysta)"; N 40 IF (INT(N/2)-N/2) <> 0 THEN PRINT "N nie jest liczbą parzystą": GOTO 30 50 h = (xN-x0)/N 60 P = h/3*(FNy(x0)+FNy(xN)) 70 FOR i = 1 TO N-1 80 xi = x0 + i*h 90 P = P + h/3*(3+(-1)^i)*FNy(xi) 100 NEXT i 110 PRINT "Całka ma wartość: "; P 120 END
Metoda Romberga Modyfikacja metody trapezów Zwiększenie dokładności poprzez zastosowanie ekstrapolacji http://en.wikipedia.org/wiki/Richardson_extrapolation
Metoda Romberga Granice całkowania <a, b> dzielimy na N części to Przybliżoną wartość całki określa wzór: Jeżeli krok zmniejszymy 2-krotnie: W ten sam sposób obliczmy: Jest oczywiste, że dla N otrzymamy wynik pozbawiony błędu metody. Pozostaje problem błędu zaokrąglenia!
Metoda Romberga Utwórzmy nowy ciąg zgodnie z równaniami: itd. Można wykazać, że ciąg taki jest szybciej zbieżny niż ciąg pierwotny.
Metoda Romberga Można utworzyć ciąg: itd. który jest jeszcze szybciej zbieżny.
Metoda Romberga Obliczenie przy znanym x0 x1 xi xi+1 y0 y1 yi yi+1
Metoda Romberga przykład Obliczyć całkę oznaczoną: 0,693 147 181
Szacowanie błędu całkowania numerycznego Ogólny wzór na przybliżoną całkę oznaczoną: Jeżeli obliczymy wartość całki dla dwóch kroków o długości h1 = h oraz h2 = h/2
Szacowanie błędu całkowania numerycznego błąd metody jest funkcją kroku: Zakładamy, że h jest bardzo małe Poszukujemy tylko wartości A Podstawiając h: -
Szacowanie błędu całkowania numerycznego
Szacowanie błędu całkowania numerycznego
Numeryczne obliczanie pochodnych
Pochodne funkcji w punkcie x2 x0 x1
Pochodne centralne -
Pochodne centralne O(h2)
Pochodne centralne O(h3)
Pochodne w przód/w tył O(h)
Pochodne w przód/w tył O(h2)
Pochodne w przód/w tył O(h3)
Zastosowanie numerycznego obliczania pochodnej w algorytmie znajdowania pierwiastków metodą Newtona
Algorytm metody Newtona Wprowadzić punkt startowy x1 oraz dokładność Obliczyć y1 Obliczyć y'1 Obliczyć Jeżeli |x2- x1 | todrukuj x2, koniec. x1= x2 Powrót do punktu 2 Koniec.
Algorytm obliczenia pochodnej 3.1 Przyjąć krok h = 0.001 3.2 Obliczyć y0 = f(x-h) 3.3 Obliczyć y2 = f(x+h) 3.4 Obliczyć y' = (y2- y0 )/(2h) 3.5. Sprawdzić, czy y' nie jest równe 0. Jeżeli tak drukuj informację "zły punkt startowy" i zakończ program.