newton-raphson please help

1 Ansicht (letzte 30 Tage)
Yusuf
Yusuf am 18 Jan. 2014
Beantwortet: Meysam Mahooti am 5 Dez. 2019
i want to find roots of f(x)=x(x-1)e^x by using newton raphson but instead of finding df/dx by using code , i want to use central numerical differentiation which is that f_diff(x)=(f(x+h)-f(x-h))/2*h; and h is any variable but smaller is better such as 10^-6 . and i want write each of them as a function file then call just newton-raphson formule and find root.
please help me

Antworten (3)

Amit
Amit am 18 Jan. 2014
function ra = myfunc(x)
% x the input
F = x*(x-1)*(e^x);
and seperately,
functin dif = mydiff(x,h)
dif = (myfunc(x+h)-myfunc(x-h))/(2*h)
  2 Kommentare
Yusuf
Yusuf am 18 Jan. 2014
i tried this code but did not work
in order to find roots of F, i need to use x(k+1)=x(k)-[f(x)/f_diff(x)] , i create another function NR = Newton_Root(x0,h,M) %h is the value that uses in mydiff % M is number of iteration % x0 initial value x=x0 for i=0:M x(i+1)=x(i) x(i+1)=x(i)-[myfunc(x)/mydiff(x)] end end
Amit
Amit am 18 Jan. 2014
What error you got?
One thing I see is, while using mydiff, you have just used mydiff(x), however it should be mydiff(x,h)

Melden Sie sich an, um zu kommentieren.


Mischa Kim
Mischa Kim am 18 Jan. 2014
Try:
function [x, fx] = my_NR(my_tol, h, x0)
x = x0;
while (abs(f(x)) > my_tol)
dx = f(x)/df(x, h);
x = x - dx;
end
fx = f(x);
end
function f_val = f(x)
f_val = x*(x - 1)*exp(x);
end
function df_val = df(x, h)
df_val = (f(x + h) - f(x - h))/(2*h);
end
  1 Kommentar
lola lola
lola lola am 8 Apr. 2017
if to the question: diffresensial (f(x+h)-f(h))/h
if you can help to formula?

Melden Sie sich an, um zu kommentieren.


Meysam Mahooti
Meysam Mahooti am 5 Dez. 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by