В чём ошибка (метод простых итераций) делает одну итерацию import math def fun(x): return...

0 голосов
178 просмотров

В чём ошибка (метод простых итераций) делает одну итерацию
import math

def fun(x):
return (2-0.4*x**2)**0.5+math.cos(x)

x1=float(input("Введите приближенное значение Х="))
e=float(input("Введите точность e="))
a=float(input("a="))
b=float(input("b="))
a=abs((fun(a+0.0001)-fun(a))/0.0001)
b=abs((fun(b+0.0001)-fun(b))/0.0001)
q=max(a,b)
q=(1-q)/q
iters=0
x0=x1
x1=fun(x0)
while abs(x1-x0) <= abs(q*e):<br> iters+=1
x0=x1
x1=fun(x0)
print('Точное значение корня:',2.0926)
print('Вычисленное значение корня:',x1)
print('Число итераций:',iters)


Информатика (280 баллов) | 178 просмотров
0

В след. раз прикрепляйте фото или документ с кодом, на сайте сломана табуляция, код не разобрать.

0

В смысле, мне считать одну итерацию за ошибку или найти ошибки в коде?

0

Вот ошибочка вылетает: line 3, in fun return (2-0.4*x**2)**0.5+math.cos(x)ValueError: negative number cannot be raised to a fractional power

0

"Негативные числа не могут быть возведены в дробную степень."

0

Так, стоп.

0

Нашел в чем была ошибка

0

Ну вот)

Дан 1 ответ
0 голосов

Где задается функция:

def fun(x):

   return ((2-0.4)*x**2**0.5)+math.cos(x)

Поставьте в скобочки.

Кстати, возможно, что вы хотели возвести (0.4*x) во вторую степень, а не 1.6:

return (2-(0.4*x)**2**0.5)+math.cos(x)

Вот так вот. Одни скобочки поворачивают ответ вспять. Если бы вы написали, что вы хотели сделать, я, может, бы "допер". А так..

(324 баллов)