数值分析迭代加速牛顿法及弦截法
- 格式:pptx
- 大小:441.85 KB
- 文档页数:34
Newton 快速弦截法的实验报告一:实验题目:newton法,快速弦截法。
二:实验目的:通过用MATLAB语言计算newton法,弦截法对两种方法的结果进行分析。
三:实验内容:a:了解MATLAB语言的用法b:用这两种方法求线性方程组四:实验方法与步骤:Newton法Function [x,k]=Mendnewton(f,x0,emg)[f1,d1]=feval(f,x0);k=1;x(1)=x0;x(2)=x(1)-f1/d1;while abs(f1)>emgu=1;k=k+1;[f1,d1]=feval(f,x(k));X(k+1)=x(k)-u*f1/d1;[f2,d2]=feval(f,x(k+1));While abs(f2)>abs(f1)U=u/2;X(k+1)=x(k)-u*f1/d1;[f2,d2]=feval(f,x(k+1));endend例:用牛顿下山法求方程f(x)= 的根,使精度达到10 初值分别选取为:(1)x0=-1;(2)x0=2.0;编写函数名func3.mFunction [f,d]=func3(x)F=sqrt(x^2+1)-tan(x);D1=’sqrt(x^2+1)-tan(x)’;D=subs(diff(d1));在命令窗口输入:f=@func3;[x,k]=Mendnewton(f,x0,10^-6);若选初值为x0=-1;运行结果为:迭代次数k x值f(1)=feval(f,x(k))值1 -7.069047932971935e-001 2.078789280010764e+0002 1.942400972108479e-001 8.219695728408301e-0013 1.163518073303871e+000 -7.838374932606165e-0014 1.023918977930554e+000 -2.113030290935414e-0015 9.530711345686330-001 -2.606996588743926e-0026 9.416925081385333e-001 -5.085688425774393e-0047 9.414616152761416e-001 -2.012113482496858e-0078 9.414615238528302e-001 -3.153033389935445e-014若选初值为x0=2.0;运行结果如下:迭代次数k x值f1(kfeval(f,x(k))值1 2.905969917234289e+000 3.313289980588459e+0002 3.829942435553551e+000 3.135774879468060e+0003 4.382754035040099e+000 1.572413838570136e+0004 4.474505813415593e+000 4.607393526441488e-0015 4.501556126032599e+000 -6.131570643391715e-0026 4.498750820792893e+000 -8.285614610334946e-0047 4.498711866735406e+000 -1.555631969907267e-0078 4.498711859418998e+000 -1.154631945610163e-014 快速弦截法:function [x,k]=Fast_chord(f,x1,x2,emg);k=1;y1=feval(f,x1);y2=feval(f,x2);x(k)=x2-(x2-x1)*y2/(y2-y1);y(k)=feval(f,x(k));k=k+1;x(k)=x(k-1)-(x(k-1)-x2)*y(k-1)/(y(k-1)-y2);while abs(x(k)-x(k-1))>emgy(k)=feval(f,x(k));x(k+1)=x(k)-(x(k)-x(k-1))*y(k)/(y(k)-y(k-1));k=k+1;end用快速弦截法求解方程4cos x=e 的根,要求精度为10 ,初值为:x1=45度;x2=90度编写函数文件func4.mFunction f=func4(x)F=exp(x)-4*cos(x)在命令窗口输入:f=@func4; [x,k]=Fast_chord(f,pi/4,pi/2,10^-6);运行结果如下:迭代次数k x值f1(k)=feval(f,x(k))值1 8.770025972944068e-001 -1.541498847256566e-0012 8.985446421856659e-001 -3.497120992034475e-0023 9.048658349261991e-001 4.359577241643819e-0044 9.047880039957831e-001 -1.201259723249137e-0065 9.047882178657145e-001 -4.102540529515864e-011五:结果分析与讨论:newton迭代法对算法的局部收敛性,优缺点分析如下具有收敛快,形式简单等优点,但它对初始值要求较高,需计算n+n2个函数值及导数值,求解过程计算量较大,它也是一种不动点法,是以曲线的切线与x 轴的焦点作为曲线与x轴的交点的近似值弦截法:对算法的局部收敛性,优缺点等分析如下:弦截法是两步法,他必须给出两组初始值x0,x1,通常取根的端点即可,其收敛速度大概为简单迭代法的1.618倍,从几何上看,弦截法是以曲线上两点的割线与x轴的交点,作为曲线与x轴的交点的近似值,计算结果表明:迭代5次精确度达到8位有效数字,它的收敛速度低于newton迭代法。
数学方法解决非线性方程组非线性方程组在科学、工程和数学领域中具有重要的应用价值。
解决非线性方程组是一个复杂的任务,而数学方法为我们提供了一种有效的途径。
本文将介绍一些常用的数学方法,以解决非线性方程组的问题。
1. 牛顿法牛顿法是一种常用的数值解法,用于求解非线性方程组。
它基于泰勒级数的思想,通过迭代逼近方程组的根。
具体步骤如下:首先,选择一个初始点作为近似解。
然后,根据函数的导数来计算方程组在该点的切线,找到切线与坐标轴的交点。
将该交点作为新的近似解,继续迭代,直到满足收敛条件。
牛顿法具有快速收敛的特点,但在某些情况下可能会陷入局部极小值点。
2. 雅可比迭代法雅可比迭代法也是一种常见的数值解法。
它将非线性方程组转化为线性方程组的形式,然后通过迭代来逼近解。
具体步骤如下:首先,将非线性方程组表示为矩阵形式,其中包含未知数的系数矩阵和常数向量。
然后,将方程组进行变换,使得未知数的系数矩阵变为对角矩阵。
接下来,选择一个初始解向量,并通过迭代计算新的解向量,直到满足收敛条件。
雅可比迭代法适用于大规模的非线性方程组求解,但收敛速度较慢。
3. 高斯-赛德尔迭代法高斯-赛德尔迭代法是雅可比迭代法的改进版本。
它在每次迭代中使用新的解向量来更新未知数的值,从而加快收敛速度。
具体步骤如下:首先,选择一个初始解向量。
然后,通过迭代计算新的解向量,直到满足收敛条件。
高斯-赛德尔迭代法相对于雅可比迭代法而言,可以更快地收敛到解。
它在求解非线性方程组时具有较好的效果。
4. 弦截法弦截法是一种近似求解非线性方程组的方法。
它通过线段的截断来逼近方程组的根。
具体步骤如下:首先,选择一个初始的线段,其中包含方程组的两个近似解。
然后,通过截取线段上的新点,构造新的线段。
重复这个过程,直到满足收敛条件。
弦截法是一种迭代方法,它可以在不需要计算导数的情况下逼近方程组的根。
但是,它的收敛速度比牛顿法和雅可比迭代法要慢。
总结:数学方法提供了一种有效的途径来解决非线性方程组的问题。
实验内容1 用下列方法求方程201303==--x x x 在附近的根,要求准确到四位有效数字。
(1)牛顿法。
(2)单点弦截法(3)双点弦截法2 用Aitken 法求方程0123=--x x 在5.10=x 附近的根,精度要求为410-=ε。
三 实验步骤(算法)与结果1: 用双点弦截法求方程201303==--x x x在附近的根①算法的C 语言代码:#include<stdio.h>#include<math.h>double f(double x){ double f;f=x*x-1/x;return f;}void main(){double y=0,z=0,x;printf("please enter a number near the root: ") ;scanf("%f",&x);for (y=f(x),z=f(y);fabs(z-y)>5e-5;){x=(x*z-y*y)/(x-2*y+z) ;y=f(x);z=f(y);}printf("the root is:") ;printf("X=%-10.4f\n",z);}②实验结果:如下图,按题要求输入2,则可得结果X=1.46562:用Aitken 法求方程0123=--x x在5.10=x 附近的根①算法的C 语言代码:#include<stdio.h>#include<math.h>double f(double x){double f=pow(x,3)-3*x-1;return f;}void main(){double f1,f2,x=2.0,y=1.5,z;for(;fabs(y-x)>5e-5;){f1=f(x);f2=f(y);z=y-f2*(y-x)/(f2-f1);x=y;y=z;}printf("the root is:") ;printf("X=%-10.4f\n",y);}②实验结果:如下图,在程序代码中预先设置接近于根的两个值x1=2.0与x2=1.5作为初值,则可得结果X=1.8794.。
§3.4 牛顿迭代法牛顿迭代法也称为牛顿-拉夫森(Newton-Raphson)迭代法,它是数值分析中最重要的方法之一,它不仅适用于方程或方程组的求解,还常用于微分方程和积分方程求解。
3.4.1 牛顿迭代法用迭代法解非线性方程时,如何构造迭代函数是非常重要的,那么怎样构造的迭代函数才能保证迭代法收敛呢?牛顿迭代法就是常用的方法之一,其迭代格式的来源大概有以下几种方式:1设],[)(2b a C x f ∈,对)(x f 在点],[0b a x ∈作泰勒展开: !2))((''))((')()(20000x x f x x x f x f x f -+-+=ξ略去二次项,得到)(x f 的线性近似式:))((')()(000x x x f x f x f -+≈。
由此得到方程=)(x f 0的近似根(假定≠)('0x f 0),)(')(000x f x f x x -=即可构造出迭代格式(假定≠)('k x f 0):)(')(1k k k k x f x f x x -=+ 公式(3.4.1)这就是牛顿迭代公式,若得到的序列{k x }收敛于α,则α就是非线性方程的根。
2 牛顿迭代法也称为牛顿切线法,这是由于)(x f 的线性化近似函数)(x l =))((')(000x x x f x f -+是曲线y =)(x f 过点))(,(00x f x 的切线而得名的,求)(x f 的零点代之以求)(x l 的零点,即切线)(x l 与x 轴交点的横坐标,如右图所示,这就是牛顿切线法的几何解释。
实际上,牛顿迭代法也可以从几何意义上推出。
利用牛顿迭代公式,由k x 得到1+k x ,从几何图形上看,就是过点))(,(k k x f x 作函数)(x f 的切线k l ,切线k l 与x 轴的交点就是1+k x ,所以有1)()('+-=k k k k x x x f x f ,整理后也能得出牛顿迭代公式: )(')(1k k k k x f x f x x -=+。
数值分析中的牛顿迭代法在现代科学技术领域中,数值计算是一项不可忽视的内容。
牛顿迭代法是数值计算中的一种重要方法,被广泛应用于数学、物理、化学、航空航天等领域。
下面就让我们来了解一下什么是牛顿迭代法,以及它的原理、特点和应用。
1. 概述牛顿迭代法又称为牛顿-拉夫逊迭代法,是一种求解非线性方程组的数值计算方法。
它的基本思想是:从已知函数的一个近似解出发,借助函数的切线逼近函数的零点,直到达到指定的精度要求为止。
牛顿迭代法的应用非常广泛,如求解函数的根、优化问题、最小二乘拟合、时间依赖问题等。
2. 原理假设$f(x)$是一个在$x0$处有连续二阶导数的函数。
如果要找到它在$x0$处的零点,那么牛顿迭代法的基本公式为:$$ x_{n+1} = x_n -\frac{f(x_n)}{f'(x_n)} $$其中,$n$表示迭代的次数,$x_{n+1}$表示迭代后的值,$x_n$表示当前的值,$f(x_n)$表示函数在$x_n$点的值,$f'(x_n)$表示函数在$x_n$点的导数。
公式的物理意义是:先用当前的$x$值求出函数值$f(x)$,然后用当前的$x$值求出函数的导数$f'(x)$,接着用$f(x)$和$f'(x)$计算出一个斜率,最后用当前的$x$值减去这个斜率,得到一个新的近似解$x_{n+1}$。
迭代过程如下:(1)选取初始值$x_0$;(2)计算出第一个近似值$x_1$,即$x_1=x_0-\frac{f(x_0)}{f'(x_0)}$;(3)计算出第二个近似值$x_2$,即$x_2=x_1-\frac{f(x_1)}{f'(x_1)}$;(4)依此类推,直到$f(x_n)$的值小到满足预设的精度为止。
3. 特点牛顿迭代法具有以下几个特点:(1)收敛速度快。
迭代公式是二阶收敛的,收敛速度远远超出了线性迭代法和高斯-赛德尔迭代法。
(2)精度高。
根据牛顿迭代法的收敛次数和精度估计定理,只要初值足够接近所求的跟,牛顿迭代法就能收敛,并且有二阶精度。
§3 牛顿迭代法Newton Iteration————切线法牛顿迭代法是最著名的方程求根方法。
已经通过各种方式把它推广到解其他更为困难的非线性问题。
【例如】非线性方程组、非线性积分方程和非线性微分方程。
虽然牛顿法对于给定的问题不一定总是最好的方法,但它的简单形式和快的收敛速度常常使得解非线性问题的人优先考虑它。
迭代一般理论告诉我们,构造好的迭代函数可使收敛速度提高。
然而迭代函数的构造方法又各不相同,方法多样。
牛顿法是受几何直观启发,给出构造迭代函数的一条重要途径。
牛顿迭代的基本思想:方程f(x)=0的根,几何意义是曲线y=f(x)与ox轴y=0的交点。
求曲线与y=0的交点没有普遍的公式,但直接与0x 轴的交点容易计算。
用直线近似曲线y=f(x),从而用直线方程的根逐步代替f(x)=0的根。
即把非线性方程逐步线性化。
方法:设x k是f(x)=0的一个近似根,把f(x)在x k处作一阶Taylor 展开,得到))(()()(k k k x x x f x f x f -'+≈ (19)设)(k x f '≠0,由于0)())(()(=≈-'+x f x x x f x f k k k所以求得解记为1+k x ,有牛顿迭代公式:(20) 按牛顿迭代计算称为牛顿迭代法。
牛顿法的几何意义:选初值x k 以后,过))(,(k k x f x p 点,作曲线y=f(x)的切线,其切线方程为))(()()(k k k x x x f x f x f -'+= (21)切线与ox 轴的交点,为1+k x ,则)(/)(1k k k k x f x f x x '-=+(22)牛顿迭代法也称为切线法。
迭代法的收敛性:如果取)(/)()(k k x f x f x x g '-=,则有x=g(x),从而牛顿迭代公式就是)(1k k x g x =+因此就可以由考察g(x)的性质,来讨论迭代法的收敛性及收敛速度。
第一章(有效数字位数)1、经四舍五入取近似值,其绝对误差限不超过末尾数字的半个单位。
2、设X*为准确值,X为近似值,称e=X*-X为近似值X的绝对误差,简称误差(显然e可正可负,准确值X*未知,因此e的准确值无法求出)3、|e|=|X-X*|≤ŋ,则称ŋ为近似值X的绝对误差限,简称误差限。
4、e r=e/X*称为相对误差,由于准确值X*总是未知的,所以也把e r*=e/X称为近似值X的相对误差5、|e r*|=|e/X|≤ŋ*,则称ŋ*为近似值X的相对误差限6、设X是X*的近似值,如果|X*-X|≤1/2×10-k,则称用X近似值表示X*时准确到小数点后第k位,并称从小数点后第k位起,直到最左边的非零数字之间的所有数字为有效数字,称有效数字的位数为有效数位。
7、设X是X*的近似值,X=±10m×0.a1a2…,其中a i(i=2,3…)是0到9之间的自然数,a1≠0,m为整数,如果|X*-X|≤1/2×10m-n,那么称近似值有n位有效数字。
8、四舍五入所得到的数均为有效数字,但并不是说非四舍五入所得到的数不能为有效数字。
第二章、非线性方程求根(不动点迭代、牛顿法、弦截法、快速弦截法、局部收敛、全局收敛、收敛阶)1、不动点迭代法(迭代法)(单根区间求解方法):将非线性方程f(x)=0化为一个同解方程x=ø(x),若要求f(x*)=0,则x*=ø(x*),称x*为f(x)的零点,为ø(x)的一个不动点。
2、定理:设迭代函数ø(x)在【a,b】上连续,且满足(1)当x∈【a,b】时,a≤ø(x)≤b,(2)存在一正数L,满足0<L<1,且∀x∈【a,b】,有|ø/(x)|≤L<1。
则1、方程x=ø(x)在【a,b】内有唯一解x*。
2、对于任意初值x0∈【a,b】,迭代法x k+1=ø(x k)均收敛x*3、设ø(x)有不动点x*,如果存在x*的一个邻域 S:|X*-X|< ŋ,对任意初值x0∈S,迭代过程x k+1=ø(x k)均收敛,则称迭代过程在根x*邻近局部收敛。