牛顿法与Continuation Method
计算结果:
x 0 = − 2.17731898 x_0=-2.17731898 x0=−2.17731898:
方法 | 新的初值 x ^ \hat{x} x^ | 迭代次数 k k k | 最终近似解 x x x |
---|---|---|---|
直接Newton迭代 | null | 18 | -1.7875e-04 |
显式Euler | 0.0883 | 3 | 2.1833e-17 |
隐式Euler | -0.0742 | 3 | -1.2746e-16 |
梯形公式法 | 0.0039 | 3 | -2.0296e-16 |
4级4阶Runge-Kutta方法 | 0.0132 | 3 | -1.0407e-16 |
x 0 = − 4 x_0=-4 x0=−4:
方法 | 新的初值 x ^ \hat{x} x^ | 迭代次数 k k k | 最终近似解 x x x |
---|---|---|---|
直接Newton迭代 | null | null | 不收敛 |
显式Euler | 0.6657 | 4 | -1.0015e-17 |
隐式Euler | -0.2119 | 3 | 1.0647e-16 |
梯形公式法 | 0.0988 | 3 | -1.5607e-16 |
4级4阶Runge-Kutta方法 | 0.0669 | 3 | 1.1912e-16 |
以上算法在求解常微分方程非显示格式时,使用Newton迭代法,精读tol’=1e-3.
总结:
- 在求解非线性方程组时,在选取初值不甚恰当的情况下直接使用Newton迭代法会导致迭代步数多但精度低的问题(如第一个表中 k = 18 , x = − 1.7875 e − 04 k=18,\ x=-1.7875e-04 k=18, x=−1.7875e−04),甚至可能出现更坏的情况:不收敛( x 0 = − 4 x_0=-4 x0=−4)。
- 倘若能根据上课提到的“预处理”的方法,根据最开始的初值 x 0 x_0 x0得到一个较为精确的初值 x ^ \hat{x} x^,比如这次作业中先将求解方程的根的问题转化为求解一个常微分方程的问题,得到一个近似解 x ^ \hat{x} x^, 再把它作为初值使用Newton迭代,就可以减少迭代次数而大大增加最终求得解的精度(当然在实际中应将计算常微分方程的代价考虑在内),而相比于第二种情况下较远的初值不收敛的问题有了巨大的改进。
- 常微分方程求解方法的选择会影响 x ^ \hat{x} x^的精度,进而影响Newton法迭代次数和最终解的精度。从数值实验结果来看,一般来说常微分方程求解方法精度越高,求得的 x ^ \hat{x} x^越精确,最终Newton法迭代次数越小,解的精度越高。这是符合理论分析的。
- 在问题的分析中还应考虑计算常微分方程的代价。综合考虑得出结论:实际问题中可以先“粗略地”(步长 h h h不必很小,同时选取合适的解法)求解常微分方程,再将解作为初值进行Newton迭代,这样既能提高精度、减少迭代次数、减小对初值选取的依赖,又能使计算代价不至于太大。