5 svar
56 visningar
johhbi22 20
Postad: 7 feb 2020

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 703
Postad: 7 feb 2020

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

Ebola 1213
Postad: 7 feb 2020

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

johhbi22 20
Postad: 7 feb 2020
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 20
Postad: 7 feb 2020 Redigerad: 7 feb 2020
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 20
Postad: 8 feb 2020

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 Avbryt
Close