Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowanie w VBA Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.

Podobne prezentacje


Prezentacja na temat: "Programowanie w VBA Metody numeryczne część 1. Rozwiązywanie układów równań liniowych."— Zapis prezentacji:

1 Programowanie w VBA Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.

2 Krztyna teorii Układ równań liniowych niejednorodnych: x – niewiadoma a i b – współczynniki wyliczane lub uzyskiwane doświadczalnie

3 Krztyna teorii c.d. Analityczne rozwiązanie polega na sprowadzeniu układu równań do postaci: zwykle za pomocą mniej lub bardziej zorganizowanych działań na równaniach (mnożenie obu stron przez stałe, odejmowanie stronami, podstawianie jednych wyliczonych niewiadomych do innych równań itd.).

4 Krztyna teorii c.d. Macierz współczynników Macierz rozwiązań Macierz wyrazów wolnych Macierz rozszerzona układu równańRównanie macierzowe

5 Metoda Gaussa-Jordana Polega na przekształceniu macierzy rozszerzonej do macierzy jednostkowej (tzw. metoda eliminacji macierzy) poprzez działanie na wszystkich wierszach następująco: 1. Normowanie wiersza względem wyrazu głównego (położonego na przekątnej – a ii ): wszystkie elementy wiersza i są dzielone przez element a ii, aby był on równy Jeśli a ii =0, szukamy najbliższego elementu a kl 0 o k>i i l>i, i zamieniamy wiersze i i k ze sobą. Jeśli taki element nie zostanie znaleziony, dalsza eliminacja niemożliwa. 3. Odejmujemy wiersz i od pozostałych wierszy tyle razy, żeby w całej kolumnie i wszystkie wyrazy poza a ii były równe 0. Na koniec zostaje macierz jednostkowa, a wektor wyrazów wolny jest równy macierzy rozwiązań.

6 Zbieżność i cyfrowy zapis liczb Zadanie: 1.Wpisz w komórkę A1 cyfrę "1"; 2.Wpisz w komórkę A2 formułę "=A1/3" 3.Zaznacz obie powyższe komórki, sformatuj ich zapis liczbowy tak, żeby miały 20 cyfr po przecinku. 4.Zmodyfikuj formułę w komórce A2 na: "A1/11"

7 Zbieżność i cyfrowy zapis liczb Liczba rzeczywista jest zapisana w pamięci komputera w postaci binarnej z ograniczoną ilością bitów przeznaczoną na zapis cyfr znaczących (dla Double – 52 bitów, reszta przeznaczona jest na znak i potęgę "przesunięcia" zapisu, tak jak w zapisie naukowym liczb: 1,2E02 oznacza 120). W praktyce można więc zapisać zaledwie cyfr znaczących. Stąd każdy zapis jest obarczony błędem na "końcu" zapisu cyfr, który może rosnąć w miarę obliczeń. Dlatego przyjęcie pożądanej dokładności wyniku na mniej niż 10^-10 może spowodować, że algorytm numeryczny nigdy nie osiągnie tej dokładności – sam błąd wynikający z błędu zapisu może być podobnego rzędu. Dodatkowo można ograniczyć liczbę iteracji (np. 100 – dlaczego tyle?).

8 Metoda odwracania macierzy Pamiętając o tym, że iloczyn macierzy nie jest przemienny i że macierzowy iloczyn "A A -1 = I" (gdzie I to macierz jednostkowa), można wyliczyć wektor rozwiązań X za pomocą przekształcenia równania "A X = B" do równania "X = A -1 B". W arkuszu kalkulacyjnym mamy funkcje tablicowe bloków: - MACIERZ.ODW(macierz) - MACIERZ.ILOCZYN(macierz1;macierz2) Uwaga na błędy zaokrągleń zapisu binarnego liczb! Liczba to numeryczne zero (rząd ostatniego bitu)!

9 Metoda Cramera Wyznacznik macierzy A (DetA) zapisujemy tak: DetA0 dla układu równań liniowo niezależnych, co jest warunkiem koniecznym rozwiązania układu równań, z którego współczynników jest macierz A. Macierz A z kolumną i zastąpioną wektorem wyrazów wolnych układu równań oznaczamy jako macierz A i :

10 Metoda Cramera c.d. Kolejne elementy wektora rozwiązań X są równe: x i = detA i /detA. Metoda Cramera pozwala na identyfikacje problemów przy rozwiązywaniu układu równań. Dla DetA=0 układ jest nieoznaczony lub sprzeczny, a konkretnie: - Jeśli detA i =0 dla wszystkich i, to układ jest nieoznaczony; - Jeśli dla przynajmniej jednego i detA i 0, to układ jest sprzeczny.

11 Programowanie w VBA Metody numeryczne część 2. Rozwiązywanie równań nieliniowych.

12 Krztyna teorii Rozwiązanie równania to w formie graficznej znalezienie przecięcia wykresy funkcji z osią X. Dana jest ciągła w otoczeniu pierwiastka funkcja, gdzie rozwiązanie ma ogólną postać: f(x)=0 Nie dla każdego rodzaju funkcji wystarczają do rozwiązania metody analityczne (algebraiczne). W większości przypadków potrzebne są metody numeryczne do otrzymania przybliżonego wyniku.

