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