równanie kwadratowe

Komentarze

Transkrypt

równanie kwadratowe
• W wielu obliczeniach w matematyce bądź fizyce wykonanie niektórych
kroków zależy od spełnienia warunku.
– Nie wolno dzielić przez zero i należy sprawdzić, czy dzielna nie jest równa zeru.
– W dziedzinie liczb rzeczywistych nie jest możliwe wyznaczenie pierwiastka z
liczby ujemnej.
• Zabezpieczenia polegające na sprawdzaniu warunków mają szczególnie
istotne znaczenie w obliczeniach komputerowych.
– Komputery „nie widzą” i nie odróżniają dobrych od złych danych. W
algorytmach, których jedną z cech ma być niezawodność musimy umieć
zabezpieczać się przed niedozwolonymi działaniami.
• Przykładem algorytmu obliczeń, które zależą od spełnienia pewnych
warunków jest rozwiązanie równania kwadratowego.
– Skorzystamy z najczęściej stosowanych wzorów na pierwiastki tego równania
(nazywana jest ona czasami „algorytmem delty”).
– Wykorzystamy również wzory Viete’a. Dla tego przypadku utworzymy algorytm,
który jest poprawny dla obliczeń komputerowych.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
1
• Równanie kwadratowe zapisuje się najczęściej w postaci:
ax2 + bx + c = 0
• Danymi są trzy liczby: a, b i c - współczynniki trójmianu.
– Zakładamy, że a jest różne od zera. W przeciwnym wypadku mamy do czynienia
z równaniem pierwszego stopnia.
• Pierwiastki równania kwadratowego wyznacza się w „algorytmie delty” z
następujących wzorów:
x2 = (-b- √∆)/2a
x1 = (-b-√∆)/2a
gdzie ∆=b2-4ac
• Potrafimy obliczyć z tych wzorów pierwiastki równania wtedy, gdy można
wykonać wszystkie działania występujące w tych wzorach. Dwa z nich są
obwarowane warunkami:
• dzielić można tylko przez liczbę różną od zera,
– rzeczywisty pierwiastek kwadratowy istnieje jedynie wtedy, gdy liczba
podpierwiastkowa jest nieujemna.
• Jeśli ∆ <0 to równanie nie ma pierwiastków.
• Jeśli ∆ =0 to oba pierwiastki są sobie równe.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
2
Algorytm rozwiązywania równania kwadratowego
• Dane:
Współczynniki a, b, c
• Wyniki:
Pierwiastki równania, jeśli dane współczynniki rzeczywiście
określają równanie kwadratowe i równanie to ma pierwiastki.
• Krok 1.
Jeśli a=0 wypisz komunikat, że nie jest to równanie
kwadratowe i zakończ pracę.
• Krok 2.
Oblicz wartość wyróżnika ∆=b2-4ac
• Krok 3.
Jeśli ∆ <0 to wypisz komunikat, że równanie kwadratowe nie
ma pierwiastków i zakończ działalność.
• Krok 4.
Jeśli ∆ =0 to oblicz oba pierwiastki z tego samego wzoru
x1=x2=-b/2a, wypisz ich wartość i zakończ algorytm.
• Krok 5.
{w tym przypadku ∆ >0 }. Oblicz pierwiastki x1 i x2, wypisz
ich wartości i zakończ działanie programu.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
3
• Rozwiążmy równanie kwadratowe o następujących współczynnikach
podanych z czterema cyframi znaczącymi:
– a=1
– b=-6.4333
– c=0.009474
• Ponieważ współczynniki dane są z czterema cyframi znaczącymi będziemy
prowadzić obliczenia w ten sposób, że każdy wynik pośredni będzie
zaokrąglany do czterech cyfr.
• Zaokrąglenie do czterech cyfr oznacza obcięcie cyfr począwszy od piątej i
dodanie do czwartej 1 gdy pierwsza odrzucona cyfra jest większa lub równa
5.
• Wyniki obliczeń są następujące:
– ∆ =41.31
– x1=0.0015
– x2=6.43
• Dokładna wartość pierwszego pierwiastka wynosi 0.001473. Otrzymany
wynik ma tylko jedną taką samą cyfrę. Popełniliśmy błąd 1.83%.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
4
• Obliczenia komputerowe nie zawsze gwarantują otrzymanie dokładnych
wyników. Znalezienie dokładnego rozwiązania może stanowić dla programu
poważny problem.
• Niektóre obliczenia komputerowe wykonywane według matematycznych
wzorów wymagają analizy, zanim je „oprogramujemy”.
• Skąd wzięła się niedokładność w naszych obliczeniach?
– Wartość iloczynu 4ac = 0.03790 jest mała w stosunku do wielkości b2 = 41.38
– Oznacza to, że wartość wyróżnika ∆ = 41.34 jest w przybliżeniu równa b2, a więc
wartość pierwiastka kwadratowego z delty 6.430 jest bliska bezwzględnej
wartości b równej 6,433.
– Jeśli współczynnik b jest ujemny to przy obliczaniu wartości pierwiastka x1
odejmowane są od siebie dwie bliskie sobie liczby.
– (Jeśli współczynnik b jest ujemny to przy obliczaniu wartości pierwiastka x1
odejmowane są od siebie dwie bliskie sobie liczby.)
• Algorytm, który wykazuje opisaną wyżej własność dla niektórych danych
nazywa się algorytmem niestabilnym.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
5
• Opisana powyżej niedogodność pomagają usunąć wzory Viete’a:
x1x2 = c/a
x1 + x2 = -b/a
• Zmodyfikowane postępowanie będzie polegało na:
– obliczeniu wartości jednego z pierwiastków za pomocą „algorytmu delty”,
– wyznaczeniu drugiego z pierwiastków ze wzorów Viete’a na iloczyn
pierwiastków.
• W „algorytmie delty” wybieramy obliczanie tego z pierwiastków, w którym
występuje w liczniku dodawanie dwóch liczb o tych samych znakach.
• Wybór ten zależy od współczynnika b:
– jeśli b<0 to wybieramy x2,
– w przeciwnym przypadku wybieramy x1.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
6
procedure RownanieKwadratowe (a, b: Real;
var Del: Boolean; var x1, x2: Real);
var
Delta, p, q : Real;
begin
p:=b/a;
q:=c/a;
Delta:=p*p-4*q;
Del:=(Delta>=0);
if Del then
begin
Delta:=Sqrt(Delta);
if p<0 then
begin
x2:=(-p-Delta)/2;
x1:=q/x2
end {p<0}
else
begin
x1:=(-p-Delta)/2;
x2:=q/x1
end {p>=0}
end {Del}
end; {RownanieKwadratowe}
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
7
Rozwiązywanie równania liniowego
• Jednym z najprostszych zadań geometrycznych jest wyznaczanie punktów, w
których prosta przecina osie układu współrzędnych. Ogólne równanie takiej
prostej zwane równaniem liniowym ma postać:
• ax + by = c
• Jeśli wszystkie współczynniki są różne od zera, to punktami przecięcia są:
– przecięcie z Ox: y=0 - ax=c skąd mamy (c/a, 0),
– przecięcie z Oy: x=0 - (0, c/b).
• Jeżeli dokładnie jeden ze współczynników jest równy zeru:
– Jeżeli a=0 to y=c/b dla wszystkich wartości y (prosta przechodzi przez punkt
(0,c/b) i jest równoległa do Ox.
– Jeżeli b=0 to prosta jest równoległa do osi rzędnych i przechodzi przez punkt
(c/a,0) na osi Ox.
– Jeżeli c=0 to równanie przyjmuje postać ax=-by i prosta przecina osie
współrzędnych w początku układu, czyli w punkcie (0,0).
• Pozostałe przypadki pomijamy…
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
8
•
•
•
•
•
•
Rozwiązywanie układu dwóch równań liniowych
Rozważmy rozwiązanie układu dwóch równań liniowych:
ax + by =c
dx + ey = f
Rozwiązanie jest poszukiwaniem takiego punktu (x,y), dla którego każde z
równań jest spełnione. Jest to punkt przecięcia prostych.
Układ nie będzie miał rozwiązań, gdy proste będą do siebie równoległe.
Rozwiązanie układu uzyskane metodą podstawienia ma postać:
x=(ce-bf)/w
y=(af-cd)/w
gdzie w=ae-db (jest to wyznacznik układu równań).
Wzory na rozwiązanie układu dwóch równań są szczególnymi przypadkami:
– metody znajdywania rozwiązań układów liniowych o dowolnej liczbie
niewiadomych zwanej metodą eliminacji Gaussa,
– wzorów Cramera wyrażających rozwiązanie układu równań liniowych poprzez
wartości odpowiednich wyznaczników układu.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
9
• Przykład liczbowy:
– a=3.000, b=4.127, c=15.41, d=1.000, e=1.374, f=5.147.
• Rozwiązaniem tego układu są:
– x=13.66, y=-6.2
• Wartość wyznacznika układu wynosi w=-0.005. Jest to wielkość bardzo mała
w porównaniu do wartości współczynników układu.
• Przy rozwiązywaniu układu równań dochodzi do utraty dokładności obliczeń
na skutek dzielenia dużej liczby przez liczbę stosunkowo małą.
• Dla rozwiązywania układów równań liniowych nie można podać algorytmu
odpornego na błędy zaokrągleń. Jest to bowiem problem źle
uwarunkowany, niestabilny.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
10
• W algorytmach należy zabezpieczać się przed wykonywaniem zabronionych
działań przez sprawdzanie odpowiednich warunków.
• Źródłem niedokładności w obliczeniach komputerowych jest najczęściej
wykonywanie obliczeń na liczbach. Których różnica wartości bezwzględnych
jest bardzo duża bądź bardzo mała.
• Przykładami obliczeń, w których to zjawisko występuje są takie elementarne
zadania, jak rozwiązanie równania kwadratowego lub układu dwóch równań
liniowych.
• W przypadku algorytmu rozpadającego się na wiele ścieżek musimy
zachować dużą precyzję, by nie pominąć żadnego przypadku.
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
11
Luty 2001
Algorytmy (2) 2000/2001
[email protected]
12