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
Glömde du termen -0,7731 i sista uträkningen?
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.
Koden gör y - y/dy, det är inte rätt.
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.
Undra om man ens kan skriva y=exp(y)+y^3 . Kanske måste döpa om den till g(y)
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).
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
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.
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 !