【发布时间】:2013-10-02 17:55:45
【问题描述】:
我知道如何在Matlab中编写牛顿法,但我还是很好奇Matlab中是否有任何内置的牛顿求解器?(或二分法?)
【问题讨论】:
标签: matlab newtons-method
我知道如何在Matlab中编写牛顿法,但我还是很好奇Matlab中是否有任何内置的牛顿求解器?(或二分法?)
【问题讨论】:
标签: matlab newtons-method
是的,有。
它被称为fsolve,它是Optimization Toolbox 的一部分。您可以根据文档将算法选择为 trust-region-dogleg(默认)、trust-region-reflective 或 Levenberg-Marquardt:
trust-region-reflective 算法是一种子空间 trust-region 方法,它基于 [1] 和 [2] 中描述的内部反射 Newton 方法。
为方便起见,参考如下:
[1] 科尔曼,T.F.和 Y. Li,“受限于边界的非线性最小化的内部信任区域方法”,SIAM 优化期刊,卷。 6,第 418-445 页,1996。
[2] 科尔曼,T.F.和 Y. Li,“关于有界的大规模非线性最小化的反射牛顿方法的收敛性”,数学规划,卷。 67,第 2 期,第 189-224 页,1994 年。
如 cmets 中所述,如果您想要一个使用 bisection method 的求解器,则有 fzero,文档指出使用二等分法、割线法和反二次插值法的组合。
【讨论】:
fsolve 本质上不是使用 NM 的“求解器”吗?也就是说,它找到了根源,不是吗?
lsqnonlin 例如也使用trust-region-reflective,但是,that 与寻根无关,但一切都与优化有关 :)