równanie kwadratowe
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