Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Математика, метод половинного деления

Светлана Иноземцева Ученик (124), закрыт 9 месяцев назад
Решить трансцендентное уравнение методом половинного деления: 2x²-sinx-1=0
Лучший ответ
Ксения Райт Гений (85969) 10 месяцев назад
Смотрим где расположены корни этого уравнения:Отрицательный корень находится в отрезке [-1;0], положительный - в отрезке [0;1] и больше корней нет. Если отрезки существования единственного корня не разделить заранее, то метод половинного деления в отношении сразу двух или нескольких корней может не сработать.
Пишем код:
 from math import sin 
def f(x): return 2 * x * x - sin(x) - 1
def sign(x): return 1 if x > 0 else 0
while True:
a, b = map(float, input('a b: ').split())
n, signa = 0, sign(f(a))
while b - a > 1e-15:
x = (a + b) / 2; n += 1; y = f(x)
if sign(y) == signa: a = x
else: b = x
print('%2d)%22.16f%26.16e' % (n, x, y))
, запускаем программу на счёт, вводим границы отрезка и получаем результаты (в левой колонке номер итерации, в средней - приближённое значение корня, а в правой - значение функции, ноль которой ищется):А вот что будет для положительного корня:
Остальные ответы
Похожие вопросы