Scipy优化牛顿割线方法

时间:2017-07-27 17:54:01

标签: python optimization scipy newtons-method

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>

1 个答案:

答案 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返回根。