System av ickelinjära ekvationer

Syftet med denna laboration är att Du lära Dig lite om system av ickelinjära ekvationer. Du kommer bland annat att ställa upp Newtons metod för ett system av ekvationer.

Först en kort repetition av envariabelfallet.
Vi har ekvationen, sin x = 1 / x. När man stöter på ett nytt problem brukar man alltid ställa sig åtminstone två frågor:

Man är alltså intresserad av det man kallar existens och entydighet. När det gäller linjära problem (linjära ekvationssystem) kan frågorna om existens och entydighet besvaras i detalj. Detta är sällan möjligt för ickelinjära problem, men det finns undantag t.ex. en vanlig polynomekvation xn + an-1xn-1 +...+ a1x + a0 = 0, n > 0. Så även om man inte alltid kan lösa en sådan ekvation, så vet man att det finns precis n (komplexa) rötter (om man tar hänsyn till multipla rötter). Det är viktigt att notera att existens och entydighet kan diskuteras oberoende av om man kan lösa problemet eller inte (eller hur man löser det).

Vad kan man säga om existens och entydighet av rötter till ekvationen: sin x = 1 / x?
Det kan underlätta om Du ritar en lämplig bild.
Bifoga bild och resonemang i labrapporten.

Du har nu förhoppningsvis kommit fram till att det finns något man kan räkna ut (existensen är säkerställd). Använd nu Newtons metod för att räkna fram några approximativa rötter till ekvationen.

Ställ upp Newtons metod för ekvationen sin x = 1 / x.
Kör metoden för några olika startpunkter och skriv ut iteranderna med formatet, format long e
Hur snabbt verkar metoden konvergera, dvs. hur snabbt verkar felet minska?

Bifoga Matlabkod och uträkning av tre olika rötter. Skriv ut iterationerna med långt format (så att man ser alla decimalerna). Använd t.ex. kommandot diff för att bilda skillnaderna mellan successiva approximationer (kräver att dessa är lagrade i en vektor). Dra slutsatser och kommentera.


Nu till ett system av ekvationer.

Vi har en mottagare (på en robot) som kan avläsa avstånden till tre fixa sändare. Vi känner sändarnas positioner, och söker mottagarens position i rummet (tre koordinater).

Antag först att allt mäts exakt. Formulera det system av tre ekvationer som vi måste lösa för att bestämma mottagarens position. Vad kan vi säga om lösningens entydighet (antag att sändarna sitter på olika ställen i rummet)? Vilka olika antal lösningar kan existera (kan det finnas en, två, tre, ..., oändligt många lösningar) och hur skall sändarna då vara placerade i respektive fall? Använd geometriska resonemang för detta (att se på ekvationerna är svårt).
Du kan anta att existensen är säkerställd (roboten finns ju någonstans och den matematiska modellen beskriver verkligheten tillräckligt väl).

Observera att frågan om entydighet inte har något alls med Newtons metod att göra. Existens och entydighet är ju egenskaper hos det matematiska problemet. Hur man sedan väljer att lösa detta matematiska problem är ju en annan sak.
 
I en verklig situation mäter vi inte exakt, det kan då vara så att det systemet saknar lösning. Det är därför rimligt att formulera problemet som ett ickelinjärt minstakvadratproblem istället (men studiet av denna problemtyp ingår inte i kursen).

Skriv ett Matlabprogram som bestämmer mottagarens position med hjälp av ekvationerna från föregående övning och med hjälp av Newtons metod. Ditt program skall angripa de ursprungliga ekvationerna (du skall alltså inte lösa ut några variabler för hand; syftet är ju att träna på Newtons metod).
Testa på data nedan och skriv ut p(k) i varje iteration (om p är den sökta positionen)! Spara lösningarna och antalet iterationer. Säg något lämpligt om vad de olika startpunkterna ger för uppförande. I det tredje fallet (tredje startvektorn) bör Du få ett felmeddelande. Vad är det som har hänt?
Skapa Jacobianen genom att derivera för hand, använd inte Matlabs jacobian-kommando.

Lite mätdata: Sändarnas positioner (klipp och klistra):

x = [ 1.23,  0.12, -0.22]';   % x-koordinaterna för sändarna
y = [ 0.01, 0.98, 0.02]'; % y-koordinaterna för sändarna
z = [-0.11, -0.12, 1.76]'; % z-koordinaterna för sändarna
r = [ 1.22, 0.98, 1.52]'; % avstånden mellan sändare och mottagare

Testa följande tre startvektorer (p(1) = den sökta x-koordinaten, p(2) och p(3) är y- och z-koordinater) :

p = zeros(3, 1);
p = ones(3, 1);
p = [3.407007110432360e-01
3.907070706849901e-01
4.758069306448354e-01];

Om man kan Matlab (och använder belysning (tre lampor i detta fall), shading och transparens) kan man göra följande grafiska framställningar av vårt problem (i den högra varianten har jag skurit bort en halv sfär):

 

bollar1 bollar2