Я пытаюсь свести к минимуму функцию в заданном интервале; в моем случае интервал [-pi/2, pi/2]
.Минимизировать функцию в заданном интервале с помощью scipy.optimize.brute
Вот что я писал в моем сценарии:
ranges = slice(-pi/2, pi/2, pi/200)
res = optimize.brute(g, (ranges,))
с
def g(x):
# z and a are global
(-(z+1) * (((a/4) * (3*cos(x/3) + cos(3*x/2)) +
(b/4) * (-3*sin(x/2)-3*sin(3*x/2)))**2 +
((a/4) * (sin(x/3) + sin(3*x/2)) + (b/4)*
(cos(x/2) + 3*cos(3*x/2)))**2) + 4*(c*cos(x/2))**2)
и результатом res
является
array([-3.14159265])
Проблемой я встречаю во время черчения моих решений является то, что некоторые из решений минимизации находятся за пределами интервала [-pi/2, pi/2]
. Любая помощь?
У вас есть практический пример 'g', когда решение превышает интервал? И ценность результатов? – Evert
Чтобы ответить на мой собственный комментарий, выглядит как 'def g (x): return sin (0.5 * x)' уже соответствует счету. – Evert
вот моя функция: - (z + 1) * (((a/4) * (3 * cos (x/3) + cos (3 * x/2)) + (b/4) * (- 3 * Sin (х/2) -3 * Sin (3 * х/2))) ** 2 + ((а/4) * (син (х/3) + Sin (3 * х/2)) + (b/4) * (cos (x/2) + 3 * cos (3 * x/2))) ** 2) + 4 * (c * cos (x/2)) ** 2 – Abdallah