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