• Nie Znaleziono Wyników

Szukanie rozwiązań układów równań nieliniowych

N/A
N/A
Protected

Academic year: 2021

Share "Szukanie rozwiązań układów równań nieliniowych "

Copied!
10
0
0

Pełen tekst

(1)

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Funkcja uwikłana (równanie nieliniowe) jest to funkcja, która nie jest przedstawiona jawnym przepisem, wzorem wyrażającym zależność wartości funkcji od jej argumentu, lecz bardziej złożonym związkiem, który nie daje się prosto przekształcić na jawny wzór.

Przykładem jest znane, historyczne równanie Keplera:

M E e

E− ⋅sin =

w którym niewiadomą, której wartość ma być wyznaczona, jest E. Niemożliwe jest takie przekształcenie powyższego równania, aby otrzymać wzór typu E = ….

Innym, często przytaczanym przykładem, jest równanie:

x ex =sin

gdzie z kolei niemożliwe jest podanie analitycznego przepisu na wyliczenie zmiennej x.

W przypadku tego rodzaju funkcji wartości niewiadomych znajduje się wykonując obliczenia numeryczne, polegające wstawianiu różnych liczb aż do rozwiązania. Dawniej obliczenia tego typu trwały nierzadko tygodniami, obecnie przy pomocy komputerów zajmują sekundy. Aby jednak ułatwić pracę, należy wcześniej odpowiednio się przygotować.

Przede wszystkim zauważmy, że każde równanie zmiennej x można sprowadzić do postaci:

0 ) (x = f W powyższym przykładzie będzie to:

0 sin )

