5 svar
223 visningar
johhbi22 16 – Fd. Medlem
Postad: 7 feb 2020 16:00

Jacobian ( newton metod för ickelinjära ekvationer)

Hej!

Det är så att jag håller på med en uppgift där man ska beräkna lösningen av ett ekvations system.  Med hjälp av jacobianen. där jag skrivit min kod i typ denna stil: 

while

f = [ ekvationerna)

j= [derivatornna]

h = -j\f

x=x+h

Jag har skrivit min kod och jag får lösningarna för ekvationsystemet.

I uppgiften står det att jag skall ¨Funktionen
ska också skriva ut mellanresultat (tex skillnaden mellan successiva iterationer) som visar att
implementationen har kvadratisk konvergensordning¨ 

Betyder det att den ska ska skriva ut varje lösning för varje iteration ?  

Micimacko 4088
Postad: 7 feb 2020 19:45

Jag hade tolkat det som att h ska skrivas ut varje gång.

SaintVenant Online 3938
Postad: 7 feb 2020 20:10

Hur bestämmer du konvergensordningen hos en iterativ lösningsmetod?

johhbi22 16 – Fd. Medlem
Postad: 7 feb 2020 20:32
Ebola skrev:

Hur bestämmer du konvergensordningen hos en iterativ lösningsmetod?

Genom att kolla att att följden av värdena som man får närmar sig samma tal. För fixpunkt är den ju linjär och där kan man kolla om man deirverar funktionen och stoppar in x värdet och kollar om svaret är mindre än 1. För newton så är det att det är kvadratiskt dvs att antalet nollor födubblad för varje iteration för korrektionstermen h samt konstanta värden på asymptotiska felkonstanten K.

johhbi22 16 – Fd. Medlem
Postad: 7 feb 2020 20:54 Redigerad: 7 feb 2020 20:59
johhbi22 skrev:
Ebola skrev:

Hur bestämmer du konvergensordningen hos en iterativ lösningsmetod?

Genom att kolla att att följden av värdena som man får närmar sig samma tal. För fixpunkt är den ju linjär och där kan man kolla om man deirverar funktionen och stoppar in x värdet och kollar om svaret är mindre än 1. För newton så är det att det är kvadratiskt dvs att antalet nollor födubblad för varje iteration för korrektionstermen h samt konstanta värden på asymptotiska felkonstanten K.

Jag löste det men problemet är bara att när jag använder disp så kan jag inte typ göra det tydligt vilket av de två värdna längst ner som är h och k. Det värde till höger är k. jag försökte använda disp(' x h k')  men jag får fel då x innehåller fler värden.

x = 

0.7772724
-0.814406
1.6991045
0.5472311

0.0000087  0.8523112   

johhbi22 16 – Fd. Medlem
Postad: 8 feb 2020 15:51

För att förtydliga:

Jag vill använda disp( x h k) som jag skriver innan min loop och efter problemet är att x består av fyra element(kolumnvektor) och h o k består av ett element varsitt. Det blir dimensionsfel när jag försöker använda disp. 

Svara
Close