I know the classic method but i can not implement please help me.
Here is a function I've created that hopefully answers your question:
function [x,fval,fevals] = NewtonFourier(f,ab,tol) % NEWTONFOURIER Function that will efficiently find the local zero % of an arbitrary function within a specified initial % guess and tolerance. % % [x,fval,fevals] = NEWTONFOURIER(f,x0,tol); % % INPUT ARGUMENTS % ================ % f Function handle to function to be searched % ab Interval [a,b] in which root is assumed to be % tol Desired relative error % % OUTPUT ARGUMENTS % ================ % x The coordinate where f(x) = 0 % fval The evaluation of f(x) % fevals Number of times the func was evaluated % CHECK IF PROBLEM IS LIKELY UNSOLVABLE if f(ab(1))*f(ab(2)) > 0 warning('f(a)f(b) > 0, there likely is no solution in [a,b].'); end % DETERMINE APPROXIMATE DERIVATIVES OF func fp = @(x) (f(x+tol)-f(x-tol))/(2*tol); % INITIALIZE fevals fevals = 2; % INITIALIZE xn AND zn xn = ab(2); zn = ab(1); % MAIN LOOP err = Inf; while err > tol % Update root estimates fxn = f(xn)/fp(xn); xn = xn - fxn; fzn = f(zn)/fp(zn); zn = zn - fzn; % Determine if converged err = abs((fxn+fzn)/2); % Update function evaluation counter fevals = fevals+6; end % RETURN OUTPUTS x = xn; fval = f(xn); fevals = fevals+1; end
I've also written a demo file that solves the specific problem you've referenced in your question here:
% demo_NewtonFourier.m % Initialize MATLAB clear variables close all clc % Define NewtonFourier.m Inputs f = @(x) x.^3 + x.^2 + 1; tol = 1e-6; ab = [ -2 +2 ]; % Plot Function x = ab(1) : 0.05 : ab(2); y = f(x); figure(1); hold on plot(x,y,'-k','LineWidth',2); plot(x,0*x,'--k','LineWidth',1); hold off xlabel('$x$','Interpreter','latex'); ylabel('$f(x)$','Interpreter','latex'); title(['$ f(x) = ' latex(f(sym('x'))) '$'],'Interpreter','latex'); set(gca, 'FontSize', 12, 'FontName', 'Times', ... 'XMinorTick', 'on', 'YMinorTick', 'on', ... 'TickLength', [0.015, 0.0015]); % Call NewtonFourier.m [x,fval,fevals] = NewtonFourier(f,ab,tol)
The outputs of this demo file include the following figure showing the only real solution to be approximately -1.46,
x = -1.4656 fval = 4.4409e-16 fevals = 153
If you require explanation of the code snippets or need anything else, let me know!
Matlabsolutions.com provides guaranteed satisfaction with a
commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain
experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support
to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been
empanelled after extensive research and quality check.
Matlabsolutions.com provides undivided attention to each Matlab
assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services
include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work
done at the best price in industry.