1 / 20

Programowanie w VBA

Programowanie w VBA. Metody numeryczne część 1. Rozwiązywanie układów równań liniowych. Krztyna teorii. Układ równań liniowych niejednorodnych: x – niewiadoma a i b – współczynniki wyliczane lub uzyskiwane doświadczalnie. Krztyna teorii c.d.

kirk
Download Presentation

Programowanie w VBA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowaniew 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 – aii): wszystkie elementy wiersza i są dzielone przez element aii, aby był on równy 1. 2. Jeśli aii=0, szukamy najbliższego elementu akl≠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 aii 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: • Wpisz w komórkę A1 cyfrę "1"; • Wpisz w komórkę A2 formułę "=A1/3" • Zaznacz obie powyższe komórki, sformatuj ich zapis liczbowy tak, żeby miały 20 cyfr po przecinku. • 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 15-16 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 10-16 to numeryczne zero (rząd ostatniego bitu)!

  9. Metoda Cramera Wyznacznik macierzy A (DetA) zapisujemy tak: DetA≠0 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 Ai:

  10. Metoda Cramera c.d. Kolejne elementy wektora rozwiązań X są równe: xi = detAi/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 detAi=0 dla wszystkich i, to układ jest nieoznaczony; - Jeśli dla przynajmniej jednego i detAi≠0, to układ jest sprzeczny.

  11. Programowaniew 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. Y Y Nie ma miejsca zerowego między x i a, więc x to nowe a f(b) a:=x f(x) f(b) X X a b x=(a+b)/2 a b x=(a+b)/2 b:=x f(x) f(a) f(a) Nie ma miejsca zerowego między x i b, więc x to nowe b Metoda bisekcji 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.

  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: xi=(a+b)/2; 4. Liczymy f(xi) - jeśli wartość jest mniejsza niż założona dokładność docelowa rozwiązania εx, to xi jest numerycznym rozwiązaniem, jeśli f(xi) jest większa niż docelowa dokładność, to sprawdzamy f(a)*f(xi)<0 – jeśli prawda, to b:=xi, jeśli nie, to a:=xi; 5. Powtarzamy punkty 3 i 4, aż przedział a-b będzie węższy niż docelowa dokładność εx.

  15. START f(a)∙f(b)<0 KONIEC, błąd; NIE TAK xi=(a+b)/2 TAK |xi-xi-1|<εx NIE f(a)∙f(x)<0 NIE TAK b:=x a:=x NIE b-a<εx TAK KONIEC; x=xi Metoda bisekcji 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. Y Y Nie ma miejsca zerowego między x i a, więc x to nowe a f(b) a:=x f(x) f(b) X X x a x b a b f(x) f(a) b:=x f(a) Nie ma miejsca zerowego między x i b, więc x to nowe b 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.

  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: xi=b-f(b)*(b-a)/(f(b)-f(a); 4. Liczymy f(xi) - jeśli wartość jest mniejsza niż założona dokładność docelowa rozwiązania εx, to xi jest numerycznym rozwiązaniem, jeśli f(xi) jest większa niż docelowa dokładność, to sprawdzamy f(a)*f(xi)<0 – jeśli prawda, to b:=xi, jeśli nie, to a:=xi; 5. Powtarzamy punkty 3 i 4, aż przedział a-b będzie węższy niż docelowa dokładność εx.

  18. START f(a)∙f(b)<0 KONIEC, błąd; NIE TAK xi=b-f(b)∙(b-a)/(f(b)-f(a) TAK |xi-xi-1|<εx NIE f(a)∙f(x)<0 NIE TAK b:=x a:=x NIE b-a<εx TAK KONIEC; x=xi Metoda interpolacji liniowej 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. START x:=x0-f(x0)/f'(x0) Y |x-x0|<εx TAK KONIEC x=xi f'(x0) NIE x0:=x f(x0) f'(x1) f(x1) X x2 x1 x0 Metoda Newtona 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 (x0), w którym jest spełnione równanie f(x)*f'(x)>0; 2. Pochodna w punkcie startowym to: f'(x)=f(x0)/(x0-x1), więc: x1=x0-(f(x0)/f'(x0)) 3. Obliczona wartość x1 to punkt startowy dla następnej iteracji: x0=x1. 4. Powtarzamy punkty 3 i 4 aż |xi-xi-1|<εx

More Related