Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. def method(start, end, eps):
  2.     x1 = start
  3.     x2 = end
  4.     i = 1
  5.     # Проверка на наличие корня
  6.     if f(x1) * f(x2) > 0:
  7.         return -1, 0, 0
  8.     # Проверка границ интервала
  9.     if f(x1) == 0:
  10.         return 0, x1, i
  11.     # if f(x2) == 0:
  12.         #return (0, x2, i)
  13.     while abs(x2 - x1) > eps:
  14.         if df(x2) == 0 or f(x2) - f(x1) == 0:
  15.             return -3, 0, i
  16.         x1 -= (x2 - x1) * f(x1) / (f(x2) - f(x1))
  17.         x2 -= f(x2) / df(x2)
  18.         i += 1
  19.         if x2 > end or x2 < start:
  20.             return -2, 0, i
  21.     return 0, (x1 + x2) / 2, i
  22. def table():
  23.     i = 1
  24.     a = start.get()
  25.     b = end.get()
  26.     h = step.get()
  27.     x1 = a
  28.     x2 = a + h
  29.     head = "         № инт.                       Интервал                                     Корень                      Значение ф-ции         Кол-во итераций Ошибка\n"
  30.     err = 0
  31.     k= float("-inf")
  32.     # основной цикл
  33.     while x1 < b:
  34.         if err != -1:
  35.                 head += "\n"
  36.         err, k, iters = method(x1, x2, eps.get())
  37.         if err <= -2:
  38.             head += "           {:^7}[{:^28.2g};{:^25.2g}]              0                                                                                                           {:^7}\n".format(i, x1, x2, -err)
  39.         elif err != -1:
  40.             head += "           {:^7}[{:^28.2g};{:^25.2g}]{:^31g}{:^44.0e}   {:^32}         \n".format(i, x1, x2, k, f(k), iters, -err)
  41.         # итерируем
  42.         i += 1
  43.         x1 = x2
  44.         x2 += h
  45.         if x2 > b:
  46.             x2 = b
  47.     head += "\nОшибка 2: Выход за пределы интервала при нахождении касательной;\nОшибка 3: Деление на ноль."
  48.     return head
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement