9 svar
245 visningar
Liddas är nöjd med hjälpen
Liddas 294 – Fd. Medlem
Postad: 21 jan 2020 20:31 Redigerad: 21 jan 2020 20:33

Newton Raphson metod!

Hej, jag har gjort denna för hand, men när jag gör det i matlab stämmer det inte riktigt, nu står det f(y), det är vad jag approximerar dvs var linjen skär y-axeln , men approximationen går till på samma sätt som om man gjorde det med f(x).

 

Så här ser koden ut i matlab

sprintf('Beräkna roten för ekvationen e^y+y^3')
y=-0.5 %Första iterations gissning
i=0
delta= 100
while (delta > 1e-6)
    y=exp(y)+y^3                        %fx
    dy=exp(y)+3*(y^2)              %f'x
    NewY=y-(y/dy)                     %beräknar nya värdet på x
    delta = abs(y-NewY)
    y=NewY                                 %uppdatera värdet på y
    i = i+1
end

Laguna Online 28469
Postad: 22 jan 2020 08:32

Glömde du termen -0,7731 i sista uträkningen?

Liddas 294 – Fd. Medlem
Postad: 22 jan 2020 10:22 Redigerad: 22 jan 2020 10:26
Ja det har jag gjort, den sista blir -0,7728. Men koden gör fel på första dy också. Men när jag sätter in värdet g(y) där y = -0,7728 blir funktionsvärdet 0,0000336, vilket är ungerfär noll, det står dock inget i uppgiften hur många iterations-steg man ska göra.
Laguna Online 28469
Postad: 22 jan 2020 12:35

Koden gör y - y/dy, det är inte rätt. 

Liddas 294 – Fd. Medlem
Postad: 22 jan 2020 14:15 Redigerad: 22 jan 2020 14:17

Okej, men när jag gör det för hand då är

det y-(y/dy).  Lite osäker på hur matlab tolkar det där.

Liddas 294 – Fd. Medlem
Postad: 22 jan 2020 14:40

Undra  om man ens kan skriva y=exp(y)+y^3 . Kanske måste döpa om den till g(y)

Laguna Online 28469
Postad: 22 jan 2020 15:02
Liddas skrev:

Okej, men när jag gör det för hand då är

det y-(y/dy).  Lite osäker på hur matlab tolkar det där.

Nej, när du gör det för hand tar du y - f(y)/f'(y).

Liddas 294 – Fd. Medlem
Postad: 22 jan 2020 15:38 Redigerad: 22 jan 2020 15:39

Ja men om du kollar i koden är ju y=f(y) och dy=f’(y)  det är iaf menat så, det som kanske blir fel det är att jag har y=f(y) vilken kanske blir en konflikt / fel

Laguna Online 28469
Postad: 22 jan 2020 15:54

Gå igenom ett steg i koden mycket noggrant med penna och papper, så ser du vad som blir annorlunda.

Det bästa är kanske att formulera om uppgiften så att y är en funktion av x, som vanligt.

Liddas 294 – Fd. Medlem
Postad: 22 jan 2020 16:46 Redigerad: 22 jan 2020 16:50

    x=exp(y)+y^3 %fx
    dx=exp(y)+3*(y^2) %f'x
    NewY=y-(x/dx) %beräknar nya värdet på x

Ändrade om dom där, vilket jag (vi) också va inne på, blir lite knepigt med x och y, men  då blev det rätt .. Men tacksam för din hjälp på  vägen laguna!

Jag märker också att jag slarvar väldigt mycket, ska jobba på det !

Svara Avbryt
Close