(x =ex=

f x

Znalezienie rozwiązania sprowadza się wtedy do wyznaczenia miejsc zerowych funkcji f(x).

Postępowanie, prowadzące do rozwiązania funkcji uwikłanych, wykonuje się w dwóch krokach:

1. Wstępne oszacowanie wartości niewiadomej.

Niekiedy (w przypadku równań opisujących konkretne zjawisko fizyczne) przybliżona wartość niewiadomej jest znana. Np. w przypadku równania Keplera wiadomo, że E ~ M. W pozostałych przypadkach metodą na przybliżone poznanie wartości niewiadomej jest narysowanie wykresu funkcji f(x) i znalezienie miejsc zerowych (czyli wartości x, dla których f(x) = 0)

2. Numeryczne wyznaczenie wartości niewiadomej przy użyciu narzędzi optymalizacyjnych dostępnych w programie MS Excel (Szukaj wyniku lub Solver).

Metodologię postępowania prowadzącego do wyznaczenia wartości niewiadomej przedstawię na przykładzie równania ex =sinx. Nic nie wiem na temat chociażby wartości przybliżonej x, w związku z czym jej poszukiwanie rozpocznę od stworzenia wykresu. Niestety, program MS Excel nie posiada możliwości wykreślenia wykresu funkcji wprost z jej wzoru, lecz z tabeli danych, w związku z czym trzeba wcześniej stworzyć tabelę wartości x i f(x). Aby to uczynić, muszę wcześniej określić dziedzinę (zakres wartości), w której będę poszukiwał wartości x. Zwykle dziedzina ta wynika z teorii zagadnienia, w przypadku równań „matematycznych” należy ją oszacować samodzielnie (często trzeba próbować kilkakrotnie, uściślając dziedzinę x na podstawie kolejnych otrzymywanych wykresów).

Pamiętajmy, że jeśli np. w równaniu występuje logarytm niewiadomej, to jej dziedziną jest zakres liczb dodatnich (począwszy praktycznie od zera, czyli od np. 1E-12).

(2)

Dla przykładowego, omawianego równania ex =sinx funkcja f(x) będzie miała postać:

x e

x

f( )= x −sin

Dla tej funkcji tworzę tabelę wartości i wykres w dziedzinie x od -10 do 10 z krokiem równym 1:

Interesują nas miejsca zerowe funkcji f(x), których na powyższym wykresie nie widać – widoczne jest jedynie, że funkcja szybko zbliża się do zera, lecz co się dzieje w pobliżu zera - nie wiadomo.

Aby się tego dowiedzieć, musimy tak przeskalować osie (zwłaszcza oś f(x)), aby punkty zerowania stały się wyraźnie widoczne:

(3)

Po ustawieniu skali osi pionowej (f(x)) w zakresie od -10 do 10 stało się jasne, że analizowana funkcja ma zapewne nieskończenie wiele miejsc zerowych, z których pierwsze występuje dla x~1, drugie dla x~3, trzecie dla x~6 itd. Odnotowujemy postulowane wartości wybranych wartości x (dla których funkcja się zeruje) na arkuszu – w kolejnym kroku wyznaczymy dokładne wartości tych trzech rozwiązań analizowanej funkcji f(x):

Poniżej tworzymy komórki, zawierające postulowaną w danym momencie wartość zmiennej x (przypisujemy nazwę x do tej wartości) oraz wartość analizowanej funkcji f(x) przy tej właśnie wartości x:

(4)

W celu otrzymania wartości dokładnej poszukiwanej zmiennej x użyjemy opcji menu Narzędzia/Szukaj wyniku.

W pole Ustaw komórkę wpisuję adres komórki, zawierającej analizowaną funkcję, w pole Wartość wpisuję liczbę 0 (gdyż właśnie komórka, przechowująca formułę analizowanej funkcji ma osiągnąć wartość 0), natomiast w pole Zmieniając komórkę adres komórki zawierającej postulowaną wartość x (gdyż to ona ma się zmienić tak, aby komórka zawierająca funkcję się wyzerowała).

Po wypełnieniu trzech wskazanych pól klikam przycisk OK i otrzymuję okno Stan szukania wyniku:

Aby stwierdzić, że rozwiązaliśmy analizowaną funkcję, w drugim wierszu tego okna musi wystąpić napis znaleziono rozwiązanie, natomiast w wierszu Wartość bieżąca musi wystąpić bardzo mała, zbliżona do zero liczba – liczba ta jest jednocześnie błędem wyznaczenia wartości x. W powyższym przykładzie oznacza to, że wyznaczone x = 0,5892 ± 0,0009.

Otrzymany wynik x przy pomocy schowka kopiuję do odpowiedniej komórki w kolumnie Wyznaczone i w analogiczny sposób kontynuuję wyznaczanie rozwiązań dla kolejnych wartości postulowanych:

(5)

aż do wyznaczenia wszystkich poszukiwanych rozwiązań analizowanej funkcji:

Dokładniejsze rozwiązania otrzymam używając narzędzia optymalizacyjnego Solver (opcja menu Narzędzia/Solver).

(6)

W tym przypadku w pole Komórka celu wpisuję adres komórki, zawierającej analizowaną funkcję, w polu Równa zaznaczam opcję Wartość 0, natomiast w polu Komórki zmieniane wpisuję adres komórki zawierającej postulowaną wartość x.

Po zatwierdzeniu okna poprzez kliknięcie przycisku Rozwiąż otrzymuję:

Warunkiem rozwiązania jest napis Solver znalazł rozwiązanie w pierwszym wierszu okna wynikowego (jeżeli pisałoby Solver zbliżył się do rozwiązania, należałoby ponownie uruchomic to narzędzie aż do otrzymania potwierdzenia znalezienia rozwiązania). Drugim, koniecznym, warunkiem rozwiązania jest to, żeby wartość w komórce zawierającej formułę analizowanej funkcji była zbliżona do zera – jest to jednocześnie błąd wyznaczenia wartości x. W opisywanym przykładzie wynik wynosi: x = 0,58853276 ± 0,00000002, czyli znacznie dokładniej niż poprzednią metodą. Czynność tę powtarzamy dla kolejnych wartości postulowanych:

Zaletą użycia Solvera zamiast Szukaj wyniku jest, poza zwiększoną dokładnością, zapamiętywanie przez niego ustawień - nie trzeba ponownie wypełniać zawartości jego pól przy ustalaniu kolejnych rozwiązań analizowanego równania.

Z przykładem znalezienia rozwiązania funkcji uwikłanej można zapoznać się na stronie:

http://vistula.wis.pk.edu.pl/~sciezor/uwiklane.xls

(7)

Szukanie rozwiązań układów równań nieliniowych

Innym przykładem zastosowania narzędzi optymalizacyjnych do szukania zbioru rozwiązań układów równań nieliniowych. Podobnie, jak w przypadku szukania rozwiązania pojedynczego równania, każde z równań możemy zawsze napisać w postaci:

f(x,y,…) = 0 g(x,y,…) = 0

…………

h(x,y,…) = 0

W tym przypadku musimy jednak znać wartości początkowe x0,y0,…, w pobliżu których szukane będzie rozwiązania, gdyż wykonanie odpowiedniego wykresu jest zwykle niemożliwe. Wartości te podaje się zwykle w formie (x0,y0,…) i podaje się, że szukamy rozwiązań w pobliżu punktu (x0,y0,…). Naszym celem jest znalezienie takich wartości x,y,…, dla których funkcje f(x,y,…), g(x,y,…) itd. są równe zero. W związku z tym, że cel musi być pojedynczy i ściśle określony, liczymy sumę kwadratów wszystkich tych funkcji. Z tego, że suma kwadratów funkcji jest równa zero wynika, że każda z tych funkcji musi być równa zero.

= n =

i

i x y

f

1

0 ) , ,

