Asked by Matthew Worker
on 11 Nov 2017

In my code I need to display in the command line how many of the iterations my root was in the smaller interval. I am not entirely sure what this means, but I'm hoping someone does and can give me a hand to work out what I'm missing. At the moment the command line displays the same number of iterations for both the iterations to the root and how many iterations the root was in the smaller interval.

Code removed. Question has been answered.

Answer by Mischa Kim
on 11 Nov 2017

Accepted Answer

Mischa Kim
on 11 Nov 2017

I used

f = @(x) sqrt(x) - cos(x);

[a,b,it,itc] = WB(f,0,15,0.25,1e-5)

with (please double-check)

function [a,b,it,itc] = WB(f,a,b,w,tol)

it=0;

itc=0;

fa=f(a);

fb=f(b);

if fa*fb>0

error('Not guaranteed a root in interval [a,b]');

end

if abs(fa)<abs(fb)

fprintf('The root is probably closer to a than b\n');

else

abs(fa)>abs(fb);

fprintf('The root is probably closer to b than a\n');

end

while (b-a)/2>tol

c = (1-w)*a+w*b;

% fc = f(c); % not really needed

% if fc == 0

% return

% end

x = abs(a-c);

y = abs(c-b);

if f(a)*f(c)<0

b = c;

if x<y

itc = itc + 1;

end

else

a = c;

if y<x

itc = itc + 1;

end

end

it = it+1;

end

fprintf('Final interval: [%f, %f] with %d iterations and %d iterations where the root was in the smaller interval\n',a,b,it,itc)

end

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.