Strona główna » Poradniki » Maxima » Rozwiązywanie Układu Równań

Rozwiązywanie Układu Równań

Wstęp

W programie Maxima istnieje możliwość rozwiązywania skomplikowanego układu równań. Istnieje szereg funkcji, które pozwalają na dowolne przekształcenia czy podkładanie dowolnych wartości. Tego typu narzędznie może okazać się bardzo pomocne w codziennej nauce podczas sprawdzania swoich rozwiązań.

Rozwiązywanie równań

Jedna niewiadoma

Na początek weźmy przykład, który każdy powinien umieć rozwiązać w głowie x + 3 = 5. Jak wiadomo jest to równanie z jedną niewiadomą x. W celu rozwiązania tego układu można użyć funkcji solve(), która w podstawowej wersji akceptuje jako argument jedynie równanie. Przykładowo:

(%i3)r1: x + 3 = 5;
solve(r1);
(r1)x+3=5
(%o2)[x=2]

Program jako wynik funkcji solve() zwrócił ja wynik listę razem z jedynym rozwiązaniem x = 2. W przypadku, gdyby istniało więcej rozwiązań wszystkie zostałyby tutaj wypisane jako kolejne elementy listy.

Dwa równania

Jednak o wiele częściej spotyka się układ złożony z kilku równań. Wtedy z równań należy utworzyć listę, a następnie podać jako pierwszy argument. Funkcja solve() może przyjąć również drugi argument, którym jest lista na której zostały wypisane kolejne zmienne, które występują w równaniach. Przykładowo:

(%i5)r1: x + 3 = 5;
r2: x - 3 = 1;
solve([r1, r2], [x]);
(r1)x+3=5
(r2)x-3=1
(%o5)[]

Tym razem zwrócona lista jest pusta - oznacza to brak rozwiązań podanego układu równań. Jest to oczywiście prawda, bo podany układ jest sprzeczny.

Dwie niewiadome

Spróbujmy teraz wprowadzić drugą zmienną y. Do rozwiązania program będzie miał dwa równania: x + y = 5 oraz x - y = 1. Należy pamiętać, aby w tym przypadku listę zmiennych powiększyć o dodatkowy element y. Dzięki temu program będzie poszukiwał rozwiązań dla x i y tj. par spełniających równanie.

(%i8)r1: x + y = 5;
r2: x - y = 1;
solve([r1, r2], [x, y]);
(r1)x+y=5
(r2)x-y=1
(%o8)[[x=3, y=2]]

Jak widać istnieje dokładnie jedno rozwiązanie spełniające układ jest to para (x, y) = (3, 2). Tym razem wynik jest dalej listą, ale jego rozwiązanie też jest listą, której elementy są wartościami kolejnych, szukanych wartości zmiennych.

Tylko jedna niewiadomo występuje

Przypuśćmy, że formalnie w układzie do rozwiązania występują dwie zmienne x i y, ale jedna ze zmiennych się skraca i układ ostatecznie ma postać: 0·x + y = 5. Jest to układ, który ma nieskończenie wiele rozwiązań!

(%i10)r1: y = 5;
solve([r1], [x, y]);
(r1)y=5
(%o10)[[x=%r1, y=5]]

Lista rozwiązań ma dalej długość jeden, ale zmienna x nie ma przypisanej konkretnej wartości liczbowej. Oznacza to, że w jej miejsce można podstawić dowolną liczbą. Rozwiązaniem tego układu jest więc prosta y = 5 (zakładamy, że na początku było podanych więcej niż jedno równanie, więc nie można było tego oszacować).

Liczby zespolone

Warto zwrócić uwagę na to, że znalezione pierwiastki równania nie muszą być wartościami rzeczywistymi lub dowolnymi:

(%i12)r1: x^2 + 1 = 0;
solve([r1], [x]);
(r1)x2 + 1 = 0
(%o12)[x=-%i, x=%i]

W tym przypadku rozwiązaniem równania x2 + 1 = 0 są wartości zespolone x = i lub x = -i. Oczywiście wartość zespolona może też występować w równaniu.

Podsumowanie

Funkcja solve() jest bardzo przydatną i pożyteczną funkcją, która pozwala na rozwiązanie niemalże dowolnego układu równań. W zależności od tego co szukamy można ją odpowiednio dostosować.

Zadania

Zadanie 1

Rozwiąż przy pomocy funkcji solve() równanie:

  1. y2 - 8y + 15 = 0

Zadanie 2

Rozwiąż przy pomocy funkcji solve() poniższy układ:

  1. 2x + 3y = 8
  2. x  + 2z = 2
  3. y  + 4z = 4