数值分析:方程求根的数值解及应用例题;一个典型案例:计算65^(1/2)

人造智能

目录 <ul><li>问题的提出和列举</li><li>二分法</li><li>最简单的迭代法</li><li>牛顿迭代法</li><li>牛顿迭代法的一个应用</li><li>一个例子:混合法</li></ul> 问题提出和列举 <p class="ql-block">  目的:高考出现了一种阅读理解压轴题,大学的一些数学概念放在题设里,让学生现学现解。这需要学生了解些和初等方法比邻的高等数学思维,积累了这些思维,阅读起来会顺利,做起来就飞快。本文涉及的内容属于《数值分析》领域,由于人工智能理论的需要,数值分析和最优化理论已经是非常重要的数学工具。本文除了高等方案也会提供些初等方案,以供扩展思维。本文属于给高中同学开拓数学思维,所以许多繁琐的技术不讲,太高深的话题不谈。</p><p class="ql-block"> 问题提出如下:</p><ul><li>如,计算115^(1/2),要求误差不超过1%。</li><li>如,比较65^(1/2)和8.623的大小。</li><li>如,如何手动计算x^5+3x^x+7=0的实根?因为五次方程没有公式解,所以公式去求是没有的。</li><li>如,求e^x=x的实数根。</li><li>更一般的,如何求f(x)=0的根。</li><li>基于本章内容,还能设计许多数列的考题,数列是高中数学重要的内容,所以本章涉及内容很可能是高考压轴题的内容选择,文中会基于所列知识提出一些相关的可能的考题。</li></ul><p class="ql-block"> 以上问题,都可以用一种方程求根的数值解来解:就是给定一个方程,包括多项式方程和各种抽象方程,f(x)=0,如何用递推迭代的方式去逐步逼近真正的解。迭代公式一般就像数列的递推公式那样。抽象方程如:e^x=x的方程。</p><p class="ql-block"> 注:本文有时为了让下标区别变量,会把变量大写,如:X1,X2,Xk 。本文用*代表实际的根,如X*。</p> 二分法 <p class="ql-block">  一个最简单的方法就是二分法,在区间[a,b]间求根,第一步:选个起始点x0=(a+b)/2,然后求出f(x0)的值,比较它和f(a)的符号,与f(a)同号,则说明根x*在x0 的右侧,这时令a1=a,b1=x0,如果异号则令a1=x0,b1=b,这时根必在区间[a1,b1]内。第二步,在新的区间内[a1,b1]重复第一步。就这样根所在区间会不停的压缩,直到误差满意为止。误差如何计算?设x*是真真根,xk是第k次迭代的值,那么xk=(ak+bk)/2,误差:</p><p class="ql-block"> |x*-xk| &lt;= (bk-ak)/2 = (b-a)/2^(k+1)</p><p class="ql-block"> 以上公式是数列递推内容,很可能被用来设计考题。</p><p class="ql-block"> 二分法图示如下:</p> 最简单的迭代法 <p class="ql-block">  一个方程g(x) = 0, 可以写成 x = x + g(x),令f(x) = x + g(x) , 这样一个方程变化成求 x = f(x)的根。于是有迭代公式:</p><p class="ql-block"> Xk+1 = f(Xk)</p><p class="ql-block"> 选取初始值X0,然后迭代下去,直到满意。那满意是什么?就是误差足够小。另外这种方法是否收敛?</p> <p class="ql-block">  如上图,这种方式并不总是收敛,取决于f(x)的导数f’(x),如果 |f’(x)| &lt; = L &lt; 1, 则收敛。证明:</p><p class="ql-block"> |Xk+1 - X*| = |f(Xk) - f(X*)| &lt;= L|(Xk - X*)|</p><p class="ql-block"> 以上式子可以参考上图,并用函数导数的几何意义去理解,或者用微分中值定理理解。反复递推有:</p><p class="ql-block"> <span style="font-size:18px;"> |Xk - X*| &lt;= L^k|(X0 - X*)|</span></p><p class="ql-block"> 最后可得误差公式:</p><p class="ql-block"> |Xk - X*| &lt;= ( L^k / (1 - L) )|X1-X*|</p><p class="ql-block"> 误差公式证明和误差计算,可以设计一道高考题,技巧属于高中的数列手段。</p><p class="ql-block"> 参考答案如下图:</p><p class="ql-block"> </p> <p class="ql-block">  一个例子如下:</p> 牛顿迭代法 <p class="ql-block">  对于 f(x) = 0 求根,更出名的迭代公式是牛顿迭代法,也称切线法,如下图:</p> <p class="ql-block">  图中的切线方程是:</p> <p class="ql-block">  可以用以上曲线切线图求出迭代公式,也可以设切线方程中y=0,这样就得到迭代公式是:</p> <p class="ql-block">  如何求牛顿迭代法的误差公式?作为习题。也是一个出题方向。</p> 牛顿迭代法的一个应用 <p class="ql-block">  开根求值是最早人类需要掌握的,比如根号2是多少啊?没有一个可靠方法,这些值是不能为工程技术所用的。作为牛顿迭代法的一个应用,本节来解决此问题。</p><p class="ql-block"> 其实该问题实质是求 x^2 = a 的根。这个方程的牛顿迭代公式是:</p> <p class="ql-block">做简单的处理,得如下二式:</p> <p class="ql-block">  于是得如下误差公式,显然是收敛的。</p> <p class="ql-block">  一个例子,计算115的开根:</p> 一个例子:混合法 <p class="ql-block"> 这个方法是牛顿法和二分法混合用。这里并未证明混合法就比纯牛顿法好,只是通过简单的例子说明,各种方法可以综合起来用。</p><p class="ql-block"> 例子就是65开根。比如,65^(1/2)与8.0625比哪个大?与8.0623比哪个大?</p><p class="ql-block"> 这个例子实际就是求x^2=65的根。牛顿迭代公式如下:Xk+1=Xk - f(Xk)/f’(Xk)。取初值X0=8,f(x)=x^2-65, 很快就迭代出,X1=8.0625, X1在根的右边,可以作为答案,可以算出误差是0.0039 开根。</p><p class="ql-block"> 但可以更精细,误差更小,可以设 新X0=(X0+X1)/2=8.03215,重新迭代,得X1=8.0623,X1在根的右边,新X0在根左边。</p><p class="ql-block"> 误差从第一次迭代的0.0039开根,减小到0.00068开根,已经非常精确的了。所以在误差0.026下,值8.0623; 在误差0.062下,值8.0625。如果精度不满意,同上基于新的值,重新设置X0,再做迭代,直到满意。</p><p class="ql-block"> 这个还可以用泰勒展开,(8+x)²=64+16x+x²,x²很小,舍去,16x=1,x=0.0625,所以√65=8.0625</p><p class="ql-block"> 最后我们用牛顿法迭代三次看看结果:第一次,X0=8, X1=8.0625; 第二次,X2=8.06226;第三次,X3=8.06226,也就是在这个精度下已经最精确了,要继续迭代必须把小数点后的位数扩展。</p><p class="ql-block"><br></p>

迭代

迭代法

牛顿

方程

误差

公式

开根

二分法

例子

求根