Przeczytaj
Rozwiązywanie układu dwóch równań liniowych w języku Python
Wykorzystajmy znane już wzory do napisania w języku Python funkcji rozwiązującej układ dwóch równań z dwiema niewiadomymi metodą wyznaczników. Układ równań, który będziemy rozwiązywać, wygląda następująco:
Specyfikacja:
Dane:
a1
– współczynnik liczbowy pierwszego równania; liczba rzeczywistab1
– współczynnik liczbowy pierwszego równania; liczba rzeczywistac1
– współczynnik liczbowy pierwszego równania; liczba rzeczywistaa2
– współczynnik liczbowy drugiego równania; liczba rzeczywistab2
– współczynnik liczbowy drugiego równania; liczba rzeczywistac2
– współczynnik liczbowy drugiego równania; liczba rzeczywista
Wynik:
Program, na standardowym wyjściu, drukuje informacje na temat uzyskanego rozwiązania układu równań (w postaci komunikatu przedstawiającego kolejno: wartość niewiadomej x
i wartość niewiadomej y
) lub komunikat Układ jest sprzeczny
w przypadku sprzeczności układu bądź Układ ma nieskończenie wiele rozwiązań
w przypadku nieskończonej liczby rozwiązań.
Gotowa funkcja:
Oto dwa przykłady wykorzystania funkcji wraz z otrzymanymi rezultatami.
Pierwszy przypadek:
Wywołanie funkcji:
Zwrócony rezultat:
Drugi przypadek:
Wywołanie funkcji:
Zwrócony rezultat:
W przypadku układu sprzecznego dwie proste na wykresie są równoległe (nie mają punktu wspólnego), a zatem nie da się podać rozwiązania:
W przypadku układu z nieskończoną liczbą rozwiązań, zwanym również układem tożsamościowym, rozwiązaniem są dwie linie ciągłe pokrywające się (wszystkie ich punkty są wspólne), zatem rozwiązań jest nieskończenie wiele. Oto przykład takiego układu równań:
W celu zobrazowania wyników obliczeń, posłużymy się biblioteką matplotlibmatplotlib i napiszemy program, który będzie generował wykres dwóch funkcji liniowych, składających się na rozwiązywany układ:
Specyfikacja:
Dane:
a1
– współczynnik liczbowy pierwszego równania; liczba rzeczywistab1
– współczynnik liczbowy pierwszego równania; liczba rzeczywistac1
– współczynnik liczbowy pierwszego równania; liczba rzeczywistaa2
– współczynnik liczbowy drugiego równania; liczba rzeczywistab2
– współczynnik liczbowy drugiego równania; liczba rzeczywistac2
– współczynnik liczbowy drugiego równania; liczba rzeczywista
Wynik
Program generuje wykres dwóch funkcji liniowych oraz zaznacza na nim uzyskane rozwiązanie układu równań. Jeżeli rozważany układ jest sprzeczny lub nieoznaczony, pomijany jest etap nanoszenia rozwiązania na wykres.
Zapiszemy najpierw równania w postaci funkcji. Posłużymy się przykładowymi równaniami, dla których przetestujemy działanie programu:
Przygotujmy kod w języku Python, który obliczy punkty niezbędne do narysowania wykresu i wyznaczy punkt przecięcia dwóch prostych.
Wynikiem działania programu jest następujący wykres:
Zwróćmy uwagę, że czerwony punkt przecięcia rysowany jest tylko wtedy, gdy funkcja ukl_wyzn(...)
zwróci wartość (wyznacznik główny jest różny od zera), czyli gdy istnieje dokładnie jedno rozwiązanie układu.
Programiści mają do dyspozycji ciekawą bibliotekę, wykorzystywaną do rozwiązywania problemów algebraicznych. Jest nią SymPySymPy (została ona w całości napisana w języku Python).
Słownik
biblioteka służąca do przedstawienia obrazów składających się z punktów o współrzędnych x
oraz y
(np. wykresów, histogramów, rozkładów itp.); moduł matplotlib
nie jest dostępny w standardowej instalacji języka Python – należy go zainstalować, korzystając z mechanizmu pip
biblioteka Pythona o otwartym kodzie źródłowym; oferuje narzędzia do
rozwiązywania szerokiej gamy problemów analitycznych i symbolicznych – https://www.sympy.org/en/index.html
co najmniej dwa równania połączone operatorem logicznym AND (koniunkcja co najmniej dwóch równań)