弦截法求方程根
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-7-14
12数计学院《数值计算》课程建设组
例1,求方程f(x)= x 3–x -1=0在区间[1,1.5]的一个实根,要求准确到小 数点后的第2位。 解:因为 f(1)<0,f(1.5)>0。 故f(x)在(1,1.5)内有根。 考虑二分次数,由误差估计公式:
x xk
*
bk ak
2014-7-14 12数计学院《数值计算》课程建设组
(2.2)
§2 y p1 p0 y=x y=g(x) y p0 y=x
迭代法
x0 y x1 x* y=x x x0 y y=g(x) p0 x* y=g(x)
p1 y=g(x) x1 y=x x
p0 p1 x1 x0 x*
x x0 x*
p1
2014-7-14
12数计学院《数值计算》课程建设组
【课前思考】 1.什么是方程f(x)=0求根的二分法?如何估计近似 根xn的误差? 2.什么是不动点迭代法?怎样判断迭代法 xk 1 ( xk ) 的收敛性? 3.迭代法收敛速度:收敛阶定义,如何加速迭代收 敛? 4.给出方程f(x)=0求根的Newton法,它有何优缺点 ?如何用Newton法求方程根?
2014-7-14
12数计学院《数值计算》课程建设组
§1 方程求根与二分法
第1步产生的 误差 分析:
x1
ab 2
对于给定的精度 ,可估计二分法所需的步数 k :
ba 第 k 步产生的 xk 有误差 |xk x*| k 2
ba | x x*| 有误差 1 2
ba ε k 1 2
2014-7-14
12数计学院《数值计算》课程建设组
§1 方程求根与二分法
单个变量的方程 f(x)=0 (1.1) 求根是数值计算经常遇到的问题.当f(x)为一般连续函数时,称式 (2.1.1)为超越方程,如果f为多项式 f(x)=a0xn+ a1xn-1+ …+ an-1x+ an (1.2)
若a0≠0 ,f(x)为n次多项式,此时方程(1.1)称为代数(或多项式)方程. 如果x*(实数或复数)使f(x*)=0 ,则称x*为方程(1.1)的根,若f(x)= (x-x*)mg(x) ,m为正整数,且 g(x*)≠ 0 ,当m>1时,称x*为方程 (1.1)的m重根或称x*是f的m重零点.若x*是f的m重零点,且g充分 光滑,则 f(x*)= f’(x*)=…= f(m-1)(x*)= 0 , f(m)(x*) ≠ 0 。当f为式 (1.2)表示的代数多项式时,根据代数基本定理可知方程(1.1)有n 个根(含复根,m重根为m个根),对n=1,2的代数方程的根是大家 熟悉的。
第二章 非线性方程求根
§1 方程求根与二分法 §2 迭代法 §3 迭代收敛的加速法 §4 牛顿法
§5 弦截法与抛物线法 §6 解非线性方程组的牛顿迭代法
2014-7-14 12数计学院《数值计算》课程建设组
【本章重点】 1. 不动点迭代法及其收敛性与收敛速度。 2. Newton迭代法
【学习目标】 本章主要掌握方程求根的不动点迭代法及其收敛 性,收敛阶及Steffensen加速迭代原理,熟练掌 握Newton法及其收敛性和Newton法应用于求平方 根和立方根。
x
2014-7-14
12数计学院《数值计算》课程建设组
x1
例2.3 求方程f(x)= x3–x -1=0在x0=1.5附近的根x*. 解 若将方程改写为 x=x3-1, 3 构造迭代法 xk+1 xk 1 (k 0,1, 2,...) 由x0=1.5,x1=2.375,x2=12.39,…可知,xk显然不收敛.
2014-7-14 12数计学院《数值计算》课程建设组
程序设计
例:利用二分法求方程f(x)= x2 1 -tanx在区间[0,∏/2] 内的实根,使精度达到10-5。
x=0:0.1:pi/2; y=sqrt(x.^2+1)-tan(x); plot(x,y)
2014-7-14
12数计学院《数值计算》课程建设组
§2
迭代法
定理
考虑方程 x = g(x), g(x)C[a, b], 若
( I ) 当 x[a, b] 时, g(x)[a , bx,y ]; [a, b]有|g(x)-g(y) | ≤ L|x-y| ( II ) 0 L < 1 使得 | g’ (x) | L < 1 对 x[a, b] 成立。 则任取 x0[a, b],由 xk+1 = g(xk) 得到的序列 x k g(x) 在[a, b]上的唯一不动点。并且有误差估计式: 唯一 存在
2014-7-14 12数计学院《数值计算》课程建设组
§1
方程求根与二分法
而当n=3,4时方程的根,可在数学手册中查到虽可用公式表 示,但表达式太复杂,一般不用;当n≥5已没有直接用公式表 达的求根算法。因此对n≥3的代数方程求根方法与一般超越方 程(1.1)一样都采用迭代方法求根,设 (表示f在区间 上连续), 若有f(a)f(b)<0,则f(x)=0在区间 上至少有一个实根, 称为 有根区间,通常可用逐次搜索法求得方程(1.1)的有根区间. 例2.1 求方程f(x)=x3-11.1x2+38.8x-41.77=0的有根区间.
x6
a6 b6
2
2014-7-14
例2,求方程f(x)= x 3 –e-x =0的一个实根。 因为 f(0)<0,f(1)>0。 故f(x)在(0,1)内有根 用二分法解之,(a,b)=(0,1)计算结果如表: k a bk xk f(xk)符号 0 0 1 0.5000 - 1 0.5000 - 0.7500 - 2 0.7500 - 0.8750 + 3 - 0.8750 0.8125 + 4 - 0.8125 0.7812 + 5 - 0.7812 0.7656 - 6 0.7656 - 0.7734 + 7 - 0.7734 0.7695 - 8 0.7695 - 0.7714 - 9 0.7714 - 0.7724 - 10 0.7724 - 0.7729 + 取x10=0.7729,误差为| x* -x10|<=1/211 。
2
b a
k 1 26
即
有2k>50 ,k>50/ln2≈5.645 (2 =64) k至少取6
用二分法解之,(a,b)=(1,1.5)计算结果如表:
1.5 1 0.005 k 1 2
取x6= 1.3242 ,误差为| x* -x6|<0.005 。
2014-7-14 12数计学院《数值计算》课程建设组
*
ak bk 此时 xk 即为所求方程的近似解. 2
以上方法就是用于求非线性方程实根近似值的二分法.
ak xk
2014-7-14 12数计学院《数值计算》课程建设组
x*
bk
§1 方程求根与二分法
a
x a1
x*
x2 b
b
xk 1 xk ε
x* x
f ( x) ε
不能保证 x 的精度
12数计学院《数值计算》课程建设组
例3:用二分法求方程 2 x 3 5x 1 0 在区间(1,2)内的实根,要 求误差限为 102 。
解:令 f ( x) 2 x 3 5x 1 f(1)<0, f(2)>0 记I0=[1,2] , x0 =(1+2)/2=1.5 因为 f(x0) f(1)>0 得I1=[1.5, 2] , x1 =(1.5+2)/2=1.75 f(x1) f(1.5)<0 得I2=[1.5, 1.75] , x2 =(1.5+1.75)/2=1.625 ……. I6=[1.681875, 1.6875], I7=[1.671875, 1.679688] b7 - a7=0.781310-2 < 10-2 x*x7 =1.6758
function [x,k]=deminmethod(a,b,f,emg) fa=feval(f,a); %a,b表示求解区间[a,b]的端点 deminmethod.m fab=feval(f,(a+b)/2); %f表示所求解方程的函数名 k=0; %emg是精度指标 while abs(b-a)>emg if fab==0 %x表示所求近似值 x=(a+b)/2; %k表示循环次数 return; elseif fa*fab<0 b=(a+b)/2; 函数文件func2.m x0 = else a=(a+b)/2; function f=func2(x) end 0.94145973617123 f=sqrt(x^2+1)-tan(x); fa=feval(f,a); k= 在命令窗口中输入: fab=feval(f,(a+b)/2); k=k+1; f=@func2; 18 end [x0,k]= deminmethod(0,pi/2,f,10^-5) x=(a+b)/2;
2014-7-14 12数计学院《数值计算》课程建设组
§1 方程求根与二分法
其中每一个区间都是前一个长度的一半,从而[ ak , bk]的长度为
bk ak (b a) / 2
k
如此继续下去,则有这些区间将收敛于一点 ,该点即为所求的根. 当做到第k步时,有
为给定精度
bk ak b a x xk k 1 2 2
ln b a ln ε 1 k ln 2
①简单; ② 对f (x) 要求不高(只要连续即可) .
①无法求复根及偶重根 ② 收敛慢 注:用二分法求根,最好先给出 f (x) 草图以确定根的大概 位臵。或用搜索程序,将[a, b]分为若干小区间,对每一个 满足 f (ak)· f (bk) < 0 的区间调用二分法程序,可找出区间[a, b]内的多个根,且不必要求 f (a)· f (b) < 0 。
§2
迭代法
(2.3)
若将方程改为 x 3 x 1 , n! 3 xk+1 xk 1(k 0,1,2,...) 构造迭代法 (2.4) r ! n r ! 计算结果见表2-2. 表 2-2
ห้องสมุดไป่ตู้
从结果看它是收敛的,且在6位有效数字时x7=x8=1.32472即 为根x*的近似值. 例题表明构造迭代法(2.2),必须使迭代序列{xk}收敛,才能求得 *. 2014-7-14 方程 (2.1)的解x12 下面给出解的存在唯一性和迭代收敛性定理. 数计学院《数值计算》课程建设组
取[a,b]区间二等分的中点x0 =(a+b)/2,
若f(x0)=0,则x0是f(x)=0的实根 若f(a)f(x0)<0 成立,则 x * 必在区间(a, x0)内,取a1=a,b1= x* x0;否则 x * 必在区间 (x0,b)内,取a1= x0,b1=b, 这样,得到新区间(a1,b1),其长度为[a,b]的一半,如此继续 下去,进行k次等分后,得到一组不断缩小的区 间,[a,b],[a1,b1],......[ak,bk].
2014-7-14 12数计学院《数值计算》课程建设组
§2 迭代法
f (x) = 0 f (x) 的根
等价变换
x = g (x) g (x) 的不动点
(2.1)
从一个初值 x0 出发,计算 x1 = g(x0), x2 = g(x1), …, x xk+1 = g(xk), … 若 k k 0 收敛,即存在 x* 使得 lim xk x * ,且 g 连续,则由 lim x lim g x 可 k 1 k k k k 知 x* = g(x* ),即x* 是 g 的不动点,也就是f 的根。 称 xk+1 = g(xk) 为不动点迭代法.
解 根据有根区间定义,对方程的根进行搜索计算,结果如下 表:
方程的三个有根区间为[2,3],[3,4],[5,6].
2014-7-14 12数计学院《数值计算》课程建设组
§1 方程求根与二分法
二分法原理 给定方程f(x)=0,设f(x)在区间[a,b]连续,且 f(a)f(b)<0,则方程f(x)在(a,b)内至少有一根,为便于讨论, 不妨设方程f(x)=0在(a,b)内只有一实根x*采取使有根区间 逐步缩小,从而得到满足精度要求的实根 x*的近似值xk。
k 0 1 2 3 4 5 6
ak bk 1.0 1.5 1.2500 - - 1.3750 1.3125 - - 1.3438 - 1.3281 1.3203 -
xk 1.2500 1.3750 1.3125 1.3438 1.3281 1.3203 1.3242
f(xk)符号 - + - + + - -