Help with my bisection method of a certain function!

Hello, I am a new user of MatLab and recently had to write up a bisection method program for the function f(x) = x + 2*cos(x).
This is what I got:
function[f] = hw3_bisection(tol,N,a,b)
f = @(x) (x + 2*cos(x));
for counter = 1:N
x = (a+b)/2;
while abs(f(x)) < tol
x = (a+b)/2;
if f(x) == 0
f = x;
end
if f(a) * f(x) > 0
a = x;
else
b = x;
end
end
end
but the problem for me is that the output is always x + 2*cos(x), and even if I say disp(x) it gives me ans = x + 2*cos(x) and the (a+b)/2 without going through the rest of the loop. How do I fix this to get the real solution?

 採用された回答

Matt J
Matt J 2014 年 9 月 27 日

0 投票

You are using 'f' for 2 different things in your function. Use a different variable for the value returned by the function.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStartup and Shutdown についてさらに検索

質問済み:

2014 年 9 月 27 日

回答済み:

2014 年 9 月 27 日

Community Treasure Hunt

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

Start Hunting!

Translated by