擅长:python、mysql、java
<p>编写新Scipy函数<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.least_squares.html" rel="nofollow noreferrer">least_squares</a>的主要原因是允许变量的上下界(也称为“框约束”)。这是一个强烈要求的功能。在</p>
<p>这个看似简单的添加实际上远不是琐碎的,需要全新的算法,特别是dogleg(<code>method="dogleg"</code>中的<code>least_squares</code>)和信任域反射(<code>method="trf"</code>),它们允许对框约束进行健壮和有效的处理(有关算法的详细信息请参阅相关Scipy<a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.least_squares.html" rel="nofollow noreferrer">documentation </a>)。在</p>
<p>同样重要的是对大规模问题和稀疏雅可比的支持。在</p>
<p>当不需要变量的边界,并且问题不是很大时,新Scipy函数<code>least_squares</code>中的算法与旧的<code>leastsq</code>中使用的Levenberg-Marquardt-MINPACK实现相比几乎没有优势(如果有的话)。在</p>
<p>但是,旧的<code>leastsq</code>和新的<code>least_squares</code>使用选项<code>method="lm"</code>调用相同的minpackfortran代码。由于这个原因,旧的<code>leastsq</code>现在已被废弃,不建议用于新代码。在</p>