Visual Basic for Applications
spotkanie 8
Dr inż. Piotr Winiarek
piotrw@ch.pw.edu.pl
GG 30396
Najczęściej spotykane
problemy matematyczne
Metody numeryczne i ich
zastosowanie do:
• Rozwiązywania równań nieliniowych
• Rozwiązywania układów równań
• Całkowania numerycznego
Narzędzia w Excelu:
• Szukaj wyniku
• Solver
• Analiza danych
• Funkcje macierzowe
Rozwiązywanie
równań
nieliniowych
Wyznaczanie pierwiastków równań
nieliniowych
Ogólna postać
równania:
0
x
f
f(x) – funkcja
ciągła w
otoczeniu
szukanego
pierwiastka.
Metody algebraiczne
– służą do
wyznaczania pierwiastków niewielkiej
grupy równań.
Przybliżone wartości większości
pierwiastków wyznacza się
metodami
numerycznymi
.
Metoda bisekcji (połowienia
przedziału)
Metoda opierająca się na
twierdzeniu
Bolzano-Cauchy’ego
:
Jeżeli funkcja ciągła f(x) ma na końcach
przedziału domkniętego wartości różnych
znaków, to wewnątrz tego przedziału,
istnieje co najmniej jeden pierwiastek
równania f(x)=0.
Rys.1 Metoda bisekcji
f(a) ∙ f(x) < 0
f(a) ∙ f(x) > 0
Sposób postępowania
• oblicza się wartości funkcji na krańcach
przedziału: f(a) i f(b). Warunek konieczny:
f(a)∙f(b)<0
,
• jako pierwsze przybliżenie przyjmuje się
środek przedziału
:
i oblicza wartość funkcji f(x
i
). Jeżeli
f(x
i
)≈0
,
tzn. |f(x
i
)|<
y
,
wtedy pierwiastek x = x
i
.
1
2
i
b
a
x
i
Sposób postępowania c.d.
• jeżeli
warunek |f(x
i
)|<
y
, nie został
spełniony
, sprawdza się nierówność:
Jeżeli jest ona
prawdziwa
–
pierwiastek x
znajduje się
w przedziale [a, x
i
]
, w
przeciwnym wypadku – w przedziale [x
i
, b]
0
i
x
f
a
f
Sposób postępowania c.d.
• w przypadku, gdy pierwiastek nie został
znaleziony,
zawęża się
odpowiednio
przedział [a, b]
i powtarza obliczenia, aż
szerokość przedziału stanie się mniejsza od
założonego błędu:
x
a
b
Zastosowania
funkcja f(x) jest w przedziale [a, b]
ciągła
,
ma w tym przedziale tylko
jeden pierwiastek
Metodę bisekcji
można stosować gdy:
BŁĘDY ZAOKRĄGLEŃ
dokładność
zapamiętania
liczby
(VBA: 15-16 cyfr rozwinięcia
dziesiętnego)
wynik
zapamiętany
z błędem
kumulacj
a błędu
…
n
(złożone obliczenia wartości
funkcji)
Zad.1 Wyznaczyć pierwiastek równania
x
3
-
x+1=0
w przedziale
[-2, 2]
.
-30
-20
-10
0
10
20
30
-4
-3
-2
-1
0
1
2
3
4
x
f(
x)
Zad.1 c.d.
• wartości funkcji na końcach przedziału:
f(-2) = -5, f(2) = 7
,
• dzielimy przedział na pół:
x
1
= (-2+2)/2
i obliczamy
f(x
1
) = 1,
f(x
1
) ≠ 0
=> algorytm jest kontynuowany,
• dwa nowe przedziały:
[-2, 0]
i
[0, 2]
,
• wybieramy ten przedział, na którego końcach znaki funkcji są
różne:
f(-2)∙f(0)=-5∙1=-5 < 0
=> różne znaki funkcji
f(0)∙f(2)=1∙7=7 > 0
=> te same znaki funkcji
pierwiastek leży w przedziale
[-2, 0]
,
• ponownie dzielimy przedział na połowy:
x
2
= (-2+0)/2=-1
i
obliczamy wartość funkcji dla x
2
:
f(x
2
) = 1, f(x
1
) ≠ 0
=>
algorytm jest kontynuowany,
• dzielimy przedział
[-2, 0]
na dwa podprzedziały, wybieramy
jeden z nich itd. …
Rys.2 Interpolacja liniowa
f(a) ∙ f(x) < 0
f(a) ∙ f(x) > 0
Interpolacja liniowa
,...
2
,
1
i
a
f
b
f
a
b
b
f
b
x
i
Algorytm jest praktycznie taki sam jak
opisany wcześniej.
Przybliżenie pierwiastka
(pierwsze i
kolejne) – wartość uzyskana
metodą
interpolacji liniowej
.
Metoda Newtona (metoda
stycznych)
Równanie stycznej w
punkcie (x
0
, y
0
):
f(x)-f(x
0
)=f’(x
0
)∙(x-x
0
)
W metodzie Newtona korzystamy
dodatkowo z
pochodnej funkcji f’(x)
.
Metoda Newtona jest
szybciej
zbieżna
od metody interpolacji
liniowej i metody bisekcji.
Rys.3 Metoda Newtona
Sposób postępowania
• należy podać
wartość początkową
pierwiastka (x
0
),
• zależność
między wartością funkcji i jej pochodnej
w punkcie startowym:
stąd
pierwsze przybliżenie pierwiastka
:
1
0
0
0
'
x
x
x
f
x
f
0
0
0
1
' x
f
x
f
x
x
Sposób postępowania c.d.
• x
1
-pierwsze przybliżenie pierwiastka-jest punktem
startowym
następnej iteracji,
• algorytm polega na
cyklicznym powtarzaniu
kolejnego przybliżenia pierwiastka
według
uogólnionego wzoru:
n
n
n
n
x
f
x
f
x
x
'
1
Sposób postępowania c.d.
• koniec iteracji
– gdy wartość bezwzględna różnicy
między dwoma kolejnymi przybliżeniami stanie się
mniejsza od założonej wartości błędu:
x
n
n
x
x
1
Ograniczenia:
• pierwsza i druga pochodna (
f’(x) i f’’(x)
) nie mogą
zmieniać znaków w dostatecznie dużym otoczeniu
pierwiastka,
• w punkcie startowym
musi być spełniona
nierówność:
0
'
0
0
x
f
x
f
Reguła falsi
Idea reguły falsi
Punkt przecięcia siecznej z osią
odciętych jest n+1 przybliżeniem
pierwiastka.
1
1
1
1
n
n
n
n
n
n
x
x
x
f
x
x
x
f
1
1
1
n
n
n
n
n
n
n
x
f
x
f
x
x
x
f
x
x
Podsumowanie
• nie istnieje uniwersalna metoda
wyznaczania
pierwiastków równań nieliniowych,
• każda metoda umożliwia oszacowanie
wartości pierwiastka z założonym błędem,
• kluczowe są
: dobór przedziału lub punktu
startowego, kroku x oraz błędów
x
i
y
.
Układy równań
liniowych
niejednorodnych
Układ n równań liniowych
x
1
, …, x
n
– zbiór (wektor) niewiadomych,
a
ij
– współczynniki układu,
b
i
– wyrazy wolne
n
n
nn
j
nj
n
n
i
n
in
j
ij
i
i
n
n
j
j
n
n
j
j
b
x
a
x
a
x
a
x
a
b
x
a
x
a
x
a
x
a
b
x
a
x
a
x
a
x
a
b
x
a
x
a
x
a
x
a
...
...
...
...
...
...
2
2
1
1
2
2
1
1
2
2
2
2
22
1
21
1
1
1
2
12
1
11
(1)
Układ równań liniowych
jednorodnych
i
niejednorodnych
0
...
0
...
0
...
2
2
1
1
2
2
22
1
21
1
2
12
1
11
n
nn
n
n
n
n
n
n
x
a
x
a
x
a
x
a
x
a
x
a
x
a
x
a
x
a
Wszystkie
wyrazy wolne
tego układu są
równe zero
.
(1)
Układ równań liniowych jednorodnych:
(2)
Układ równań liniowych niejednorodnych:
n
n
nn
n
n
n
n
n
n
b
x
a
x
a
x
a
b
x
a
x
a
x
a
b
x
a
x
a
x
a
...
...
...
2
2
1
1
2
2
2
22
1
21
1
1
2
12
1
11
Wyrazy wolne
tego układu
nie
są równe zero
.
Układ równań liniowych niejednorodnych
mn
mj
m
m
in
ij
i
i
n
j
a
a
a
a
a
a
a
a
a
a
a
a
...
...
...
...
...
...
...
..
...
...
...
...
...
...
...
...
...
...
2
1
2
1
1
1
12
11
Tablica A -
macierz
współczynników
układów równań
macierz
kwadratowa m=n
m
j
x
x
x
...
...
1
m
j
b
b
b
...
...
1
Wektor X –
wektor
rozwiązań
Wektor B –
wektor
wyrazów
wolnych
A =
X =
B =
Macierz rozszerzona (uzupełniona)
układu równań
1
11
11
11
11
1
11
11
11
11
1
11
11
11
11
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
b
a
a
a
a
b
a
a
a
a
b
a
a
a
a
Macierz rozszerzona układu równań –
macierz A’
–
otrzymana przez dołączenie macierzy B do macierzy
A
A’ =
= [A|B]
Wyznaczniki
nn
ni
n
in
ii
i
n
i
a
a
a
a
a
a
a
a
a
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
1
1
1
1
11
detA =
wyznacznik
macierzy A
detA≠0
–
warunek istnienia
wektora rozwiązań
układu równań (1),
jeżeli
detA=0
– układ równań (1) jest nieoznaczony
lub sprzeczny
Wyznaczniki c.d.
nn
n
n
in
i
i
n
a
b
a
a
b
a
a
b
a
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
1
1
1
1
11
detA
i
=
Wyznacznik detA
i
– otrzymany przez zastąpienie i-tej
kolumny wyznacznika detA wektorem wyrazów
wolnych
Macierz odwrotna
I
AA
1
A
-1
– macierz odwrotna,
I
– macierz diagonalna
jednostkowa
macierz diagonalna
jednostkowa
1
0
0
0
1
0
0
0
1
Macierz odwrotna
do macierzy kwadratowej A
istnieje wtedy i tylko wtedy gdy
detA≠0
. Macierz, dla
której nie istnieje macierz odwrotna –
macierz
osobliwa
Algorytmy
• algorytmy dokładne
– polegają na wykonaniu
skończonej liczby opisanych działań (zależnej od
liczby równań) w wyniku czego otrzymuje się
rozwiązanie układu równań,
• algorytmy iteracyjne
– polegają na wyznaczeniu
kolejnych wektorów rozwiązań przybliżonych i
zakończeniu programu jeśli elementy dwóch
kolejnych przybliżeń będą się różnić mniej niż
założony błąd
Metody
1)
wzory Cramera
2)
macierz odwrotna, równanie
macierzowe,
3)
algorytm Gaussa - Jordana
Metoda 1
- wzory Cramera
Kolejne
elementy wektora X
są równe:
n
i
A
A
x
i
i
,...,
2
,
1
det
det
A
A
x
A
A
x
A
A
x
n
n
det
det
,
,
det
det
,
det
det
2
2
1
1
X = (x
1
, x
2
, …, x
n
)
Metoda 2
- równanie macierzowe
mn
mj
m
m
in
ij
i
i
n
j
a
a
a
a
a
a
a
a
a
a
a
a
...
...
...
...
...
...
...
..
...
...
...
...
...
...
...
...
...
...
2
1
2
1
1
1
12
11
m
j
x
x
x
...
...
1
Układ równań (1) można zapisać
w postaci
równania
macierzowego
:
B
AX
B
A
X
1
m
j
b
b
b
...
...
1
=
·
Metoda 3
– algorytm Gaussa -
Jordana
• elementy i-tego wiersza są dzielone przez element
a
ii
–
normowanie wiersza głównego
,
• jeżeli
a
ii
=0
, wtedy należy
szukać
„w dół i w prawo”
niezerowego elementu macierzy
. Jeżeli taki element
istnieje (np. w pozycji a
kl
) to należy
zamienić
miejscami wiersz i z wierszem k
oraz ewentualnie
kolumnę i z kolumną l. W wyniku tych operacji w
pozycji a
ii
znajdzie się element niezerowy, można
dalej kontynuować eliminację,
Algorytm Gaussa - Jordana
• po unormowaniu wiersza głównego
eliminuje się
kolumnę główną
przez odejmowanie od kolejnych
wierszy k<>i wiersza głównego odpowiednio
przeskalowanego,
• postępowanie to jest powtarzane do wyeliminowania
wszystkich wierszy lub wszystkich kolumn,
• jeżeli
element niezerowy nie zostanie znaleziony
, to
dalsza eliminacja jest niemożliwa i macierz
pozostanie częściowo niewyeliminowana,
• analiza stanu macierzy po zakończeniu procedury –
umożliwia
wyznaczenie wektora rozwiązań
dziękuję z uwagę