Я пытаюсь создать функцию MATLAB, которая вычисляет квадрат root любого положительного числа, используя эту формулу:
x (n + 1) = (a + x (n) * x ( n-1)) / (x (n) + x (n-1))
, а также сообщает мне значение n, при котором while-l oop в моей функции завершается.
Мне удалось создать функцию, которая вначале работала нормально, когда я вводил 16 и 100. Однако, когда я вводил значения, для которых root не является целым числом, функция не давала никаких решений.
function [sqa, nitr] = mySqrt(a)
n = 0;
sqa = (a+(n)*(n-1))/((n)+(n-1));
while abs(sqa - n) >= eps(10*a)
n = n + 1;
if n == 0
sqa = 1;
nitr = 0;
elseif n == 1
sqa = a;
nitr = 1;
else
sqa = (a+(n)*(n-1))/((n)+(n-1))
nitr = n;
end
end
>> [sqa, nitr] = mySqrt(100)
sqa =
10
nitr =
10
>> [sqa, nitr] = mySqrt(5)
Когда я ввожу значение, которое root не является целым числом, функция не завершается, и мне приходится завершать ее вручную. Я не смог выяснить причину этого.