Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def method(start, end, eps):
- x1 = start
- x2 = end
- i = 1
- # Проверка на наличие корня
- if f(x1) * f(x2) > 0:
- return -1, 0, 0
- # Проверка границ интервала
- if f(x1) == 0:
- return 0, x1, i
- # if f(x2) == 0:
- #return (0, x2, i)
- while abs(x2 - x1) > eps:
- if df(x2) == 0 or f(x2) - f(x1) == 0:
- return -3, 0, i
- x1 -= (x2 - x1) * f(x1) / (f(x2) - f(x1))
- x2 -= f(x2) / df(x2)
- i += 1
- if x2 > end or x2 < start:
- return -2, 0, i
- return 0, (x1 + x2) / 2, i
- def table():
- i = 1
- a = start.get()
- b = end.get()
- h = step.get()
- x1 = a
- x2 = a + h
- head = " № инт. Интервал Корень Значение ф-ции Кол-во итераций Ошибка\n"
- err = 0
- k= float("-inf")
- # основной цикл
- while x1 < b:
- if err != -1:
- head += "\n"
- err, k, iters = method(x1, x2, eps.get())
- if err <= -2:
- head += " {:^7}[{:^28.2g};{:^25.2g}] 0 {:^7}\n".format(i, x1, x2, -err)
- elif err != -1:
- head += " {:^7}[{:^28.2g};{:^25.2g}]{:^31g}{:^44.0e} {:^32} \n".format(i, x1, x2, k, f(k), iters, -err)
- # итерируем
- i += 1
- x1 = x2
- x2 += h
- if x2 > b:
- x2 = b
- head += "\nОшибка 2: Выход за пределы интервала при нахождении касательной;\nОшибка 3: Деление на ноль."
- return head
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement