实验三:matlab求代数方程的近似根(解)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学原理:介值定理
设 f(x) 在 [a, b] 上连续,且 f(a) f(b)<0,则由介值定
理可得,在 (a, b) 内至少存在一点 使得 f()=0。
对分法
具体步骤
设方程在区间 [a,b] 内连续,且 f(a)f(b)<0,给定 精度要求 ,若有 |f(x)|< ,则 x 就是我们所需要 的 f(x) 在区间 (a,b) 内的 近似根。
(1) 令 x0 (a b) / 2,计算 f ( x0 ); ( 2) 若 | f ( x0 ) | ,则 x0 就是我们所要的近似根,
停止计算, 输出结果 x x0;
(3) 若 f (a ) f ( x0 ) 0,令 a1 a, b1 x0 ; 否则令 a1 x0 , b1 b;
定理 2:如果定理 1 的条件成立,则有如下估计
1 qk | xk 1 xk | | xk x* | | x1 x0 | | xk x* | 1 q 1 q
迭代法收敛性判断
已知方程 x =(x),且 定理 3: (1) 对 x[a, b],有 (x)[a, b]; (1) 对 x[a, b],有|’(x)|q< 1; (2) 则对 x0[a, b] ,由迭代 xk+1 = (xk) 得到 的点列都收敛,且
qk | xk x* | | x1 x0 | 1 q
q 越小,迭代收敛越快
’(x*) 越小,迭代收敛越快
迭代法收敛性判断
以上所给出的收敛性定理中的条件的验证都比较 困难,在实际应用中,我们常用下面不严格的判别 方法:
当有根区间 [a, b] 较小,且对某一 x0[a, b] ,
根据上面的算法,我们可以得到一个每次缩小一半的 区间序列 {[ak , bk ]} ,在 (ak , bk ) 中含有方程的根。 设方程的根为 x* (ak , bk ) ,又 xk
1 1 1 1 | xk | ( bk ak ) ( bk 1 ak 1 )= = k 1 ( b a) 2 2 2 2
diff g=diff(f,v):求符号表达式 f 关于 v 的导数 g=diff(f):求符号表达式 f 关于默认变量的导数 g=diff(f,v,n):求 f 关于 v 的 n 阶导数
f 是符号表达式,也可以是字符串 默认变量由 findsym(f,1) 确定
>> syms x >> f=sin(x)+3*x^2; >> g=diff(f,x) >> g=diff('sin(x)+3*x^2','x')
上机作业
作业(要求写实验报告)
教材:P69, 4
牛顿法是目前求解非线性方程 (组) 的主要方法 牛顿的缺点
对重根收敛速度较慢(线性收敛)
对初值的选取很敏感,要求初值相当接近真解 在实际计算中,可以先用其它方法获得真解的一个粗 糙近似,然后再用牛顿法求解。
Matlab 解方程函数
roots(p):多项式的所有零点,p 是多项式系数向量。 fzero(f,x0):求 f=0 在 x0 附近的根,f 可以使用
相关概念
线性方程 与 非线性方程
f ( x) 0
如果 f(x) 是一次多项式,称上面的方程为线性方 程;否则称之为非线性方程。
对分法
基本思想
将有根区间进行对分,判断出解在某个分段内,然后 再对该段对分,依次类推,直到满足给定的精度为止。
适用范围
求有根区间内的 单根 或 奇重实根。
( x ) (1 w) x w ( x )
加权系数 wk 的确定:令 ’(x)=0 得
w 1 1 '( x )
wk
1 1 '( xk )
松弛迭代法
松弛法迭代公式:
xk 1 (1 wk ) xk wk ( xk )
1 wk , 1 '( xk )
|’(x0)| 明显小于 1 时,则我们就认为迭代收敛
迭代法的加速
设迭代 xk+1 = (xk) ,第 k 步和第 k+1 步得到的近似 根分别为 xk 和 (xk) ,令
xk 1 (1 wk ) xk wk ( xk )
其中 wk 称为加权系数或权重。得新迭代 xk+1 = (xk)
'( ) ( x1 ) ( x0 )
x1 x0 x2 x1 x1 x0
x2 x1 x* x2 ( x * x1 ) x1 x0
( x2 x1 ) 2 x* x 2 x2 2 x1 x0
Altken 迭代法
Altken迭代公式
数学实验
实验三
求代数方程的近似根(解)
实验三、近似求解代数方程
问题背景和实验目的
解方程(代数方程)是最常见的数学问题之一,也是 众多应用领域中不可避免的问题之一。 目前还没有一般的解析方法来求解非线性方程,但如 果在任意给定的精度下,能够解出方程的近似解,则可 以认为求解问题已基本解决,至少可以满足实际需要。 本实验主要介绍一些有效的求解方程的数值方法:对 分法,迭代法 和 牛顿法。同时要求大家学会如何利用 Matlab 来求方程的近似解。
'( xk ) 1
松弛法具有较好的加速效果,甚至有些不收敛的迭 代,加速后也能收敛。
缺点:每次迭代需计算导数
Altken 迭代法
Altken迭代法
用 差商 近似 微商
设 x* 是方程的根,则由中值定理可得
x * x2 ( x*) ( x1 ) '( )( x * x1 )
(x) 即为牛顿
法的迭代函数
f ( x ) f ''( x ) '( x ) [ f '( x )]2
牛顿法的收敛速度
f ( x) ( x) x 令 f '( x )
当 f (x*) 0 时 ’(x*)=0 牛顿法至少二阶局部收敛
百度文库 牛顿法迭代公式
牛顿的优点
至少二阶局部收敛,收敛速度较快,特别是当迭 代点充分靠近精确解时。
Altken 法同样具有较好的加速效果
牛顿迭代法
基本思想:
用线性方程来近似非线性方程,即采用线性化方法 设非线性方程 f (x)=0 , f (x) 在 x0 处的 Taylor 展开为
f ''( x0 ) f ( x ) f ( x0 ) f '( x0 )( x x0 ) ( x x0 ) 2 2! f ( x0 ) f '( x0 )( x x0 ) P ( x )
ak bk ,所以 2
0(k
)
对分法总是收敛的
但对分法的收敛速度较慢 通常用来试探实根的分布区间, 或给出根的一个较为粗糙的近似。
迭代法
基本思想 构造 f (x) = 0 的一个等价方程:x 从某个近似根 x0 出发,计算
( x)
xk 1 ( xk ) k = 0, 1, 2, ... ...
( x2 x1 ) 2 x* x 2 x2 2 x1 x0
( 2)
xk
(1)
( xk ), xk
( xk )
(1)
x k 1
( xk ( 2) xk (1) ) 2 xk ( 2) ( 2) (1) xk 2 xk xk
k = 0, 1, 2, ... ...
得到一个迭代序列
x k k 0

