Я пытаюсь сделать квадратный корень, используя алгоритм Ньютона-Рафсона случайных чисел, заданных этой формулой: a = m * 10 ^ c, где m - случайное число с плавающей точкой в диапазоне (0,1), а c - случайное целое число в диапазоне (-300300).Код, который я написал, прекрасно работает с точностью до корня 0,01 и c в диапазоне (-30,30), но останавливает или возвращает неверные результаты, когда я использую диапазон c, указанный в задаче.
здесь приведен код функции newton def newton_raphson.(a): iterations_count = 0
x_n_result = a/2
while abs(x_n_result - a / x_n_result) > 0.01:
x_n_result = (x_n_result + a/x_n_result)/2
iterations_count = iterations_count + 1
if x_n_result*x_n_result == a:
break
iterations.append(iterations_count)
results.append(x_n_result)
print("Result of function", x_n_result)
return
и часть, где числа к корню рандомизированы
for i in range(0, 100):
m = random.uniform(0, 1)
c = random.randint(-30, 30)
a = m * 10 **c
random_c.append(c)
numbers.append(a)
print("Number to root : ", i, "|", a, '\n')
newton_raphson(a)
график количества итераций от значения c
plt.bar(random_c, iterations, color='red')
Предполагается, что скрипт выкорчевывает 100 случайных чисел, а затем вычерчивает количество итераций, необходимых для получения корня из значений c.Проблема, как я уже говорил, с правильным диапазоном значения c.Я считаю, что это связано с диапазоном переменных.Любое предложение, как решить эту проблему?