【发布时间】:2017-02-06 23:08:46
【问题描述】:
我想找到可以最小化函数的some_arg 值。
1) 进口
from scipy import optimize
import math as m
2) 计算原始 2*sin(t) 数据
time_steps = list(range(0,20))
def my_sin(time_steps):
sin_data = list()
for time_step in time_steps:
sin_data.append(2*m.sin(time_step))
return sin_data
my_sin_data = my_sin(time_steps)
3) 我想最小化设置错误
def fun_to_brute(z, *params):
some_argument = z
sum_of_errors = 0
for time_step in params[0]:
sum_of_errors = sum_of_errors + some_argument*m.sin(time_step) - params[1][time_step]
return sum_of_errors
4) 终于开始暴力破解
rranges = [slice(-4, 4, 0.25)]
params = (time_steps, my_sin_data)
resbrute = optimize.brute(fun_to_brute, rranges, args = params, full_output=True)
但是我得到的结果是错误的。我想要蛮力使some_arg值为2,在这种情况下sum_of_errors_必须等于0。
但是 resbrute[0] 返回一些奇怪的值
【问题讨论】:
-
为什么会有熊猫?它无处不在......
-
尝试将
finish=None添加到otpimize.brute -
没有帮助。 resbrute[0] = 0(必须为 2)
标签: python optimization scipy brute-force