Układ równań sferycznych - Metoda Gaussa - Seidela

Przestrzenie wektorowe, bazy, liniowa niezależność, macierze.... Formy kwadratowe, twierdzenia o klasyfikacji...
zimek125
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 14 kwie 2014, o 11:42
Płeć: Mężczyzna
Lokalizacja: Szczecin

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: zimek125 »

Witam, mam problem z rozwiązaniem pewnego problemu.
Otóż mam układ trzech równań sferycznych(gdzie niewiadomymi są x,y,z), aby go rozwiązać muszę skorzystać z metod numerycznych, no i padło na Gaussa - Seidela.

Tutaj się pojawia moje pytanie, jak podstawić równania sferyczne do tej metody?
Może znacie jakąś lepszą metodę pasującą do takich równań?

Korzystam z tego:

Kod: Zaznacz cały

http://www.algorytm.org/procedury-numeryczne/metoda-gaussa-seidela.html


Bardzo mi na tym zależy.
Pomożecie?
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: SlotaWoj »

Układ trzech równań sferycznych?
Metoda Gaussa-Seidla to iteracyjna metoda rozwiązywania układów równań liniowych.
Podaj ten swój układ równań.
zimek125
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 14 kwie 2014, o 11:42
Płeć: Mężczyzna
Lokalizacja: Szczecin

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: zimek125 »

Oto przykładowy układ równań.

\(\displaystyle{ 15.6391^{2} = (x - 473483,2370)^{2} + (y - 5924212,7301)^{2} + z^{2}}\)
\(\displaystyle{ 25,6842^{2} = (x - 473438,7507)^{2} + (y - 5924224,4720)^{2} + z^{2}}\)
\(\displaystyle{ 15.6391^{2} = (x - 473461,6960)^{2} + (y - 5924226,4164)^{2} + z^{2}}\)

Może pomyliłem metody, jednak nadal nie wiem jak to rozwiązać programowo.

Mam nadzieję, że mi pomożecie.
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: SlotaWoj »

Dlaczego nazwałeś te równania sferycznymi? One dotyczą sfer, ale nie są to równania we współrzędnych sferycznych \(\displaystyle{ \left(r;\varphi;\theta\right)}\).
Zadanie sprowadza się do znalezienia punktu przecięcia się trzech sfer. Przypuszczalnie zadanie ma rozwiązanie analityczne (wzory na \(\displaystyle{ \left(x;y;z\right)}\) punktu przecięcia). Na początek trzeba sprawdzić, czy któraś ze sfer nie obejmuje w całości innej lub czy nie są parami rozłączne.
Równania są nieliniowe i na razie nie widzę możliwości ich linearyzacji, więc metoda Gausa-Seidla odpada.
Trzeba wymyślić coś innego.
Środki sfer są bardzo blisko siebie i jeszcze są prawie współliniowe, co powoduje, że rozwiązanie iteracyjne będzie bardzo czułe na błędy zaokrągleń.

Edit:
––––––
Gdy ponumerujemy sfery tak jak równania (w kolejności) to sfery 1 i 2 są rozłączne (odległość pomiędzy ich środkami jest większa od sumy ich promieni) więc zadanie nie ma rozwiązania.
zimek125
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 14 kwie 2014, o 11:42
Płeć: Mężczyzna
Lokalizacja: Szczecin

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: zimek125 »

Wiem, że to zadanie może nie mieć rozwiązania, może być do związane z błędem pomiarowym odbiorników. Lecz z przyjętym błędem (np. 0.5 metra) pewnie da się to zadanie rozwiązać.
Problem jest realny, opiszę Ci go:

Trzy boje ułożone w trójkąt unoszą się na wodzie a nurek pływa z urządzeniem, które nadaje co pewien okres czasu impuls. Na podstawie różnicy czasów dotarcia impulsu do bojek, jestem w stanie określić jedynie odległość nurka do każdego odbiornika. Z otrzymanych odległości i pozycji geograficznych (UTM) bojek otrzymuję układ równań trzech sfer. Nurek znajduje się w punkcie 'stycznym' trzech sfer.

Rozwiązanie problemu jest opisane na wikipedii:

Kod: Zaznacz cały

https://pl.wikipedia.org/wiki/Multilateracja

Jednak próbowałem podstawić moje dane do tego rozwiązania (3D) i nie wychodziło mi. Albo ktoś coś źle przepisał, albo ja coś źle robię w którymś miejscu.

Z drugiej strony wolframalpha, bez problemu mi rozwiązuje ten układ. Ale nie podaje jakiej metody użył.
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: SlotaWoj »

