Układ równań nieliniowych (algorytm).

sledziu
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 4 paź 2010, o 12:10
Płeć: Mężczyzna
Lokalizacja: Śląsk

Układ równań nieliniowych (algorytm).

Post autor: sledziu »

Witam!
Dany jest układ równań, który można uprościć do następującej postaci:
\(\displaystyle{ \left\{\begin{array}{l}E_1=A_{1}^{Z_{1}} + K_{12}A_2^{Z_1} + K_{13}A_3^{Z_1} + \cdots +K_{1j}A_j^{Z_1}\\
E_2=K_{21}A_{1}^{Z_{2}} + A_2^{Z_2} + K_{23}A_3^{Z_3} + \cdots +K_{2j}A_j^{Z_2}\\
\vdots\\
E_i=K_{i1}A_{1}^{Z_{i}} + K_{i2}A_2^{Z_i} + K_{i3}A_3^{Z_i} + \cdots +K_{ij}A_j^{Z_i}\end{array}}\)


ogólnie:
\(\displaystyle{ E_i=A_i^{Z_i} + \sum_{j \neq i}K_{ij}A_j^{Z_i}}\)
(\(\displaystyle{ A_i^{Z_i}}\) stoi przed sumą ponieważ leżący przy nim współczynnik \(\displaystyle{ K_{ii}}\) wynosi 1. \(\displaystyle{ K_{11},K_{22},\cdots,K_{jj}}\) też wynoszą 1.)

gdzie:
\(\displaystyle{ \textbf{E}}\) to wektor wyjść [znane]
\(\displaystyle{ \textbf{K}}\) to macierz parametrów [znane]
\(\displaystyle{ \textbf{Z}}\) to wektor wykładników, które przyjmują wartości całkowite (od -3 do +3)[znane]
\(\displaystyle{ \textbf{A}}\) to wektor wejść [szukane]

Jak łatwo się domyśleć poszukiwany jest algorytm, metoda numeryczna umożliwiająca obliczenie niewiadomych\(\displaystyle{ \textbf{A}}\).

******
Początkowo problem ten istniał bez potęg i wektora \(\displaystyle{ \textbf{Z}}\). Sytuacja wtedy była prosta, zapisując układ równań jako działanie na macierzach:
\(\displaystyle{ \textbf{E}=\textbf{K} \cdot \textbf{A}}\)

przykładowo:
\(\displaystyle{ \left[\begin{array}{c}E_1\\E_2\\E_3\end{array}\right] = \left[\begin{array}{ccc}1&K_{12}&K_{13}\\K_{21}&1&K_{23}\\K_{31}&K_{32}&1\end{array}\right] \cdot \left[\begin{array}{c}A_1\\A_2\\A_3\end{array}\right]}\)

można było łatwo wyznaczyć wejścia \(\displaystyle{ A_j}\) za pomocą metody MNK. Niestety potęgi \(\displaystyle{ Z_j}\) mimo, iż są znane nie pozwalają na łatwe przekształcenie na macierzach i przekształcają wektor \(\displaystyle{ A}\) w macierz. Można byłoby również w tym przypadku zastosować metodę MNK (w oparciu o tw. Frischa-Waugha-Lavella [?]) ale tylko w sytuacji gdyby po lewej stronie mieć macierz \(\displaystyle{ \textbf{E}}\), a nie wektor. Czyli gdyby układ równań można było zapisać w postaci działań na wektorach (gdyby zgadzały się wymiary).

Chciałem przybliżyć się do właściwych wyników (chociażby licząc niepoprawnie za pomocą MNK) i następnie opracować algorytm szukania odpowiednich \(\displaystyle{ A_j}\) minimalizując jakiś wskaźnik jakości. Chociażby \(\displaystyle{ J= \sum_{i}{\left(E_i-\widehat{E}_i\right)}^2}\), gdzie: \(\displaystyle{ \widehat{E}_i}\) to obliczane wyjścia (\(\displaystyle{ E_i}\) są znane) w wyniku jakiś zmian, zaszumienia \(\displaystyle{ A_j}\) .
Wykładniki \(\displaystyle{ Z_j}\) na tyle jednak zniekształcają wyniki, że gdy zaczniemy od nich szukać rozwiązania nie mam mowy o jakiejkolwiek zbieżności algorytmów szukających "po omacku".

******
Dodam, że nie znalazłem algorytmów, które pomogłyby w rozwiązaniu powyższego problemu. Ponad to zadanie to jest tylko niewielką częścią większej aplikacji i przez wprowadzenie zmiennych \(\displaystyle{ Z_j}\) blokują całość. Dlatego wszelkie nawet najmniejsze aluzje i pomysły bardzo mile widziane!

edit:poprawione błedy
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

Układ równań nieliniowych (algorytm).

Post autor: Szemek »

Swego czasu na zajęciach z metod numerycznych, do rozwiązywania układu równań nieliniowych wykorzystywałem metodę Newtona.
Opis metody, pseudokody możesz znaleźć w "Analizie numerycznej" Kincaida, Cheneya.
sledziu
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 4 paź 2010, o 12:10
Płeć: Mężczyzna
Lokalizacja: Śląsk

Układ równań nieliniowych (algorytm).

Post autor: sledziu »

Użyłem pewnej modyfikacji metody Newtona. Jakość wyników jest zadowalająca, chociaż przy większej ilości równań obliczenia trwają niestety dość długo (rzędu kilku sekund, ale ma to niestety znaczenie w dalszej części aplikacji).
Dziękuję, temat prawdopodobnie do zamknięcia.
ODPOWIEDZ