Я новичок в Matlab / программировании в целом. Я хочу написать программу / скрипт, который использует рекурсивный бинарный поиск для аппроксимации корня $ 2x - 3sin (x) + 5 = 0 $, так что итерация завершается, когда ошибка усечения определенно $ <0.5 \ times 10 ^ { -5} $ и распечатать количество итераций, а также оценку корня. </p>
Вот моя попытка, которая, кажется, сломала мой компьютер ...
%Approximating the root of f(x) = 2*x - 3*sin(x) + 5 by binary search
%Define variables
low = input('Enter lower bound of range: ');
high = input('Enter upper bound of range: ');
mid = (low + high)/2;
%Define f_low & f_high
f_low = 2*low - 3*sin(low) + 5;
f_high = 2*high - 3*sin(high) + 5;
f_mid = 2*mid - 3*sin(mid) + 5;
%Check that the entered range contains the key
while (f_low * f_high) > 0 || low > high
disp('Invalid range')
low = input('Enter lower bound of range: ');
high = input('Enter upper bound of range: ');
end
%The new range
while abs(f_mid) > 0.5*10^(-5)
if f_mid < 0
low = mid;
elseif f_mid > 0
high = mid;
end
end
fprintf('mid = %.4f \n', mid)
Я даже не добавил бит подсчета количества итераций (что я не совсем уверен, как это сделать), и уже застрял.
Спасибо за любую помощь.