2016-05-17 2 views
1

я хочу найти минимум функции с 3 аргументами, но хочу, чтобы исправить два и изменяться только один из них, например,Fmin функция питона с несколькими аргументами

def f(x, y, z): 
    result = f(x,y,z) 
    return result 

y и z являются константами. x - единственный параметр, который я хочу изменить.

optimize.fmin (http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.optimize.fmin.html) кажется идеальным для этого, но в документации неясно, как указать, какие параметры являются константами и которые должны меняться. Любые намеки о том, как это сделать

+1

Ваш код приведет к бесконечной рекурсии, и я не уверен, что вы подразумеваете под «x - параметр, который я хочу изменить». Вы можете уточнить, что именно вы делаете с 'x'? – Blckknght

+0

Скажем, я знаю, что x находится в пределах 0 и 1000 и, и для заданных y и z функция f (x, y, z) будет производить u-образную функцию (x-окс. От 0 до 1000). Я хочу найти значение x, которое дает мне «результат», значение которого является минимальным. Заметим, что f (x, y, z) является общей функцией. –

+0

http://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.optimize.fmin.html –

ответ

1

оптимизируют всегда принимает первый аргумент, это тот, который изменяется, а остальные должны быть установлены заранее, либо путем создания частичной функции или путем передачи дополнительных аргументов в args, таким образом

print fmin(foo, x0=..., args={'y': ..., 'z': ...}) 
+0

Спасибо Lejot –

Смежные вопросы