Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多参数极小化函数_Python_Variables_Optimization_Minimize - Fatal编程技术网

Python 多参数极小化函数

Python 多参数极小化函数,python,variables,optimization,minimize,Python,Variables,Optimization,Minimize,我想最小化一个函数,以获得一些参数的值:a,e,I,ω,om,tp 我使用这个“模块”:docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html 我的函数有13个参数: 我从scipy导入:。优化导入最小化。然后我尝试将其最小化。然后出现错误: 有人能帮忙解决这个问题吗 PS:我一周前开始使用python,这可以解释程序的语法,不过我愿意改进自己 from numpy import * import n

我想最小化一个函数,以获得一些参数的值:a,e,I,ω,om,tp

我使用这个“模块”:docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html

我的函数有13个参数:

我从scipy导入:
。优化导入最小化
。然后我尝试将其最小化。然后出现错误:

有人能帮忙解决这个问题吗

PS:我一周前开始使用python,这可以解释程序的语法,不过我愿意改进自己

from numpy import *
import numpy as np
import scipy as sp
from scipy.optimize import minimize
import matplotlib.pyplot as plt
from pylab import *
from os import chdir
chdir("/Users/benjaminjaillant/Desktop")

def Chi_VLT(a,e,I,tp,Omega,om,Mbh,R0,Vr_bh,alpha_bh,V_alp_bh,delta_bh,V_del_bh):
    return sum(((Vr_etoile(t_vr_VLT*365*24*3600,a,e,I,tp,om,Mbh,Vr_bh)/1000)-vr_VLT)**2/vr_error_VLT**2) + sum(((alpha_etoile_IR(t_orbit_VLT*365*24*3600,a,e,I,tp,Omega,om,Mbh,alpha_bh,V_alp_bh,R0)*206264806.246)-Ra_VLT)**2/Ra_error_VLT**2) + sum(((delta_etoile_IR(t_orbit_VLT*365*24*3600,a,e,I,tp,Omega,om,Mbh,delta_bh,V_del_bh,R0)*206264806.246)-Dec_VLT)**2/Dec_error_VLT**2)


x0 = [1.5e14,0.8,2.5,63.10e9,4,1,8.5e36,2.5e20,2000,1.3e-8,-10e-18,2e-9,1.5e-17]

res = minimize(Chi_VLT, x0 , method='nelder-mead',options={'xtol': 1e-4,'maxiter':50 ,'disp': True})

print res.message
print res.x

最小化例程需要一个ndarray,比如
guess
,作为初始函数参数,并接受一个额外的参数元组x0,它可能构成代价函数中的系数。如果你重写CHI_VLT,将其作为第一个arg和一个ndarray,然后将其余的参数作为第一个arg和一个ndarray,那么它应该可以工作

res = minimize(CHI_VLT, guess, args=x0,...)

我猜你是在搞乱整件事

函数
scipy.optimize.minimize
接受两个必需的位置参数,
fun
x0

您需要
ndarray
as
x0

在您的例子中,您的fun
Chi_VLT
需要13个参数,您需要使用
args=(tuple,containing,13,items)


那么只有你才能最小化你的乐趣。

大家好:),我不知道如何编辑我的帖子。Î就在这里,在标签下面,请发布你函数的代码,而不是图片所有代码??阅读它不会太复杂吗?我们只需要相关且可复制的部分。从外观上看,优化器试图使用单参数x0(列表…)而不是其内容调用函数。您可以先尝试将x0转换为所需类型的nd数组。谢谢,伙计,我尝试过了,但现在的问题是:TypeError:minimize()最多需要12个参数(给定16个),我不知道python是如何工作的!谢谢,你的意思是我必须写:最小化(Chi_VLT,x0,args=(a,e,i…(13个参数)),方法='nelder-mead')?是的。没关系。我写道:x0=(1.5e14,0.8,2.5,63.10e9,4,1,8.5e36,2.5E202000,1.3e-8,-10e-18,2e-9,1.5e-17)res=最小化(Chi_VLT,x0,args=(a,e,I,tp,Omega,om,Mbh,R0,Vr_bh,alpha_bh,V_alp bh,delta_bh,V_del bh),V_bh),method='nelder-mead-options=(a,e,e,e,e,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,根据“a”、“e”程序。。没有定义