Celem zadania jest numeryczne rozwiązanie układu dwóch równań z dwiema niewiadomymi. Poniżej, jako przykład, będziemy rozwiązywać następujący układ:

x+ 6 y - 2 == 0
Z5Z1_1.gif

Dla wygody zapisujemy rozwiązywany układ w postaci jednej funkcji przyjmujacej jeden argument. Funkcja przyjmuje jako wartość dwuelementowy wektor (listę), i zwraca dwuelementowy wektor. Dzięki temu napisany program nie będzie różnił się zbytnio od programu rozwiązującego równania z jedną niewiadomą.

Z5Z1_2.gif

Z5Z1_3.gif

Z5Z1_4.gif

Z5Z1_5.gif

Z5Z1_6.gif

Dla wyrobienia poglądu na temat badanego układu rysujemy wykresy zadanych funkcji ( y(x) w postaci uwikłanej f(x,y)=0 ):

Z5Z1_7.gif

Z5Z1_8.gif

Z5Z1_9.gif

Z5Z1_10.gif

Po nałożeniu wykresy mogą (lub nie) przecinać się. Punkty przecięcia są rozwiązaniami graficznymi układu równań:

Z5Z1_11.gif

Z5Z1_12.gif

Z5Z1_13.gif

Z5Z1_14.gif

Aby rozwiązać układ numerycznie, musimy wybrać wartośc startową w pobliżu rozwiązania.

Z5Z1_15.gif

Z5Z1_16.gif

Obliczenie kolejnego przybliżenia wymaga znajomości jakobianu, czyli macierzy 2x2 zawierającej pierwsze pochodne funkcji:

Z5Z1_17.gif

Z5Z1_18.gif

Obliczamy numeryczną wartość jakobianu w wybranym punkcie:

Z5Z1_19.gif

Z5Z1_20.gif

Nowe, dokładniejsze przybliżenie otrzymujemy odejmując od poprzedniej wartości macierz odwrotną do jakobianu (Inverse) pomnożoną przez wektor zawierający wartości funkcji:

Z5Z1_21.gif

Z5Z1_22.gif

Z5Z1_23.gif

Z5Z1_24.gif

Automatycznie można to zrobić np. funkcją Nest. W tym celu tworzymy jednoargumentową funkcję obliczającą macierz odwrotną do jakobianu:

Z5Z1_25.gif

Z5Z1_26.gif

Z5Z1_27.gif

Wykorzystując funkcję Nest możemy zautomatyzować iteracje na kilka sposobów podanych poniżej:

Z5Z1_28.gif

Z5Z1_29.gif

Z5Z1_30.gif

Z5Z1_31.gif

Z5Z1_32.gif

Z5Z1_33.gif

Z5Z1_34.gif

Z5Z1_35.gif

Z5Z1_36.gif

Z5Z1_37.gif

Spikey Created with Wolfram Mathematica 7.0