Sweet1123

Untitled

May 6th, 2022 (edited)
1,026
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.99 KB | None | 0 0
  1. def Fibonacci(a, b, counter, R):
  2.     print("\n===================Решение методом Фибоначчи===================")
  3.     Fn = (b - a) / E
  4.     n = 12
  5.     F = [0] * n
  6.     for i in range(n):
  7.         if i < 2:
  8.             F[i] = 1
  9.         else:
  10.             F[i] = F[i - 2] + F[i - 1]
  11.  
  12.     for k in range(n):
  13.         if k == 0 or k == 1:
  14.             L = a + (b - a) * F[9] / F[11]
  15.             M = a + (b - a) * F[10] / F[11]
  16.             if R(L) <= R(M):  # сокращение интервала неопределенности (использование одной из точек пред. итерации)
  17.                 a = L
  18.             else:
  19.                 b = M
  20.             print("\nИтерация ", counter)
  21.             print("L = ", L)
  22.             print("M = ", M)
  23.             print("R(L) = ", R(L))
  24.             print("R(M) = ", R(M))
  25.         if k > 1:
  26.             L = a + (b - a) * F[n - k - 1] / F[n - k + 1]
  27.             M = a + (b - a) * F[n - k] / F[n - k + 1]
  28.  
  29.             if R(L) < R(M):  # сокращение интервала неопределенности (использование одной из точек пред. итерации)
  30.                 a = L
  31.                 L = M
  32.                 M = a + F[n - k + 1] / F[n - k] * (b - a)
  33.             elif R(L) >= R(M):
  34.                 b = M
  35.                 M = L
  36.                 L = a + F[n - k - 2] / F[n - k] * (b - a)
  37.             print("\nИтерация ", counter)
  38.             print("L = ", L)
  39.             print("M = ", M)
  40.             print("R(L) = ", R(L))
  41.             print("R(M) = ", R(M))
  42.         counter += 1
  43.     ans = (a + b) / 2
  44.     FM = R(ans)
  45.     print('Значение функции в точке: ', FM)
  46.     print('Количество итераций: {counter}'.format(counter=counter))
  47.     print('Точка, в которой функция имеет экстремум: {ans}'.format(ans=ans))
  48.     print("================================================================")
Advertisement
Add Comment
Please, Sign In to add comment