一般迭代法

合集下载

Atiken加速一般迭代和牛顿迭代法

Atiken加速一般迭代和牛顿迭代法

第二次上机实验报告实验一:.用不动点迭代法求的根发散的迭代格式:,其中k=0,1,2……收敛的迭代格式:,其中k=0,1,2……当使用第二种格式迭代,且精度为10^(-12)时,程序如下:#include <iostream>#include <iomanip>#include <math.h>using namespace std;#define h 0.000000000001double f(double x) {double f1 = pow(x + 1, 1.0 / 3);return f1;}int main() {double x1, x2;int n=0;cout<< "input first data:" <<endl; cin>> x1;x2 = f(x1);while (fabs(x2 - x1) > h) {n++;x1 = x2;cout<<setprecision(14) << x2 <<endl; x2 = f(x1);}cout<< "result:"<<endl<<setprecision(14) << x2<<endl;cout<< n<<endl;return 0;}输入初值为3的时候,结果如下:对迭代格式使用Aitken加速,观察其收敛散性质变化对迭代格式一使用Aitken加速,收敛对迭代格式二使用Aitken加速,收敛速度变快程序如下:#include<iostream>#include<iomanip>#include<math.h>#defineh 0.000000000001usingnamespacestd;double f(doublex) {double f1 = pow(x,3)-1;return f1;}int main() {double x0,x1, x2;int n = 0;cout<<"please input the first number:"<<endl; cin>> x0;x1 = f(x0);while (fabs(x0-f(x0))>h) {n++;x2 = f(x1);x0 = x2 - (x2 - x1)*(x2 - x1) / (x2 - 2 * x1 + x0); x1 = x2;cout<<setprecision(14) << x0 <<endl;}cout<<"result:"<<endl<<setprecision(14)<<x0<<endl;cout<< n <<endl;return 0;}对迭代格式二作Aikten加速迭代时,只需将函数f(x)替换为。

两类一般迭代法的收敛性

两类一般迭代法的收敛性






l 一z I — I z l ≤
0n
・I 1l l 一z 一 ≤ z l

