Przeczytaj
Rozwiązywanie równania kwadratowego – implementacja w języku Python
Zapoznajmy się z programem obliczającym rozwiązanie równania kwadratowego.
Wynik działania programu:
Jest to algorytm niestabilny.
W niektórych przypadkach skuteczność i dokładność takiego sposobu obliczania można zakwestionować. Jeżeli wartość iloczynu 4ac
jest mała w stosunku do wielkości b ** 2
, to delta
dąży do kwadratu z wartości b
, a więc wyrażenie:
dąży do zera (w zależności od wartości b
).
Aby zapobiec błędom niedokładności obliczeń, stosuje się tak zwany algorytm stabilny, który opiera się na wzorach Viète'a.
Przygotujmy kod, który pozwoli zobaczyć różnicę rozwiązań dla algorytmu stabilnego i niestabilnego. Użyjemy konwencji f‑stringf‑string, aby podać wynik z dokładnością do 25 miejsc po przecinku, wówczas zobaczymy różnicę w wynikach obliczeń. Różnica między wynikami algorytmów pojawia się dopiero na 17. miejscu po przecinku.
Niektóre algorytmy zachowują się niestabilnie przy pewnych zestawach danych wejściowych.
Komputery nie są w stanie dokładnie przechowywać pewnych liczb w swojej pamięci, ponieważ w komputerze liczby wymierne przechowywane są w postaci binarnej, zgodnie z formatem IEEE 754IEEE 754.
Słownik
sposób zapisu zmiennych w łańcuchu znaków przeznaczonym do wypisania funkcją print()
– dokładnie opisany w dokumencie PEP 498 – Literal String Interpolation; zakłada format: f"Napis, a w nim {zmienna} do wypisania"
standard zapisu zmiennoprzecinkowego, opracowany przez Williama Kahenema, definiuje 32‑bitowe oraz 64‑bitowe liczby zmiennoprzecinkowe
wzory wiążące współczynniki wielomianów i ich pierwiastki; w 1591 r. Francois Viète jako pierwszy wprowadził oznaczenia literowe dla zmiennych – w trakcie wojny francusko‑hiszpańskiej złamał szyfr używany przez Hiszpanów