一、牛顿法概念
二、图形示例
牛顿法以点的切线与x轴的交点作为下一次迭代的 ,依次类推,逐渐逼近。
二、牛顿法特点
牛顿法的优点是收敛速度快,特别是当接近根的时候。然而,它也有以下缺点:
- 需要计算函数的导数。
- 收敛速度和初始猜测值的选择有很大关系,如果初始值选择不当,可能会导致不收敛。
- 对于多根的方程,可能会收敛到非期望的根。
三、示例
以方程 为例
迭代公式:
迭代次数0:令
迭代次数1:
依次类推,,,
四、代码
/*********
求解方程:f(x) = x^2 - 115
迭代公式:x_(k+1) = x_(k) - (x_(k)^2 - 115)/2*x_(k);
*/#include <cmath>
#include <iostream>bool NewTon(const float x, float& next_x) {const float e = 0.001;float fx = x*x - 115;if(std::fabs(fx) <= e) { //迭代终止条件return false;}next_x = x - fx/(2 * x);return true;
}int main() {float x = 5.0;std::cout << "迭代次数:0: x = " << x << std::endl;int iteration = 500;while (iteration-- > 0) {if(!NewTon(x, x)) {break;}std::cout << "迭代次数:" << 500 - iteration << ", x = " << x << std::endl;}std::cout << "最终结果: x = " << x << std::endl;return 0;
}
输出结果:
迭代次数:0: x = 5
迭代次数:1, x = 14
迭代次数:2, x = 11.1071
迭代次数:3, x = 10.7304
迭代次数:4, x = 10.7238
最终结果: x = 10.7238