l 1 O1 l 一X . z l
0n 一 1
但 他 的这 个 条件 和 单 调 非 降 函 数 有 关 。而 对 迭 代 ( )文 [0] 条 件 并 没 变 , 是 结 论 中 3, 1 的 只 多 了含 递 推 关 系 的误 差 估 计 。对 于 迭 代 ( ) 文 [ 1也 给 出 过 一 个 挺 复 杂 的 结 果 。 3 , 1] 本 文 利 用 三 次 优 函 数 , 统 一 判 定 条 件 (4 ) 分 别 证 明 了 形 式 ( ) 形 式 ( ) 产 生 的 在 [ ]下 2和 3所
No. 3
S p. 0 2 e 20
文 章 编 号 :0 0—5 4 ( 0 2 0 10 6 1 2 0 ) 3—0 0 0 7—0 7
两 类 一 般 迭 代 法 的 收 敛 性
郭学萍
( 东师 范大 学 数学 系 , 海 华 上 206) 0 0 2
摘 要 : 文 在 统 一 判 定 条 件 下 , 助 于 三 次 优 函 数 , 出 了两 类 一 般 迭 代 法 的 不 同 于 以 前 的 收 敛 该 借 给 性和 误 差估计 。
续 , z =Gx 。 则
收 稿 日期 :0 0 1 20 — 1
基 金 项 目 : 海 市 重 点 学 科 建 设 项 目和 华 东 师 大 青 年 科 研 创 新 基 金 资 助 上 作者 简 介 : 学萍 (9 1 )女 , 士 , 师 . 郭 17 一 , 博 讲
维普资讯
变 形 Ne o wtn迭 代 ( [ ] [ ] , 三 阶 收 敛 的 Haly迭 代 , h b s e 如 3 ,4 ) 到 l e C e yh v迭 代 , Haly 也 超 l ( e

迭代法

迭代法

迭代法
迭代法也叫辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。

对非线性方程,利用递推关系式,从开始依次计算,来逼近方程的根的方法,若仅与有关,即,则称此迭代法为单步迭代法,一般称为多步迭代法;对于线性方程组,由关系从开始依次计算来过近方程的解的方法。

若对某一正整数,当时,与k 无关,称该迭代法为定常迭代法,否则称之为非定常迭代法。

称所构造的序列为迭代序列。

求通项公式的方法(用迭代法)已知数列{An},a1=2,an=2a(n-1)-1(n>或=2)求通项公式
an=2a(n-1)-1 an-1=2(a(n-1)-1 ) n>或=2
所以an-1 为等比数列
an-1=(a1-1)*2^(n-1)
an-1=2^(n-1)
an=2^(n-1)+1
牛顿迭代法求开方
数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。

方法使用函数的泰勒级数的前面几项来寻找方程的根。

牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收
敛。

另外该方法广泛用于计算机编程中。

用迭代法求平方根
对于A>1,求其平方根可构造用如下公式迭代:
f(x)=(1/a)(x+a/x),a=A/(A-1),迭代初值x0=[√A]+1,[x]为x的取整.如想求70的平方根,可令初值x0=9.
对于A1,用如上方法求出平方根后,在成10^(-n),即得结果.。

二分法、牛顿迭代法、普通迭代法

二分法、牛顿迭代法、普通迭代法

数值球根试验报告《数值计算方法》专业班级软件08-1姓名熊文成学号08083117时间2010年10月24日星期天一、 实验目的熟悉二分法以及牛顿迭代法求方程近似根的数值方法,掌握各种迭代方法,自己扩张研究迭代法的效率与收敛性和初始值的关系。

二、 实验内容1.已知0104)(23=-+=x x x f 在[]21,上有一个实根*x ,14)2(5)1(=-=f f ,,用二分法和牛顿迭代法求该实根,要求精度满足条件:321*1021-+⨯≤-k x x 。

2.条件允许的话,扩展研究各种迭代法的效率,以及迭代的效率和收敛性与初始值的关系,并通过比较采用两点加速的方法与普通的方法的效率体验加速迭代的优点。

总而言之,本实验中的用到的求根方法有①二分法,②牛顿迭代法,③迭代函数为213)10(21)(x x -=ϕ的迭代方法,以及④对函数213)10(21)(x x -=ϕ采用两点加速迭代的方法。

三、 主函数流程程序是按顺序运行的,流程图如下图所示:四、源程序#include <stdio.h>#include <conio.h>#include <math.h>//根据x的值计算函数值//函数f(x)=x*x*x+4*x*x-10double func(double x){double value;value=x*x*x+4*x*x-10;return value;}//根据参数x的值计算函数f(x)的导数值double divFunc(double x){return 3*x*x+8*x;}//二分法计算方程f(x)=0在[1,2]上的跟//二份迭代结束条件由参数precision精度给出void biSectionMethod(double precision){int k=0; //均分次数double x1=1.0,x2=2.0; //区间[1.0,2.0]double midx; //二分之后的值printf("\n\t k 有根区间k+1 f(x(k+1)) ");do{printf("\n\t%3d",k);printf(" [%.3f,%.3f]",x1,x2);midx=(x1+x2)/2;printf(" %f",midx);printf(" %.6f",func(midx));if (func(midx)<0)x1=midx;else x2=midx;k++;if (k%3==0) //每次输出4个等用户审查getch();} while (x2-x1>=precision); //区间的长度超过5e-3就一直迭代printf("\n\t二分法分区间的次数:%d,所求的根是:%lf",k-1,x2);}//牛顿迭代法//根据初值值x0,在区间[1.0,2.0]上迭代求根//迭代次数由参数precision精度决定void NewTonMethod(double x0,double precision){int k=0; //迭代次数double x1,x2=x0;printf("\n\t k x(k) f(x(k)) |x(k+1)-x(k)|");do{printf("\n\t%2d",k);printf(" %.6f",x2);printf(" %.6f",func(x2));x1=x2;x2=x2-func(x1)/divFunc(x1);if (x2-x1>0)printf(" %.6f",x2-x1); //输出两次迭代的差值else printf(" %.6f",x1-x2);k++;if (k%3==0) //每次输出4个等用户审查getch();} while (x2-x1>precision||x1-x2>precision);printf("\n\t牛顿迭代初值:%lf,次数:%d,所求的根是:%lf",x0,k-1,x2); }//迭代函数g(x)=(sqrt(10-x*x*x))/2;double funcTwo(double x){return (sqrt(10-x*x*x))/2;}//普通迭代函数void ordinaMethod(double x0,double precision){int k=0; //迭代次数double x1,x2=x0;printf("\n\t k x(k) f(x(k)) |x(k+1)-x(k)|");do{printf("\n\t%2d",k);printf(" %.6f",x2);printf(" %.6f",func(x2));x1=x2;x2=funcTwo(x1);if (x2-x1>0)printf(" %.6f",x2-x1); //输出两次迭代的差值else printf(" %.6f",x1-x2);k++;if (k%3==0) //每次输出4个等用户审查getch();} while (x2-x1>precision||x1-x2>precision);printf("\n\t普通迭代初值:%lf,次数:%d,所求的根是:%lf",x0,k-1,x2); }//使用两个跌代值的组合加速跌代//对迭代函数f(x)=(sqrt(10-x*x*x))/2的加速void twoValue(double x0,double precision){int k=0; //迭代次数double x1,x2=x0;printf("\n\t k x(k) f(x(k)) |x(k+1)-x(k)|");do{printf("\n\t%2d",k);printf(" %.6f",x2);printf(" %.6f",func(x2));x1=x2;x2=(funcTwo(x1)+x1)/2;if (x2-x1>0)printf(" %.6f",x2-x1); //输出两次迭代的差值else printf(" %.6f",x1-x2);k++;if (k%3==0) //每次输出4个等用户审查getch();} while (x2-x1>precision||x1-x2>precision);printf("\n\t两点加速迭代初值:%lf,次数:%d,根:%lf",x0,k,x2);}void main(){double orgin=1.5; //初始值double precision=5e-6; //精度char sel=0; //操作符while(1){printf("\n\t选择:");printf("\n\t1.二分法\n\t2.迭代法\n\t");sel=getch();printf("\n\n\t注:程序停止处按任意键继续");if (sel=='1'){printf("\n\n\t ************二分法求解过程***********");biSectionMethod(precision); //测试函数}else{printf("\n\t输入迭代的初值:");scanf("%lf",&orgin);//if (orgin>2.0||orgin<1.0) //限制迭代初值范围,根据情况决定//orgin=1.5; //如果输入非法,则按1.5计算printf("\n\n\t ************牛顿迭代法求解过程************");NewTonMethod(orgin,precision);printf("\n\t任何键继续:");getch();printf("\n\n\t *******普通迭代g(x)=(sqrt(10-x*x*x))/2*****");ordinaMethod(orgin,precision);printf("\n\t任何键继续:");getch();printf("\n\n\t ************两个值组合加速迭代x=(g(x)+x)/2***********");twoValue(orgin,precision);}printf("\n\t任何键继续:");getch();}}五、运行结果1、选择求根方法2、 选择二分法下面给出二分法的结果:3、 选择迭代法查看结果:首先显示的是牛顿迭代法的结果:然后是普通迭代法函数是:213)10(21)(x x -=ϕ,结果如下:接着可以看到的是用两点加速法对函数213)10(21)(x x -=ϕ的加速:下面采用不同的初值查看普通迭代函数的收敛性与效率: 各个结果如下:上图对应的是收敛性:收敛的。

2.2 迭代法的一般形式与收敛性定理

2.2 迭代法的一般形式与收敛性定理

设aii0 (i=1,2,,n),并将A写成三部分
0 a11 a 21 0 a 22 A a n 1 ,1 a n 1 , 2 0 a nn a n 2 a n , n 1 a n1 0 a12 a1,n1 a1n 0 a 2 , n 1 a 2 n 0 a n 1, n 0 D LU. 0

k
B ( H )
k
两边取对数得: k ln ( H ) ln k
ln ln ( H )
定义:
ln ( H )
为迭代法(2.2.3)的渐近收敛速 度。
解线性方程组的迭代法
线性方程组
a11 x1 a12 x2 a x a x 21 1 22 2 an1 x1 an 2 x2 a1n xn b1 a2 n xn b2 ann xn bn
复习:矩阵的谱半径 设λ是矩阵A相应于特征向量x的特征值,即 Ax=λx 向量-矩阵范数的相容性,得到 |λ| || x ||=||λx|| =|| Ax|| ≤ || A || ||x|| 从而,对A的任何特征值λ均成立 |λ|≤|| A || ( 3)
设n阶矩阵A的n个特征值为λ1,λ2,…λn,称 ( A) max i
x ( k 1) x* H ( x ( k ) x* )
由此递推:x ( k 1) x* H k 1 ( x ( 0) x* ), k 0,1,2,
x 是线性方程组Ax=b的解
x* Hx* g
x
k 1
*

§6迭代法的收敛阶和aitken加速方法一、迭代法的收敛阶

§6迭代法的收敛阶和aitken加速方法一、迭代法的收敛阶

k = 0,1, 2,"
二、 AitKen 加速方法
1. 推导

lim
k →∞
xk
=
x*,且 lim k →∞
x* − xk +1 x* − xk
=
c(0 <
c < 1)

x* − xk +1 x* − xk

c
⇒ x* − xk +2 ≈ x* − xk +1 x* − xk +1 x* − xk

x*

xk

( xk +1 − xk +1 )2 xk +2 − 2 xk +1 + xk
§6 迭代法的收敛阶和 AitKen 加速方法
一、 迭代法的收敛阶
定义:对于方程 x = g(x) ,若迭代过程 xk+1 = g(xk )(初 值为 x0 )收敛于 x* ,且
lim
k →∞
| |
x* x*
− −
xk +1 | xk |p
=
c

0
其中 p ≥ 1,则称迭代过程 p 阶收敛。当 p = 1(这时
要求 0 < c < 1)时称为线性收敛;当 p ≥ 1时称为超线
性收敛;当 p = 2 时称为二次收敛(平方收敛)。
注: 1) p 是衡量迭代过程收敛快慢的指标, p 越大,
收敛越快, p 越小,收敛越慢; 2)一般迭代法,当 g′(x*) ≠ 0 时,为线性收敛; 3)牛顿法在单根附近为二次收敛。

