Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def Fibonacci(a, b, counter, R):
- print("\n===================Решение методом Фибоначчи===================")
- Fn = (b - a) / E
- n = 12
- F = [0] * n
- for i in range(n):
- if i < 2:
- F[i] = 1
- else:
- F[i] = F[i - 2] + F[i - 1]
- for k in range(n):
- if k == 0 or k == 1:
- L = a + (b - a) * F[9] / F[11]
- M = a + (b - a) * F[10] / F[11]
- if R(L) <= R(M): # сокращение интервала неопределенности (использование одной из точек пред. итерации)
- a = L
- else:
- b = M
- print("\nИтерация ", counter)
- print("L = ", L)
- print("M = ", M)
- print("R(L) = ", R(L))
- print("R(M) = ", R(M))
- if k > 1:
- L = a + (b - a) * F[n - k - 1] / F[n - k + 1]
- M = a + (b - a) * F[n - k] / F[n - k + 1]
- if R(L) < R(M): # сокращение интервала неопределенности (использование одной из точек пред. итерации)
- a = L
- L = M
- M = a + F[n - k + 1] / F[n - k] * (b - a)
- elif R(L) >= R(M):
- b = M
- M = L
- L = a + F[n - k - 2] / F[n - k] * (b - a)
- print("\nИтерация ", counter)
- print("L = ", L)
- print("M = ", M)
- print("R(L) = ", R(L))
- print("R(M) = ", R(M))
- counter += 1
- ans = (a + b) / 2
- FM = R(ans)
- print('Значение функции в точке: ', FM)
- print('Количество итераций: {counter}'.format(counter=counter))
- print('Точка, в которой функция имеет экстремум: {ans}'.format(ans=ans))
- print("================================================================")
Advertisement
Add Comment
Please, Sign In to add comment