最小化函数系数python

时间:2015-11-14 18:21:30

标签: python numpy scipy mathematical-optimization

我无法选择,并使最小化功能在scipy中工作。我有一个下面定义的四阶多项式和D,F和Z的值。我需要求解系数a,使得函数的计算结果接近于0.然后这个函数可以用来模拟Z的D和F输入。

我在这里查看了选项 http://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html

Nelder-Mead和BFGS算法无法接近解决问题。我不确定我是否正在为这些方法解决一个过于复杂的函数,或者我做错了什么。对于超出这个范围的方法,我不知道我需要做些什么来计算Hessian,以及是否有一种pythonic方法来计算它。

import numpy as np
from scipy.optimize import minimize
import scipy
def func(a,Z,D,F):
    return -Z + a[0]+\
        a[1]*F +\
        a[2]*(F)**2 +\
        a[3]*(1-a[6]/D)*(F) +\
        a[4]*(1-a[6]/D)**2 + \
        a[5]*(F)**3+\
        a[7]*((1-a[6]/D))*((F)**2)+\
        a[8]*((1-a[6]/D)**2)*((F))+\
        a[9]*((1-a[6]/D)**3)+\
        a[10]*((F)**4)+\
        a[11]*((1-a[6]/D))*((F)**3)+\
        a[12]*((1-a[6]/D)**2)*((F)**2)+\
        a[13]*((1-a[6]/D)**3)*((F))+\
        a[14]*((1-a[6]/D))*((F)**4)+\
        a[15]*((1-a[6]/D)**2)*((F)**3)+\
        a[16]*((1-a[6]/D)**3)*((F)**2)+\
        a[17]*((1-a[6]/D)**2)*((F)**4)+\
        a[18]*((1-a[6]/D)**3)*((F)**3)+\
        a[19]*((1-a[6]/D)**3)*((F)**4)
a0=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
res = minimize(func, a0,args=(56,35.0,.036),  method='BFGS')
print(res.fun,res.x)

0 个答案:

没有答案