xˆk

xk

( xk +1 − xk +1 )2 xk +2 − 2 xk +1 + xk

Newton法、一般迭代法Steffensen法、弦截法C语言代码

Newton法、一般迭代法Steffensen法、弦截法C语言代码

一、Newton法:#include<math.h>#include<stdio.h>double f(double x){return (3*x*x-exp(x));}double f1(double x){return (6*x-exp(x));}void main(){double x1=1,x;do{x=x1;x1=x-f(x)/f1(x);printf("x=%.9lf\n",x1);}while(fabs(x1-x)>0.000005);}说明:f 为原函数,f1为f的导函数,x1为初始值,通过"x=%.9lf“控制输入输出格式二、一般迭代法#include <stdio.h>#include <math.h>int main(){double x=1,x1;while(1){x1=pow(3*x+1,0.2);printf("x=%.6lf\n",x1);if(fabs(x1-x)<0.000005 )break;x=x1;}return 0;}说明:x1为初始值,x1=pow(3*x+1,0.2);为迭代格式,0.000005为允许误差,通过"x=%.6lf“控制输入输出格式三、Steffensen法:#include"stdio.h"#include"math.h"#define phi(x) pow(3*(x)+1,0.2);void main(){double x,x0,del,y,z;printf("x0="); scanf("%lf",&x0);printf("\ndel=:"); scanf("%lf",&del);while(1){y=phi(x0); z=phi(y);x=x0-(y-x0)*(y-x0)/(z-2*y+x0);printf("\n%.6lf",x);if(fabs(x-x0)<del) break;x0=x;}}说明:x0为初始值,pow(3*(x)+1,0.2);为φ(x)的格式,del为允许误差,通过"x=%.6lf“控制输入输出格式四、弦截法:#include<math.h>#include<stdio.h>double f(double x){ //计算f(x)的值return pow(2,x)+pow(3,x)-pow(4,x);}double point(double x1,double x2){//计算与x轴交点的x值printf("x=%.5f\n",(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)));return (x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));}int main(){//输入两个数x1,x2double x1,x2,x;do{printf("输入两个数x1,x2:");scanf("%lf%lf",&x1,&x2);}while (f(x1)*f(x2)>= 0); // 当输入两个数大于0为真时,继续重新输入//关键循环步骤:do{x=point(x1,x2);//得到交点的值if(f(x)*f(x1)>0)x1=x;//新的x1elsex2=x;}while (fabs(f(x)) > 0.000005); }。

