导数和牛顿迭代
$\ \ \ \ \ \ \ \,$关于导数和牛顿迭代的复习笔记:
导数
$\ \ \ \ \ \ \,$导数是描述一个函数的变化情况的函数,函数$f$的导数记作$f’$。
$\ \ \ \ \ \ \,$导数(英语:Derivative)是微积分学中重要的基础概念。一个函数在某一点的导数描述了这个函数在这一点附近的变化率。导数的本质是通过极限的概念对函数进行局部的线性逼近$\ \ \ \ \ \ $——wiki。
导数的运算法则
$(f+g)’=f’+g’$
$(f-g)’=f’-g’$
$(f\cdot g)’=f’\cdot g’$
$(af)’=af’$
$(fa)’=f’a+a\cdot f’$
$(f/g)’=\frac{f’\cdot g-f\cdot g’}{g^2}$
常见函数的导数
$(x^k)’=kx^{k-1}$
$(a^x)’=a^x\cdot \ln a$
$(e^x)’=e^{x}$
$(\log _a x)’=\frac{1}{x \cdot \ln a}$
$(\ln x)’=\frac{1}{x}$
$(\sin x)’=\cos x$
$(\cos x)’=-\sin x$
$(\tan x)’=\sec ^2x$
$(\cot x)’=-\csc ^2x$
$(\sec x)’=\tan x\cdot\csc x$
$(\csc x)’=-\cot x\cdot\csc x$
$(\arcsin x)’=\frac{1}{\sqrt{1-x^2}}$
$(\arccos x)’=-\frac{1}{\sqrt{1-x^2}}$
$(\arctan x)’=\frac{1}{1-x^2}$
$({\rm arccot}\ x)’=-\frac{1}{1-x^2}$
$({\rm sh}\ x)’={\rm ch}\ x$
$({\rm ch}\ x)’={\rm sh}\ x$
牛顿迭代
$\ \ \ \ \ \ \,$这里简单地讲一下 一阶牛顿迭代 ,牛顿迭代是应用在最优化领域非常重要的一种算法,由于具有二阶收敛性,所以相比二分法能大大降低迭代次数,只能求一个可导函数的零点,或者有二阶导函数的极值,一种全局搜索算法用来解np问题最优解的算法,在算法竞赛中的运用比较少见(Psyduck说)。
$\ \ \ \ \ \ \,$先放wiki的动图,牛顿迭代动态示例图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CIMMV2UR-1644815019693)(https://upload.wikimedia.org/wikipedia/commons/e/e0/NewtonIteration_Ani.gif)]
$\ \ \ \ \ \ \,$容易看出一个重要问题:对函数的一个点做切线,这个切线与$x$轴的交点当做新的点,重复操作,得到的点就会越来越趋近于零点。
$\ \ \ \ \ \ \,$具体证明涉及 泰勒展开,就不细讲了。
$\ \ \ \ \ \ \,$说到函数切线,自然就需要求导。
$\ \ \ \ \ \ \,$在$\ f(x)\ $上,点$\ x=a\ $的斜率为$f’(a)$,所以这个切线与$x$轴的交点当做新的点,应该是$\ a-\frac{f\left(a\right)}{f’\left(a\right)}\ $。
$\ \ \ \ \ \ \,$所以,我们定义:
$F(x)=F(x-1)-\frac{f\left(F(x-1)\right)}{f’\left(F(x-1)\right)}$
$\ \ \ \ \ \ \,$也就是不断去求点,可得这个点是越来越趋近某一个零点的。也就是说,我们的答案,就是$\ F(+∞)\ $,既函数$\ F(x)\ $的收敛值。
$\ \ \ \ \ \ \,$若$f(x)$二阶可导,那么在待求的零点$\ F(+∞)\ $值周围存在一个区域,只要起始点$\ F(0)\ $位于这个邻近区域内,那么牛顿迭代必定收敛。
$\ \ \ \ \ \ \,$不过……我们显然不需要算无限次,保证精度在一个范围内就行了,显然,牛顿迭代可以做到极快收敛到我们需要的精度,我们并不需要计算太多次。
$\ \ \ \ \ \ \,$我们最终答案的计算效率、精度,还与迭代系数,也就是最初赋值的$\ F(0)\ $有很大关系。(但是因为比较小的x取值范围,本题没有卡迭代系数的选定)。
$\ \ \ \ \ \ \,$然后贴出一阶牛顿迭代的模板:
$\ \ \ \ \ \ \,$(如果迭代次数过少或者无解,那么会返回一个错误的答案)
1 | double Newton_Iteration(double F,int tim){//输入迭代系数F=F(0),迭代次数tim |
$\ \ \ \ \ \ \,$这里只是简单地讲一下 一阶牛顿迭代 ,具体的讲解,有兴趣可以戳下面的链接,博主觉得讲得很清晰 (还有互交动画啊XD) 。
—·—·—《推荐讲解文章》—·—·—
$\ \ \ \ \ \ \,$而对于 二阶牛顿迭代 呢,就是在一阶导数上面做 一阶牛顿迭代 ,求一阶导数上面的零点,就是求原函数的极值了,也就是下面这个函数的收敛值:
$F(x)=F(x-1)-\frac{f’\left(F(x-1)\right)}{f’’\left(F(x-1)\right)}$
$\ \ \ \ \ \ \,$例题在这里,是我出的:【P4986 逃离】【题解】