【发布时间】:2014-02-14 02:32:33
【问题描述】:
我试图在给定的时间间隔内最小化一个函数;在我的情况下,间隔是[-pi/2, pi/2]。
这是我在脚本中写的:
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当解超过区间的实际例子吗?以及结果的价值? -
回答我自己的评论,看起来
def g(x): return sin(0.5*x)已经符合要求了。 -
这是我的函数:-(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
-
嗯...,介意我坚持我的
sin(0.5*x)示例吗? ;-)。 -
我已经用您提供的输入和输出更新了您的问题。这比将其放入 cmets 更清楚,但我认为您还没有足够的声誉来自己编辑问题。
标签: python scipy mathematical-optimization