迭代法求解方程

迭代法求解方程

迭代法求解方程1 什么是迭代法?迭代法是一种求解方程的方法,通常用于在数值计算中。

迭代法的基本思想是通过不断重复一个固定的计算过程来逼近目标解,直到精度满足要求为止。

迭代法在理论研究和实际应用中都有广泛应用,例如在数学、物理、工程学等领域。

2 迭代法的例子在数学中,迭代法最常用于求解方程。

例如,我们有一个方程f(x) = 0,我们希望找到它的一个解x。

迭代法的一般形式是从一个初始值x0开始,通过重复应用某个公式,得到序列{x0, x1, x2, …, xn},使得xn逐步逼近解。

具体而言,每一次迭代都利用前一次的计算结果,求出新的解,即:xn+1 = g(xn)其中g(x)是某个函数,也被称为迭代函数。

当序列{x0, x1,x2, …, xn}满足一定条件时,我们称其为收敛序列,此时xn就是方程f(x) = 0的解。

3 迭代法的实现迭代法需要满足一定的收敛条件,才能有效地找到解。

在迭代函数的选择中,一般应满足以下要求:1. 迭代函数必须是连续的。

2. 选取的初值必须接近解。

3. 迭代函数的值域必须包含自变量的定义域。

4. 迭代函数的导数要通常利于计算。

