龙空技术网

「洛谷日报第53期」浅谈一些求近似值的方法

洛谷科技 76

前言:

眼前姐妹们对“遗传算法求解方程组”大约比较关心,同学们都想要分析一些“遗传算法求解方程组”的相关资讯。那么小编同时在网络上收集了一些对于“遗传算法求解方程组””的相关知识,希望大家能喜欢,小伙伴们快快来了解一下吧!

0 前置知识&&写在前面

学习牛顿迭代法需要能熟练地掌握求导QwQ

学习泰勒公式需要能熟练地掌握求导并对无穷级数有一定了解QwQ

要想看懂牛顿迭代法的二次收敛证明需要一定的高数基础QwQ(看不懂也无所谓,会用就行)

学习泰勒公式需要能熟练地掌握求导并对无穷级数有一定了解QwQ

一点都不会怎么办?没有问题,会用就行NOIP不考QwQ

求零点、不动点、函数近似值、极值、最值……基本可以认为是一类问题,所以本文以讨论如何**求零点的近似值为主**

因为笔者太弱所以没有遗传算法、模拟退火之类的玄学算法

笔者是∑狂魔,要是有式子不理解请展开QwQ

对于低于5次的多项式方程,我们有通用的公式解法求零点的精确值

对于一些特殊高次多项式方程(例如可以因式分解的或者满足一些特定形式的方程)的和一些特殊的超越方程,我们也有方法求零点的精确值

但是其余的情况呢?

目前来说我们只能求近似值QwQ(而且在实际应用中,精确值往往也会被转换成近似值)

1 二分法 (int\long long\etc.)

这个方法可以说相当常见了(括号里是此法经常被应用于的数据类型)QwQ

对于在区间[l,r]内单调、连续且有f(l)*f(r)<0成立的f(x),做如下操作:

计算mid=(l+r)/2

若f(l)*f(mid)<0,则令r=mid,否则令l=mid

如果达到预定精度,跳转到4,否则跳转到1

结束

循环次数:

附程序:

2 0.618法\优选法 (float\double\long double)

可能有的读者没听说过,不过这个方法其实还是很常用的QwQ

这个方法更常用于求单峰函数最值,所以这里以求单峰函数最值为例讲解

先证明一下它的优越性(过程摘自人教版高中数学选修4-7 优选法与试验设计初步)(没错真的有这本选修QwQ)

一句话概括就是在缩小区间后可以只计算一个试点坐标,从而保证最优

操作流程如下(和二分法类似)

附程序:

读者们可以在洛谷P3382()中测试一下(~o ̄3 ̄)~(虽然是三分法模板但也可以用优选法\二分法做哦)

关于这个还有一个类似方法:斐波那契法。有兴趣的读者可以查阅相关资料才不是笔者不想写_(:3」∠)_

3 泰勒公式

先讲这个是为了为下文牛顿迭代法二次收敛的证明做铺垫,不想看证明的可以略过QwQ(不过还是推荐了解一下,挺有趣的)

这里假定函数f(x)在x_0处有任意阶导数

我们可以很容易地求出多项式和类指数函数的近似值,但是像三角函数、对数函数这样的我们又该如何求近似值呢

对了,就是用泰勒公式QwQ

泰勒公式的想法很简单,就是构造一个多项式函数,使得它与函数在处的原函数值和各阶导数均相等,即

因为

于是我们就得到了(解n元一次方程组,很简单的)

当n→∞时,我们可以认为f(x)=g(x)

而当n有一个确定的值时,f(x)就可以写成g(x)+R_n(x)了

其中R_n(x)是余项,它有好几种不同的写法,这里选用拉格朗日余项。因为它不仅在下文中牛顿迭代法的二次收敛证明中出现了,而且形式和前面的几项非常相近

其中ξ_L在x和x_0之间

要是了解过拉格朗日中值定理的读者应该很快就能领会

当n→∞时,有(泰勒级数)

特别地,当x_0=0时,有(麦克劳林级数)

另外注意应用麦克劳林级数并且x在某个范围之外时,得到的结果可能是发散的(就是,这个不展开讲,有兴趣的读者可以去学习无穷级数相关知识)

附上Wikipedia的动图

对证明感兴趣的读者可以自行查阅相关资料

不能理解无所谓反正NOIP不考,下面给出几个常见的泰勒级数

程序略QwQ

4 牛顿迭代法

先说说这个方法的过程

稍加计算便得到了

既然是迭代,那么自然就有

其中x_n代表第n次迭代

附上Wikipedia的动图('s_method

二次收敛证明(Wikipedia上的,笔者翻译QwQ)(还是那句话:看不懂无所谓,会用就行QwQ):

程序:

当然,上述各方法的应用范围远不止于此,有兴趣的读者可以自行查阅相关资料QwQ

5 赠品

5.1 cos(x)=x的解析解

对于PhOer来说,cos(x)=x这个方程应该是相当熟悉了QwQ

笔者在这里放上解析解(近似值x=0.739),详情见参考文献[2](文献里讲的是t sin( x)=x-m的解法,不过笔者太弱了,实在是看不懂QwQ)

5.2 快速求1/sqrt{x}

关于这个有一个相当有名的故事

为了节约篇幅,笔者把文章放在这里了(

6 后记

这篇文章偏数学一些,如果不能理解的话请多读几遍QwQ

其实可写的还有很多,限于篇幅就到此为止了(现在在后台打个字都要卡两秒QwQ)

因为笔者是个蒟蒻,所以如果有错误,烦请各位dalao不吝赐教

7 主要参考资料

[1] 人教版高中数学选修4-7 优选法与试验设计初步

[2] Siewert C E, Burniston E E. An exact analytical solution of Kepler's equation[J]. Celestial Mechanics, 1972, 6(3):294-304.

[3]Newton's method - Wikipedia('s_method

[4]Taylor's theorem - Wikipedia(

[5]一个Sqrt函数引发的血案()(这个是笔者能找到的最早的一篇了QwQ)

本文发布于洛谷日报,特约作者:khong

原文地址:

标签: #遗传算法求解方程组 #三角函数c语言洛谷