1. fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None, initial_simplex=None)
参数说明:
func : (可调用 func(x,*args) )
要最小化的目标函数。
x0 : ndarray
初步猜测值(也就是初始值)
args : tuple(元组), 可选
传递给func的额外参数 i.e. ``f(x,*args)``.
xtol:float,可选
迭代之间xopt中的绝对误差是可接受的收敛。
ftol:number(数字),可选
可接受的迭代之间的func(xopt)中的绝对错误收敛。
maxiter:int,可选
要执行的最大迭代次数。
maxfun:数字,可选
要进行的最大功能评估数。
full_output:bool,可选
如果需要fopt和warnflag输出,则设置为True。
disp:bool,可选
设置为True以打印收敛消息。
retall:bool,可选
设置为True以在每次迭代时返回解决方案列表。
callback:可调用,可选
在每次迭代后调用,作为回调(xk),其中xk是当前参数向量。
initial_simplex:shape_like of shape(N + 1,N),可选
最初的单纯形。如果给定,则覆盖`x0`
fmin_tnc(func, x0, fprime=None, args=(), approx_grad=0, bounds=None, epsilon=1e-08, scale=None, offset=None, messages=15, maxCGit=-1, maxfun=None, eta=-1, stepmx=0, accuracy=0, fmin=0, ftol=-1, xtol=-1, pgtol=-1, rescale=-1, disp=None, callback=None)
func:callable``func(x,* args)``
功能最小化。必须做到以下之一:
1.返回f和g,其中f是函数的值,g是其值
渐变(浮动列表)。
2.返回功能值但提供梯度功能
分别作为`fprime`。
3.返回函数值并设置``approx_grad = True``。
如果函数返回None,则最小化
被中止了。
x0:array_like
初步估计最低限度。
fprime:可调用``fprime(x,* args)``,可选
`func'的渐变。如果为None,那么`func`必须返回
函数值和渐变(``f,g = func(x,* args)``)
或者`approx_grad`必须为True。
args:元组,可选
传递给函数的参数。
approx_grad:bool,可选
如果为真,则以数字方式逼近梯度。
bounds:list,optional
x0中每个元素的(min,max)对,定义了
该参数的边界。使用None或+/- inf作为其中之一
在该方向没有约束时的最小值或最大值。
epsilon:float,可选
如果approx_grad为True,则使用。有限的步长
fprime的差异近似。
scale:array_like,可选
缩放因子应用于每个变量。如果没有,那么
区间有界变量的因子是上升的
1 + | X |为了其他人。默认为无。
offset:array_like,可选
从每个变量中减去的值。如果没有,那么
对于区间有界变量,偏移是(向上+低)/ 2
和x为其他人。
messages :int,可选
位掩码用于选择消息显示期间
MSGS dict中定义的最小化值。默认为
MGS_ALL。
disp:int,可选
消息的整数接口。 0 =没有消息,5 =所有消息
maxCGit:int,可选
每个主要的最大粗麻数*向量评估数
迭代。如果maxCGit == 0,则选择的方向为
-gradient如果maxCGit <0,则maxCGit设置为
MAX(1,分钟(50,N / 2))。默认为-1。
maxfun:int,可选
最大功能评估数。如果没有,maxfun是
设置为max(100,10 * len(x0))。默认为无。
eta:浮动,可选
行搜索的严重性。如果<0或> 1,则设置为0.25。
默认为-1。
stepmx:float,可选
行搜索的最大步骤。可能会增加
呼叫。如果太小,则将设置为10.0。默认为0。
accuracy:浮动,可选
有限差分计算的相对精度。如果
<= machine_precision,设置为sqrt(machine_precision)。
默认为0。
fmin:float,可选
最小函数值估计。默认为0。
ftol:float,可选
停止标准中f值的精确目标。
如果ftol <0.0,则将ftol设置为0.0,默认为-1。
xtol:float,可选
停止时x值的精确目标
标准(应用x缩放因子后)。如果xtol <
0.0,xtol设置为sqrt(machine_precision)。默认为
-1。
pgtol:float,可选
投影梯度值的精确目标
停止标准(应用x缩放因子后)。
如果pgtol <0.0,则pgtol设置为1e-2 * sqrt(精度)。
建议不要将其设置为0.0。默认为-1。
escale:float,可选
用于触发f值的缩放系数(以log10为单位)
重新调整。如果为0,则在每次迭代时重新缩放。如果大
价值,永远不会重新缩放。如果<0,则rescale设置为1.3。
callback:可调用,可选
在每次迭代后调用,作为回调(xk),其中xk是
当前参数向量。
minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
最小化一个或多个变量的标量函数。
一般来说,优化问题的形式是::
最小化f(x)受制于
g_i(x)> = 0,i = 1,...,m
h_j(x)= 0,j = 1,...,p
其中x是一个或多个变量的向量。
``g_i(x)``是不等式约束。
``h_j(x)``是等式约束。
可选地,x中每个元素的下限和上限也可以是
使用`bounds`参数指定。
fun:可赎回
要最小化的目标函数。必须在表格中
``f(x,* args)``。优化参数``x``是一维数组
点和``args``是任何其他固定参数的元组
需要完全指定功能。
x0:ndarray
初步猜测。 ``len(x0)``是最小化的维数
问题。
args:元组,可选
传递给目标函数及其的额外参数
衍生物(Jacobian,Hessian)。
method:str或callable,可选
求解器的类型。应该是其中之一
jac:bool或callable,可选
雅可比(梯度)的目标函数。仅适用于CG,BFGS,
Newton-CG,L-BFGS-B,TNC,SLSQP,dogleg,trust-ncg,trust-krylov,
信任区域 - 确切。
如果`jac`是布尔值并且为True,则假定`fun`返回
梯度与目标函数一起。如果是假,那么
梯度将用数字估算。
`jac`也可以是一个可调用的返回渐变的
目的。在这种情况下,它必须接受与“fun”相同的参数
hess,hessp:可调,可选
Hessian(二阶导数矩阵)的目标函数或
目标函数的Hessian乘以任意向量p。仅适用于
Newton-CG,dogleg,trust-ncg,trust-krylov,trust-region-exact。
只需要给出'hessp`或`hess`中的一个。如果`hess`是
提供,那么`hessp`将被忽略。如果既不是'hess`也不是
提供`hessp`,然后将近似Hessian产品
在`jac`上使用有限差分。 `hessp`必须计算Hessian
乘以任意向量。
bounds:sequence,optional
变量的界限(仅适用于L-BFGS-B,TNC和SLSQP)。
``(min,max)````x``中每个元素的对,定义
该参数的界限。 对于“min”或其中一个使用None
``max``当那个方向没有界限时。
constraints:dict或dict序列,可选
约束定义(仅适用于COBYLA和SLSQP)。
每个约束都在字典中用字段定义:
类型:str
约束类型:'eq'表示相等,'ineq'表示不等式。
乐趣:可赎回
定义约束的函数。
jac:可调用,可选
“有趣”的雅可比行列式(仅适用于SLSQP)。
args:序列,可选
要传递给函数和Jacobian的额外参数。
等式约束意味着约束函数结果是
为零而不平等意味着它是非负的。
请注意,COBYLA仅支持不等式约束。
tol:float,可选
容忍终止。要进行详细控制,请使用特定于求解器
选项。
options:dict,可选
求解器选项的字典。所有方法都接受以下内容
通用选项:
maxiter:int
要执行的最大迭代次数。
disp:bool
设置为True以打印收敛消息。
有关特定于方法的选项,请参阅:func:`show_options()`。
callback:可调用,可选
在每次迭代后调用,作为``callback(xk)``,其中``xk``是
当前参数向量。
读取、写入.mat数据
data = scipy.io.loadmat('filename.mat') # 读取.mat文件
data.keys() # 查看.mat文件中的所有变量名
sio.savemat('saveddata.mat', {'x': x,'y': y,'z': z}) #将数据写入名为saveddata.mat 的mat文件保存,后边带引号的为变量名,不带引号的为具体的内容。