function [retval] = q2 (input1, input2) format long f = @(x) cos(x); w = ones(4,5); w(1:4,1:2) = [.6 f(.6) ; .7 f(.7) ; .8 f(.8) ; .9 f(.9) ]; for i = 1:3 w(i,3) = (w(i+1,2) - w(i,2))/(w(i+1,1) - w(i,1)); end for i = 1:2 w(i,4) = (w(i+1,3) - w(i,3))/(w(i+2,1) - w(i,1)); end for i = 1:1 w(i,5) = (w(i+1,3) - w(i,3))/(w(i+3,1) - w(i,1)); end %% You may see the w. disp(w); g = @(x) w(1,5)*(x-w(1,1))*(x-w(2,1))*(x-w(3,1)) + w(1,4)*(x-w(1,1))*(x-w(2,1)) + w(1,3)*(x-w(1,1)) + w(1,2) - x; %% That is, g(x)=cos(x)-x by interpolaion of the four points. %% Therefore, I'd like to find the root of g(x). a = -10; b = 10; ga = g(a); gb = g(b); c = (a+b)/2; gc = g(c); for i = 1:5000 if gc*ga < 0 gb = gc; b = c; elseif gc*gb < 0 ga = gc; a = c; end c = (a+b)/2; gc = g(c); if abs(gc) < 10^-30 fprintf(' After %d times, \n', i+1 ); fprintf(' when x = %.30f,\n g(x) = %.30f.\n', c , g(c) ); break end end endfunction