可以用来求解方程的近似解.
比较常见的就是求解平方根。
比如求解x^2=a
原理:设一个点(猜想点)坐标为(x, x^2-a),求出该点在曲线上的切线与x轴的交点,求导可以得到直线斜率,然后可以写出直线方程,一直迭代下去可以得到近似解。
比如求x^2=2
猜想解为4。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define mem(a) memset(a, 0, sizeof(a))
using namespace std;
int main()
{
double x=4, ans=1;
for(int i=1;i<=100000;++i)
{
ans=(2/x+x)/2;
x=ans;
}
printf("%.10f\n", ans);
return 0;
}
结果: 1.4142135624
准确值:1.41421356237