Podaj, w jaki sposób wymusiłeś rozwiązanie w WolframAlpha.
zimek125
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 14 kwie 2014, o 11:42
Płeć: Mężczyzna
Lokalizacja: Szczecin

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: zimek125 »

Link do rozwiązania (WolframAlpha) :
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: SlotaWoj »

W ww. linku \(\displaystyle{ r_3=23,0275}\) jest różne od podanego wcześniej przez Ciebie \(\displaystyle{ \left(r_3=15,6391\right)}\).

Wszystkie lub prawie współczynniki są różne.
zimek125
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 14 kwie 2014, o 11:42
Płeć: Mężczyzna
Lokalizacja: Szczecin

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: zimek125 »

Faktycznie, źle przepisałem.

W takim razie jak wolfram rozwiązał te równanie do którego podałem link wcześniej?
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: SlotaWoj »

Zadanie prawdopodobnie ma rozwiązanie analityczne jeśli tak, to Wolfram ma je zaimplementowane lub też wyprowadza takie wzory drogą symboliczną.
zimek125
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 14 kwie 2014, o 11:42
Płeć: Mężczyzna
Lokalizacja: Szczecin

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: zimek125 »

Hmm zastanawiam się, czy nie ma jakiejś metody numerycznej za pomocą której można rozwiązać układ równań trzech sfer. Jest jeszcze metoda Multilateracji opisana na wikipedii, jednak jak pisałem wcześniej nie wychodzi mi albo nie potrafię jej zastosować.

Dane jakie posiadam to:
- czasy nadejścia impulsu do bojek (z tego łatwo jest policzyć różnicę czasową co daje po pomnożeniu przez prędkość dźwięku różnicę w odległościach),
- pozycje geograficzne bojek (lat, long), to konwertuję na układ UTM (x, y, z = 0 ponieważ boje są na tej samej płaszczyźnie),

Rozwiązanie układu równań trzech sfer w takim razie powinno dać dwa rozwiązania (w jednym z > 0, w drugim z < 0), muszę brać pod uwagę rozwiązanie z z < 0 ponieważ nadajnik jest pod wodą.

Jest jeszcze metoda z hiperbolami (hiperboloidami). Tej też nie potrafię wykorzystać.
Myślę nad tym już kilka dni i nic. Myślałem, że Wy mi pomożecie.
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: SlotaWoj »

Poprawiłem artykuł w Wikipedii nt.

Kod: Zaznacz cały

https://pl.wikipedia.org/wiki/Multilateracja
, bo ktoś usunął z niego ilustracje do których były odwołania w tekście.

Generalnie artykuł ten jest nieco mętnie napisany, bo trilateracja i multilatercja, różni się tylko liczbą odbieranych sygnałów. Problem jest w tym czy nadawane sygnały są zsynchronizowane w czasie, czy też nie. W pierwszym przypadku mierzymy czasy przelotów sygnałów i szukamy punktu przecięcia się trzech sfer (tak działa satelitarny GPS). W drugim przypadku mierzyny różnice w czasie nadejścia trzech par sygnałów (czyli musimy mieć co najmniej cztery źródła sygnałów) i szukamy punktu przecięcia się trzech hiperboloid. Większe niż trzeba liczby źródeł sygnałów stosuje się celem wyeliminowania błędów pomiarów i zwiększenia dokładności pozycjonowania.
zimek125 pisze:Trzy boje ułożone w trójkąt unoszą się na wodzie a nurek pływa z urządzeniem, które nadaje co pewien okres czasu impuls. Na podstawie różnicy czasów dotarcia impulsu do bojek, jestem w stanie określić jedynie odległość nurka do każdego odbiornika. Z otrzymanych odległości i pozycji geograficznych (UTM) bojek otrzymuję układ równań trzech sfer. Nurek znajduje się w punkcie 'stycznym' trzech sfer.
Tu są błędy merytoryczne, które musisz skorygować.
Mierzysz różnice czasów, więc nie masz odległości, ale ich różnicę. Możesz ułożyć równania trzech hiperboloid i nurek znajduje się na ich przecięciu.
Zagadnienie jest prostsze, gdy to my określany położenie nurka, niż gdy on sam to robi.
zimek125
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 14 kwie 2014, o 11:42
Płeć: Mężczyzna
Lokalizacja: Szczecin

Układ równań sferycznych - Metoda Gaussa - Seidela

Post autor: zimek125 »

Bardzo długo zastanawiałem, się nad układem równań trzech hiperboloid.

Rozumiem, że współczynniki a,b,c muszą być stałe, a hiperboloida ma być dwupowłokowa.
Ale jak pozycjonować te trzy hiperboloidy względem trzech odbiorników?
ODPOWIEDZ