f (x) = 0 f (x) 的零点
等价变换
x = (x)
(x) 的不动点
迭代法的收敛性
收敛性分析

xk 收敛,即 lim xk x *,假设 (x) 连续,则 k
lim xk 1 lim ( xk ) lim xk
inline、字符串、或 @,但不能是方程或符号表达式!
linsolve(A,b):解线性方程组。 solve(f,v):求方程关于指定自变量的解,f 可以是用
字符串表示的方程、符号表达式或符号方程; solve 也可解方程组(包含非线性); 得不到解析解时,给出数值解。
其他 Matlab 相关函数
(4) 令 x1 (a1 b1 ) / 2, 若 | f ( x1 ) | ,则停止计算, 输出结果 x x1;
... ...
若 f (a1 ) f ( x1 ) 0,令 a2 a1, b2 x1; 否则令 a2 x1, b2 b1;
对分法收敛性
收敛性分析
令: P ( x ) 0
f ( x0 ) x x0 f '( x0 )
( f '( x0 ) 0)
牛顿法迭代公式
牛顿迭代公式
f ( x0 ) x x0 f '( x0 )
k = 0, 1, 2, ... ...
xk 1
f ( xk ) xk f '( xk )
k k k


x*
即 x* ( x*)
( x*)
f ( x*) 0
注:若得到的点列发散,则迭代法失效!
迭代法收敛性判断
如果存在 x* 的某个 邻域 =(x*- , x* + ), 使 定义: 得对 x0 开始的迭代 xk+1 = (xk) 都收敛, 则称该迭代法在 x* 附近局部收敛。 设 定理 1: x* =(x*),的某个 邻域 内连续,且对 x 都有 |’(x)|q< 1, 则对 x0 ,由迭 代 xk+1 = (xk) 得到的点列都收敛。
相关文档
最新文档