13 Metoda bisekcji ab X Y f(b) f(x) f(a) x=(a+b)/2 Nie ma miejsca zerowego między x i b, więc x to nowe b b:=x Przypadek, gdzie f(x)*f(a)<0 czyli między x i a zmienił się znak, czyli jest miejsce zerowe. Przypadek, gdzie f(x)*f(a)>0, czyli między x i a nie zmienił się znak, czyli nie ma miejsca zerowego. x=(a+b)/2 ab X Y f(b) f(x) f(a) a:=x Nie ma miejsca zerowego między x i a, więc x to nowe a

14 Metoda bisekcji 1. Wyznaczamy przedział [a,b] z tylko jednym miejscem zerowym; 2. Obliczamy f(a) i f(b), gdzie f(a)*f(b)<0 (musi być tylko jeden pierwiastek); 3. Przybliżenie to środek przedziału: x i =(a+b)/2; 4. Liczymy f(x i ) - jeśli wartość jest mniejsza niż założona dokładność docelowa rozwiązania ε x, to x i jest numerycznym rozwiązaniem, jeśli f(x i ) jest większa niż docelowa dokładność, to sprawdzamy f(a)*f(x i )<0 – jeśli prawda, to b:=x i, jeśli nie, to a:=x i ; 5. Powtarzamy punkty 3 i 4, aż przedział a-b będzie węższy niż docelowa dokładność ε x.

15 Metoda bisekcji START f(a)f(b)<0 x i =(a+b)/2 |x i -x i-1 |<ε x NIE KONIEC, błąd; TAK f(a)f(x)<0 NIE TAK b:=xa:=x b-a<ε x NIE KONIEC; x=x i TAK NIE Metoda bisekcji (połowienia przedziału) jest zawsze zbieżna, o ile w początkowym przedziale funkcja ma dokładnie jedno miejsce zerowe i jest w tym obszarze ciągła. Każda iteracja (krok w pętli) zmniejsza dwukrotnie przedział [a,b] – dając pewność równomiernego zwiększenia dokładności w iteracji.

16 Metoda interpolacji liniowej Przypadek, gdzie f(x)*f(a)<0 czyli między x i a zmienił się znak, czyli jest miejsce zerowe. Przypadek, gdzie f(x)*f(a)>0, czyli między x i a nie zmienił się znak, czyli nie ma miejsca zerowego. ab X Y f(b) f(x) f(a) x Nie ma miejsca zerowego między x i b, więc x to nowe b b:=x x ab X Y f(b) f(x) f(a) a:=x Nie ma miejsca zerowego między x i a, więc x to nowe a

17 Metoda interpolacji liniowej 1. Wyznaczamy przedział [a,b] z tylko jednym miejscem zerowym; 2. Obliczamy f(a) i f(b), gdzie f(a)*f(b)<0 (musi być tylko jeden pierwiastek); 3. Przybliżenie to środek przedziału: x i =b-f(b)*(b-a)/(f(b)-f(a); 4. Liczymy f(x i ) - jeśli wartość jest mniejsza niż założona dokładność docelowa rozwiązania ε x, to x i jest numerycznym rozwiązaniem, jeśli f(x i ) jest większa niż docelowa dokładność, to sprawdzamy f(a)*f(x i )<0 – jeśli prawda, to b:=x i, jeśli nie, to a:=x i ; 5. Powtarzamy punkty 3 i 4, aż przedział a-b będzie węższy niż docelowa dokładność ε x.

18 Metoda interpolacji liniowej TAK START f(a)f(b)<0 x i =b-f(b)(b-a)/(f(b)-f(a) |x i -x i-1 |<ε x NIE KONIEC, błąd; TAK f(a)f(x)<0 NIE TAK b:=xa:=x b-a<ε x NIE KONIEC; x=x i TAK NIE Metoda interpolacji liniowej jest co do zasady identyczna z metodą bisekcji, poza przybliżeniem, które wynika z interpolacji liniowej. Metoda ta jest zazwyczaj szybciej zbieżna niż metoda bisekcji, aczkolwiek w nielicznych przypadkach może być wolniejsza – nie daje gwarancji równomiernego zwiększania dokładności.

19 Metoda Newtona f(x 0 ) x1x1 x0x0 X Y f(x 1 ) x2x2 f'(x 0 ) f'(x 1 ) TAK START x:=x 0 -f(x 0 )/f'(x 0 ) |x-x 0 |<ε x NIE x 0 :=x KONIEC x=x i Metoda Newtona jest potencjalnie najszybciej zbieżna z przedstawionych metod. Wymaga ona jednak znajomości pierwszej pochodnej danej funkcji, oraz ciągłych i nie zmieniających znaku pierwszej i drugiej pochodnej między miejscem zerowym a punktem startowym. Czyli funkcja musi być w całym zakresie działania monotoniczna i albo tylko wklęsła albo tylko wypukła. Dodatkowo w punkcie startowym musi być spełnione równanie f(x)f'(x)>0, aby przybliżanie w miarę iteracji było na osi X w kierunku miejsca zerowego, a nie w przeciwnym.

20 Metoda Newtona 1. Podajemy wartość początkową pierwiastka (x 0 ), w którym jest spełnione równanie f(x)*f'(x)>0; 2. Pochodna w punkcie startowym to: f'(x)=f(x 0 )/(x 0 -x 1 ), więc: x 1 =x 0 -(f(x 0 )/f'(x 0 )) 3. Obliczona wartość x 1 to punkt startowy dla następnej iteracji: x 0 =x Powtarzamy punkty 3 i 4 aż |x i -x i-1 |<ε x


Pobierz ppt "Programowanie w VBA Metody numeryczne część 1. Rozwiązywanie układów równań liniowych."

Podobne prezentacje


Reklamy Google