the question is: Create a function which finds the root of an equation numerically by using the following recursive formula :
1 view (last 30 days)
Show older comments
Xn+1=Xn-f(Xn)/g(Xn) for n-1,2,3,...
where g(Xn)=f(Xn+f(Xn))-f(Xn)/f(Xn). This iterative procedure must stop when the absolute difference between Xn and Xn+1 is less than a given tolerance epsilon. The funtion must accept as inputs a scalar function f, an initial number 'x' and a positive number epsilon to terminate the procedure. Hence use this numerical technique to find the root of the equation e^x-x^2=0.
HELP PLEASE :(
syms x
f=exp(x)-x^2;
y(1)=1;
if x(n)-x(n+1)<0.25;
for n=0:1:inf;
x(k+1)=yk-subs(f,x,yk)/subs(g(xn),x,yk);
where g(xn)=(f(xn+f(xn))-f(xn))/(f(xn))
end
end
4 Comments
Walter Roberson
on 10 May 2013
syms x g(xn) f(x)
f(x) = exp(x)-x^2;
g(xn) = (f(xn+f(xn))-f(xn))/(f(xn));
That takes care of the "where" part.
Note: this requires a fairly recent version of MATLAB, R2011b or later.
Accepted Answer
Friedrich
on 10 May 2013
Hi,
why using symblic math when doing it nurmerically anyway? You can do this with plain MATLAB right away:
f = @(x) exp(x) - x^2;
g = @(x) (f(x + f(x)) - f(x))/f(x);
x(1) = 0;
x(2) = x(1) - f(x(1))/g(x(1));
n = 2;
while abs(x(n) - x(n-1)) > eps
n = n + 1;
x(n) = x(n-1) - f(x(n-1))/g(x(n-1));
end
2 Comments
Friedrich
on 10 May 2013
You can check the result with:
>> sprintf('%0.16f \n',f(x(end-1)))
ans =
-0.0000000000000002
>> sprintf('%0.16f \n',f(x(end)))
ans =
0.0000000000000000
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!