基于以上原则,我们可以通过编写程序来实现迭代法求解方程。

代码示例如下:```python定义迭代函数def g(x):return (x**2 + 2) / 3定义初始值x0 = 1设置迭代次数n = 20进行迭代for i in range(n):x1 = g(x0)print("x{} = {}".format(i+1, x1))x0 = x1```这段代码中,我们定义了一个迭代函数g(x) = (x² + 2) / 3,初始值为x0 = 1,迭代次数为20次。

通过重复调用迭代函数g(x),我们依次求得了序列{x1, x2, …, x20},并输出每一次迭代的结果。

4 迭代法的优缺点迭代法的优点主要包括:1. 迭代法适用于求解各种类型的方程,具有较高的通用性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
缺点: 逼近根的速度慢一些.
(n =1, 2,L )
优点: 避 每 计 f ′(xn−1), 因而节省计算量. 免 次 算
机动
目录
上页
下页
返回
结束
(2) 割线法
y
为避免求导运算 , 用割线代替切线, x2 x3 f (xn−1) − f (xn−2 ) 例如用差商 代替 o x0 ξ x1 x xn−1 − xn−2
作业
(习题3-8*)
P180 1 ; 3
思考与练习
比较求方程近似根的方法之间的关系及优缺点 .
习题课 目录 上页 下页 返回 结束
机动 目录 上页 下页 返回 结束
例2. 用切线法求方程 x3 − 2x2 − 4x − 7 = 0的近似解, 使 误差不超过 0.01 . 解: 设 f (x) = x − 2x − 4x − 7. 由草图可见方程有唯一的正实根 ξ ,且
3 2
y
o
34 x
f (3) = −10, f (4) = 9
1. 求隔根区间的一般方法 (1) 作图法
y = f (x)
•由y = f (x)的 图 计 根 间; 草 估 隔 区 •将 f (x) = 0转 为 价 程 化 等 方 ϕ(x) =ψ(x)
机动
o a ξ b x
y
y =ϕ(x) y =ψ (x)
由y = ϕ(x), y =ψ (x)的 图 计 根 间 . 草 估 隔 区
迭代收敛 , 1.32472 为计算精度范围内的所求根 .
机动 目录 上页 下页 返回 结束
迭代法的敛散性与迭代函数的特性有关. 可以证明 下述定理:
区 满 定理. 程 定理 方 x = ϕ(x) 在 间[a, b]上 足:
1 x = ϕ(x)连 , a ≤ ϕ(x) ≤ b ) 续且
2 ϕ′(x) 存 , ϕ′(x) ≤ L <1 ) 在且
1 方 x = ϕ(x) 在[a, b] 上 唯 解ξ, ) 程 有 一
2 x0 ∈[a, b] ) n→∞ xn = ϕ(xn−1) ξ →
(证明略)
机动
目录
上页
下页
返回
结束
内容小结
1. 隔根方法 作图法 二分法 二分法 牛顿切线法 2. 求近似根的方法 简化牛顿法 割线法 一般迭代法 ……
故该方程只有一个实根 ξ , [0, 1] 为 一 隔 区 , 欲使 其 个 根 间
解: 设 f (x) = x +1.1x + 0.9x −1.4,则f (x) ∈C(−∞, + ∞)
3 2
<10−3 ξn+1 −ξ ≤ n+1 (1− 0)
1
必需 2n+1 >1000, 即 n > log21000−1 ≈ 8.96 可见只要对分区间9次 ,即可得满足要求的实根近似值 ξ10
故 x0 = 4, 得 取 f (4) 9 x1 = 4 − = 4− = 3.68 f ′(4) 28
f (x1) 1.03 = = 0.09 而 x1 −ξ ≤ 11 m 故 x1 精 不 , 度 够 再求
y
o
34 x
f (3.68) 1.03 = 3.63 x2 = 3.68− = 3.68− f ′(3.68) 21.9 f (x2 ) 0.042 = x2 −ξ ≤ < 0.004 < 0.01 11 m 因此得满足精度要求的近似解 ξ ≈ 3.63
o
上页
a ξ b x
下页 返回 结束
目录
例 , 方 x3 − x −1= 0 可转化为 如 程 x3 = x +1 由图可见只有一个实根 ξ ∈(1, 1.5),
y
(1, 1.5)即 其 根 间. 为 隔 区
(2) 逐步收索法 搜索, 若
y = x +1 o 1ξ 2 x
y = x3
从 间[a, b]的 端 出 , 以定步长 h 一步步向右 区 左 点 发
机动 目录 上页 下页 返回 结束
牛顿法的变形: 牛顿法的变形 (1) 简化牛顿法 若用一常数代替 f ′(xn−1), 即用平行 线代替切线, 则得简化牛顿迭代公式.
y
a ξ o
bx
例 用f ′(x0 ) 代 f ′(xn−1), 得 如 替
f (xn−1) xn = xn−1 − f ′(x0 )
如此继续下去, 可得求近似根的迭代公式 : f (xn−1) (n =1, 2,L ) xn = xn−1 − f ′(xn−1) 称为牛顿迭代公式 牛顿迭代公式
机动 目录 上页 下页 返回 结束
牛顿法的误差估计: 牛顿法的误差估计 由微分中值定理得
y
a ξ o
x2 x1 x0 x b
f (xn ) − f (ξ ) = f ′(η)(xn −ξ)
第八节 方程的近似解
求 程 f (x) = 0的 根 方 实
两种情形 本节内容:
第三章 三
可求精确根 (有时计算很繁) 无法求精确根 求近似根
一、根的隔离与二分法 二、牛顿切线法及其变形 三、一般迭代法 (补充)
机动 目录 上页 下页 返回 结束
一、根的隔离与二分法
若 程 f (x) = 0在[a,b]内 有 个 , 称[a,b]为 方 只 一 根则 其 根 间 隔 区 . f (x) ∈C[a,b], f (a) f (b) < 0, [a,b] 为 根 间 隔 区 且 f (x)在 a,b) 严 单 ( 内 格 调 y
f (a + jh) f (a + ( j +1)h) < 0 ( j = 0,1,L a + ( j +1)h ≤ b) ;
则 间[a + jh,+ ( j +1)h]内 有 . 区 a 必 根
搜索过程也可从 b 开始 , 取步长 h < 0 .
机动 目录 上页 下页 返回 结束
2. 二分法
设 f (x) ∈C[a,b] ,f (a) f (b) < 0, 方 f (x) = 0只 且 程 有
f ′(xn−1), 从而得迭代公式:
f (xn−1) xn = xn−1 − (xn−1 − xn−2 ) (n = 2,3,L ) f (xn−1) − f (xn−2 )
(双点割线法)
特点: 特点 逼近根的速度快于简化牛顿法, 但慢于牛顿法. 为 说明: 说明 若将上式中xn−2 换 x0 ,则为单点割线法, 逼近 根的速度与简化牛顿法相当.
一 根ξ ∈(a, b),取中点 ξ1 = a+b, 个 2
a ξ1 b 若 f (ξ1) = 0, ξ1 即 所 根 ξ . 则 为 求 a1 a1 b b 1 1 则 若 f (a) f (ξ1) < 0, 根ξ ∈(a, ξ1),令a1 = a, b = ξ1 ; 1
否 ξ ∈(ξ1 , b),令a1 = ξ1 , b = b , 则 1 对新的隔根区间[ a1 , b ]重复以上步骤, 反复进行,得 1
f (xn ) Q f (ξ) = 0, ∴xn −ξ = f ′(η)
f (xn−1) xn = xn−1 − f ′(xn−1)
f (xn ) 记m = min f ′(x) > 0, 则得 xn −ξ ≤ [a,b] m
说明: 说明 用牛顿法时, 若过纵坐标与 f ′′(x)异号的端点作
. 切线 , 则切线与 x 轴焦点的横坐标未必在 [a, b]内
y
a ξ
(x0 , f (x0 )), 在此点作切线 , 其方程为 o x2 x1 x0 x b y − f (x0 ) = f ′(x0 )(x − x0 ) f (x0 ) 令 y = 0 得它与 x 轴的交点 (x1 , 0),其中 x1 = x0 − f ′(x0 ) 再在点(x1 , f (x1))作切线 , 可得近似根 x2.
有如下四种情况: y y y a a b o x o bx oa bx f ′ >0 f ′ >0 f ′ <0 f ′′ < 0 f ′′ > 0 f ′′ > 0
机动 目录 上页
f ′ <0 f ′′ < 0
下页 返回 结束
牛顿切线法的基本思想: 用切线近似代替曲线弧求方 程的近似根 . 记纵坐标与 f ′′(x) 同号的端点为
初值 .
若lim xn 存 称 代 敛, 否则称为发散 . 在 迭 收
n→∞
机动 目录 上页 下页 返回 结束
例3. 用迭代法求方程 x3 − x −1 = 0在[1, 2]内 实 . 的 根 解法1 解法 将方程变形为 x = x3 −1, 迭代格式为
3 xn = xn−1 −1, 取x0 =1.5
n 0 xn 1.5
1 2 3 L 2.375 12.396 1903.779 L
xn = 3 xn−1 +1, 取x0 =1.5
发散 !
解法2 解法 将方程变形为 x = 3 x +1, 迭代格式为
n 0 7 8 1 2 L xn 1.5 1.35721 1.33086 L 1.32472 1.32472
1
机动 目录 上页 下页 返回 结束
例1. 用二分法求方程 x +1.1x + 0.9x −1.4 = 0 的近似
3 2
要使误差不超过 10−3, 至少应对分区间多少次 ? 实根时,
(Q∆ = −5.67 < 0) ′(x) = 3x2 + 2.2x + 0.9 > 0 Qf ∴f (x) 在(−∞, + ∞) 单 递 , 又 调 增 f (0) = −1.4 < 0, f (1) =1.6 > 0
相关文档
最新文档