newton-raphson please help

2 views (last 30 days)
Yusuf
Yusuf on 18 Jan 2014
Answered: Meysam Mahooti on 5 Dec 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

Answers (3)

Amit
Amit on 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 Comments
Yusuf
Yusuf on 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 on 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)

Sign in to comment.


Mischa Kim
Mischa Kim on 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 Comment
lola lola
lola lola on 8 Apr 2017
if to the question: diffresensial (f(x+h)-f(h))/h
if you can help to formula?

Sign in to comment.


Meysam Mahooti
Meysam Mahooti on 5 Dec 2019

Community Treasure Hunt

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

Start Hunting!