Предмет: Информатика,
автор: zzzPhenomenalOnezzz
В чём ошибка (метод простых итераций) делает одну итерацию
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):
iters+=1
x0=x1
x1=fun(x0)
print('Точное значение корня:',2.0926)
print('Вычисленное значение корня:',x1)
print('Число итераций:',iters)
Giammy:
В след. раз прикрепляйте фото или документ с кодом, на сайте сломана табуляция, код не разобрать.
В смысле, мне считать одну итерацию за ошибку или найти ошибки в коде?
Вот ошибочка вылетает: 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
return (2-0.4*x**2)**0.5+math.cos(x)
ValueError: negative number cannot be raised to a fractional power
"Негативные числа не могут быть возведены в дробную степень."
Так, стоп.
Нашел в чем была ошибка
Ну вот)
Ответы
Автор ответа:
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)
Вот так вот. Одни скобочки поворачивают ответ вспять. Если бы вы написали, что вы хотели сделать, я, может, бы "допер". А так..
Похожие вопросы
Предмет: Қазақ тiлi,
автор: dariakairgeldy
Предмет: Физика,
автор: leratkachenko0252
Предмет: Алгебра,
автор: ghjgivh
Предмет: Математика,
автор: honeyzhany
Предмет: Алгебра,
автор: arturzakharov