matlab实验报告--求代数方程的近似根
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学实验报告
实验序号: 日期: 年 月 日
班级
姓名
学号
实验名称:求代数方程的近似根 问题背景描述:
求代数方程0)(=x f 的根是最常见的数学问题之一,当)(x f 是一次多项式时,称0)(=x f 为线性方程,否则称之为非线性方程.
当0)(=x f 是非线性方程时,由于)(x f 的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.
本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间],[b a ,或给出某根的近似值0x .
实验目的:
1. 了解代数方程求根求解的四种方法:对分法、迭代法、牛顿切线法
2. 掌握对分法、迭代法、牛顿切线法求方程近似根的基本过程。
实验原理与数学模型:
1.对分法
对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根.
设)(x f 在],[b a 上连续,0)()(<⋅b f a f ,即 ()0f a >,()0f b <或()0f a <,()0f b >.则根据连续函数的介值定理,在),(b a 内至少存在一点 ξ,使()0f ξ=.
下面的方法可以求出该根:
(1) 令02
a b
x +=,计算0()f x ;
(2) 若0()0f x =,则0x 是()0f x =的根,停止计算,输出结果0x x =.
若 0()()0f a f x ⋅<,则令1a a =,10b x =,若0()()0f a f x ⋅>,则令10a x =,1b b =;11
12
a b x +=. ……,有k a 、k b 以及相应的2
k k
k a b x +=
. (3) 若()k f x ε≤ (ε为预先给定的精度要求),退出计算,输出结果2
k k
k a b x +=; 反之,返回(1),重复(1),(2),(3).
以上方法可得到每次缩小一半的区间序列{[,]}k k a b ,在(,)k k a b 中含有方程的根.
当区间长k k b a -很小时,取其中点2
k k
k a b x +=
为根的近似值,显然有 1111111
()()()2222
k k k k k k x b a b a b a ξ--+-≤-=⨯⨯-==-
以上公式可用于估计对分次数k .
2. 迭代法
1) 迭代法的基本思想:
由方程()0f x =构造一个等价方程
()x x φ=
从某个近似根0x 出发,令
1()k k x x φ+=, ,2,1,0=k
可得序列{}k x ,这种方法称为迭代法.
若 {}k x 收敛,即
*lim k k x x →∞
=,
只要()x φ连续,有
1lim lim ()(lim )k k k k k k x x x φφ+→∞
→∞
→∞
==
即
可知,{}k x 的极限*x 是()x x φ=的根,也就是()0f x =的根.
当然,若k x 发散,迭代法就失败. 迭代过程1()k k x x φ+=收敛的常用判别标准:
当根区间[,]a b 较小,且对某一0[,]x a b ∈,()'x φ明显小于1时,则迭代收敛
2) 迭代法的加速:
a) 松弛法:
若()x φ与k x 同是*x 的近似值,则1(1)()k k k k k x x x ωωφ+=-+是两个近似值的加权平均,其中k ω称为权重,现通过确定k ω看能否得到加速.
迭代方程是:
()x x ψ←
其中()(1)()x x x ψωωφ=-+,令'()1'()0x x ψωωφ=-+=,试确定ω:
当'()1x φ≠时,有11'()x ωφ=
-,即当1
1'()k k x ωφ=-,'()11'()
k k k x x φωφ--=-时,
可望获得较好的加速效果,于是有松弛法:1(1)()k k k k k x x x ωωφ+=-+,1
1'()
k k x ωφ=-
b) Altken 方法:
**()x x φ=,*x 是它的根,0x 是其近似根. 设10()x x φ=,21()x x φ=,因为
****222121[][()()]()()x x x x x x x x 'x x φφφξ=+-=+-=+-, 用差商
10211010
()()
x x x x x x x x φφ--=--近似代替()'φξ,有 **
212110
()x x x x x x x x -≈+
-- , 解出*x ,得
**()
x x φ=
2
*
212210
()2x x x x x x x -≈-
-+ 由此得出公式
(1)()k k x x φ= ; (2)(1)()k k x x φ=;
(2)(1)2(2)
1(2)
(1)
()
2k k k k
k k k
x x x x
x x x +-==-+, ,2,1,0=k 这就是Altken 公式。
3. 牛顿(Newton)法(牛顿切线法) 1) 牛顿法的基本思想:
()0f x =是非线性方程,一般较难解决,多采用线性化方法.
20000''()
()()'()()()2!
f f x f x f x x x x x ξ=+-+
- 记:000()()'()()P x f x f x x x =+-
()P x 是一次多项式,用()0P x =作为()0f x =的近似方程.
000()()'()()0P x f x f x x x =+-=的解为
000()
'()
f x x x f x =-
0('()0)f x ≠ 记为1x ,一般地,记
1()
'()
k k k k f x x x f x +=-
,2,1,0=k 即为牛顿法公式。
实验所用软件及版本:
Matlab 7.0