【数学建模学习】exp3_求代数方程的近似根

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

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

一、问题背景和实验目的

求代数方程0)(=x f 的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当)(x f 是一次多项式时,称0)(=x f 为线性方程,否则称之为非线性方程.

当0)(=x f 是非线性方程时,由于)(x f 的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.

本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间],[b a ,或给出某根的近似值0x .在实际问题抽象出的数学模型中,0x 可以根据物理背景确定;也可根据)(x f y =的草图等方法确定,还可用对分法、迭代法以及牛顿切线法大致确定根的分布情况.

通过本实验希望你能:

1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程;

2. 求代数方程(组)的解.

二、 相关函数(命令)及简介

1.abs( ):求绝对值函数.

2.diff(f):对独立变量求微分,f 为符号表达式. diff(f, 'a'):对变量a 求微分,f 为符号表达式.

diff(f, 'a', n):对变量 a 求 n 次微分,f 为符号表达式. 例如: syms x t

diff(sin(x^2)*t^6, 't', 6) ans=

720*sin(x^2)

3.roots([c(1), c(2), …, c(n+1)]):求解多项式11 n n n c x c x c ++++的所有

根.例如:

求解:32672270x x x ---=. p = [1 -6 -72 -27]; r = roots(p) r =

12.1229 -5.7345 -0.3884

4.solve('表达式'):求表达式的解.

solve('2*sin(x)=1') ans = 1/6*pi

5.linsolve(A, b):求线性方程组 A*x=b 的解. 例如:

A= [9 0; -1 8]; b=[1; 2]; linsolve(A, b) ans=

[ 1/9] [19/72]

6.fzero(fun, x0):在x0附近求fun 的解.其中fun 为一个定义的函数,用“@函数名”方式进行调用. 例如:

fzero(@sin, 3) ans=

3.1416

7.subs(f, 'x ', a):将 a 的值赋给符号表达式 f 中的 x ,并计算出值. 例如:

subs('x^2 ', 'x ', 2) ans = 4

三、 实验内容

首先,我们介绍几种与求根有关的方法:

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 .

分析以上过程不难知道,对分法的收敛速度与公比为1

2

的等比级数相同.由

于10

21024=,可知大约对分10次,近似根的精度可提高三位小数.对分法的收敛速度较慢,它常用来试探实根的分布区间,或求根的近似值.

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 φ+=收敛的一些判别方法:

定义:如果根*x 的某个邻域*x x δ-≤中,使对任意的0x ,迭代过程1()k k x x φ+=, ,2,1,0=k *x 附近局部收敛. 定理1: 设**()x x φ=,在*x 的某个邻域Ω内'()x φ连续,并且'()1x q φ≤<,x ∈Ω,则对任何0x ∈Ω,由迭代1()k k x x φ+=决定的序列{}k x 收敛于*x . 定理2:条件同定理 1,则

*

101k

k q x x x x q

-≤--

**()

x x φ=

相关文档
最新文档