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:
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. |
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. |
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):