Scipy optimize.newton的初始步长硬编码为1e-4。使用具有不同步长的函数(理想情况下,指定为参数)的最佳方法是什么?
<p-panel>
<p-header>
<div>
Registration Form
<button type="button" pButton icon="fa-plus" style="float:right" label="Add">
</button>
</div>
</p-header>
</p-panel>
答案 0 :(得分:2)
初始步长不是1e-4
,而是abs(x0)*1e-4 + 1e-4
。例如,x0 = 1000将导致初始步骤0.1001。
如果目标是具有某个初始步长h
,则可以通过变量的线性变化来实现,x = x0 + 1e4*h*t
其中t
是新变量。就t
而言,起点为0.因此Newton的方法将采用1e-4大小的步长,x
转换为h
。< / p>
示例:
root = newton(lambda t: func(x0 + 1e4*h*t), 0) * 1e4 * h + x0
其中func
是原始函数。这将根据原始变量x返回根。