( K

W praktyce, w związku ze skończoną dokładnością obliczeń numerycznych, osiągnięcie wartości 0 jest w praktyce niemożliwe, toteż zwykle szukamy takich wartości zmiennych x,y,…, dla których powyższa suma osiąga wartość minimalną. Warunkiem stwierdzenia, że układ został rozwiązany jest nie tylko osiągnięcie przez powyższą sumę wartości minimalnej (gdyż może to być jedynie lokalne minimum), lecz również suma ta (jak i każda ze składowych funkcji) musi mieć wartość zbliżona do zera.

Implementację wyżej opisanej metody w arkuszu kalkulacyjnym przedstawię na przykładzie układu równań:





= +

= +

4 sin

3 log

y3

x y ex

Rozwiązań (oczywiście dodatnich) poszukamy w pobliżu punktu (1,1).

następnie liczymy sumę kwadratów obu funkcji:

(8)

W efekcie:

W celu minimalizacji otrzymanej sumy kwadratów użyjemy Solvera, gdzie jako Komórkę celu ustawiamy komórkę, zawierającą sumę kwadratów, w pozycji równa ustawiamy Min (a nie wartość 0!), natomiast jako komórki zmieniane zaznaczamy blok komórek zawierający wartości x i y. Ponieważ w zadaniu dodano, że rozwiązania mają być dodatnie, dodajemy warunek ograniczający:

W efekcie przygotowany do pracy Solver powinien w tym przykładzie wyglądać następująco:

(9)

Po naciśnięciu przycisku Rozwiąż otrzymujemy informację:

Ponieważ w pierwszym wierszu widnieje tekst Solver zbliżył się do aktualnego rozwiązania, zgadzamy się z tym i uruchamiamy go ponownie aż do uzyskania okna:

Oznacza to, że Solver znalazł takie wartości x i y, dla których suma kwadratów funkcji przyjmuje wartość minimalną. Czy jest to jednak poszukiwane rozwiązanie?

(10)

W celu odpowiedzi na to pytanie analizujemy otrzymane rozwiązania:

Widzimy, że wartości zarówno f(x,y), g(x,y), jak również sumy kwadratów są bardzo małe (zbliżone do zera). Oznacza to, że znalezione minimum sumy kwadratów jest jednocześnie jej miejscem zerowym, czyli wyznaczone wartości x i y są dodatnimi rozwiązaniami analizowanego układu równań nieliniowych w pobliżu punktu (1,1).

Z przykładem znalezienia rozwiązań układu równań nieliniowych można zapoznać się na stronie:

http://vistula.wis.pk.edu.pl/~sciezor/uwiklane.xls

Cytaty

Powiązane dokumenty

Przejdź do kroku 2 jeśli nie jest spełniony warunek STOPu... Dziekuję za

Wysokość w trójkącie równobocznym jest równa 12cm.. Oblicz pole

Oblicz pole koła opisanego na trójkącie prostokątnym o przyprostokątnych długości 6cm i

Oblicz pole koła opisanego na trójkącie prostokątnym o przyprostokątnych długości 3cm i

Na podstawie informacji zawartych w tym filmiku proszę o zrobienie zadań:. Zad 7.78/193 (na podstawie przykładu 9) oraz zad 7.79/193 (na podstawie

W kole o promieniu 10 wyznaczony jest wycinek koła przez kąt środkowy o mierze 60°.Obliczymy pole tego wycinka.. Jakie mamy dane

Narysuj wektor natęŜenia pola elektrostatycznego w punkcie leŜącym na symetralnej odcinka łączącego ładunki +Q i –Q.. Oblicz

że polaryzacja dielektryczna P zależy w nieliniowy sposób od zewnętrznego pola elektrycznego  E. Wyrazem tego