二分法求非线性方程的数值解
计算方法21-非线性方程

区间,如此反复,直到求出满足精度要求的近似根.
具体步骤如下:
10
令 (a, b) (a0 , b0 )
取a0 , b0 中点 x0
a0 b0 2
将其二分,
这时有三种情况: 若 f x0 0 , 则 x x0 ; 否则, x f a f x 0 , 则 a , x0 , 令 a1 a , b1 x0 ; 若 0
1 1 b2 a2 (b1 a1 ) 2 (b a ) , 2 2 ba bk ak k 2
ak bk 区间 ak , bk 的中点 xk 形成一个序列 x0 , x1 ,, xk ,, 2
显然有 lim x k x .
k
13
实际计算中,对于给定的根的允许误差 0 ,
5
求方程根的近似值,需要解决的问题:
⑴ 根的存在性. ⑵ 根的隔离. 要判断方程有没有根,有几个; 找出有根区间,使得在较小的区间内
方程只有一个根,以得到根的近似值.
⑶ 根的精确化. 利用合适的数值计算方法,逐步 把根精确化,直至满足精度要求.
6
二、逐步搜索法
假设f(x)在有根区间[a,b]单值连续,且f(a)<0.
一般步骤:
取合适的步长
y
ba h , n
f(x) 0 a x* b x
从x0=a出发,按步长逐步向右跨进行搜索,
若发现f(xk)与f(a)异号,则确定一个缩小的有根区间
[ xk 1 , xk ], 其宽度等于步长h.
特别地,若f(xk)=0,则xk就是所求的根.
7
例 对方程f (x)=x3-x-1=0 搜索有根区间.
12
非线性方程求解

⾮线性⽅程求解基于MATLAB的⾮线性⽅程的五种解法探讨摘要:本⽂利⽤matlab软件对⾮线性⽅程解法中的⼆分法、简单迭代法、⽜顿法、割线法以及Steffensen法的数值分析⽅法的算法原理及实现⽅法进⾏了探讨。
对f x x x=+-()2ln2的零点问题,分别运⽤以上五种不同的⽅法进⾏数值实验,⽐较⼏种解法的优缺点并进⾏初步分析评价。
关键词:⼆分法、简单迭代法、⽜顿法、割线法、Steffensen法1、引⾔在很多实际问题中,经常需要求⾮线性⽅程f(x) =0的根。
⽅程f(x) =0的根叫做函数f(x)的零点。
由连续函数的特性知:若f(x)在闭区间[a,b ]上连续,且()()0f a f b<.则f(x) =0在开区间(a,b)内⾄少有⼀个实根。
这时称[a,b]为⽅程f(x) =0的根的存在区间。
本⽂主要对⾮线性⽅程的数值解法进⾏分析,并介绍了⾮线性⽅程数值解法的五种⽅法。
并设=+-.f x x x()2ln2f x在[1,2]上的图形,如图1:. 显然,函数在[1,2]之间有⼀个零点。
⾸先画出()2、计算机配置操作系统Windows 7 旗舰版内存2GB处理器AMD 4核 A6-3400M APU 1.4GHz图.13、⼆分法⼆分法的基本思想是将⽅程根的区间平分为两个⼩区间,把有根的⼩区间再平分为两个更⼩的区间,进⼀步考察根在哪个更⼩的区间内。
如此继续下去,直到求出满⾜精度要求的近似值。
设函数()f x 在区间[a,b ]上连续,且f(a)·f(b) <0,则[a,b ]是⽅程f(x) =0的根的存在区间,设其内有⼀实根,记为x*。
取区间[a,b ]的中点()2k a b x +=并计算1()f x ,则必有下列三种情况之⼀成⽴: (1) 1()f x =0,x1就是⽅程的根x*;(2)()f a .1()f x <0,⽅程的根x*位于区间[a, 1x ]之中,此时令111,a a b x ==; (3)1()f x .()f b <0,⽅程的根x*位于区间[1x ,b ]之中,此时令11a x =,1b b =。
数值分析3.1.二分法、迭代法及收敛性

上述令p→∞, 及limxk+p=x* (p→∞)即得(2.6)式. 证毕. 注:误差估计式(2.5)原则上确定迭代次数,但它由 于含有信息 L 而不便于实际应用. 而误差估计式(2.6) 是实用的,只要相邻两次计算结果的偏差足够小即 可保证近似值 xk 具有足够精度.
注: 对定理1和定理2中的条件2º 可以改为导数,即 在使用时如果(x)∈C[a, b]且对任意x∈[a, b]有
显然f(x)∈C[a, b],且满足f(a)=(a)-a>0, f(b)=(b)-b<0, 由连续函数性质可知存在 x*∈(a, b) 使 f(x*)=0,即 x*=(x*),x*即为(x)的不动点. 再证不动点的唯一性. 设x1*, x2*∈[a, b]都是(x) 的不动点,则由(2.4)得
可以如此反复迭代计算
xk+1=(xk) 到的序列{xk}有极限 (k=0,1,2,). (2.2)
(x)称为迭代函数. 如果对任何x0∈[a, b],由(2.2)得
lim xk x .
k
则称迭代方程(2.2)收敛. 且x*=(x*)为(x)的不动点, 故称(2.2)为不动点迭代法.
例1 用二分法求方程 f(x)=x3-x-1=0在(1, 1.5)的实根, 要求误差不超过0.005.
解 由题设条件,即:
|x*-xn|≤0.005 则要
1 2
n 1
(b a)
1 2
n 1
(1.5 1)
1 2
n 2
0.005
2 由此解得 n 1 5.6,取 n=6, 按二分法计算过程见 lg 2
L2 xk 1 xk 2 Lk x1 x0 .
于是对任意正整数 p 有
数值分析 第7章 非线性方程的数值解法..ppt;ppt

7.1 方程求根与二分法
7.1.1 引言 单变量非线性方程的一般形式 (1.1) f ( x) 0 其中 x R , f ( x) C[a, b], [a, b] 也可以是无穷区间.
f(x)是高次多项式函数或超越函数 如果函数 f (x) 是多项式函数,即
f ( x ) a0 x n a1 x n1 an1 x an (a0 0),
xk
可得一个近似根的序列 x0 , x1 , x2 , xk ,,
2
9
且
x* xk (bk ak ) / 2 (b a) / 2k 1 , x * xk , k ln(b a ) ln 1
ln 2
(1.3)
(4) 要使
只要二分足够多次(即 k 充分大),便有
建立迭代公式 各步迭代的结果如下表
表7 3 k xk k xk
x1 2.375, x2 12.39.
xk 1 3 xk 1 (k 0,1,2,).
发散
如果仅取6位数字,
结果x7 与 x8 完全相同, 说明:①迭代函数不唯一,②迭代点列可能收敛,也可 0 1 .5 5 1.32476 能发散,迭代收敛与否不仅与迭代函数有关,还与初 1 1.35721 6 1.32473 x7 即为所求的根. 始点有关。
(1.2)
其中 a0 0, ai (i 0,1,, n) 为实数,则称方程(1.1)为 n 次代数方程.
超越函数 不能表示为多项式的函数
如 (x)=3x5-2x4+8x2-7x+1 (x)=e2x+1-xln(sinx)-2 高次代数方程 超越方程
3
如果实数 x *满足 f ( x*) 0,则称 x * 是方程(1.1)的 根,或称 x *是 f (x)的零点. 若 f (x)可分解为 f ( x) ( x x*)m g ( x),
第7章 非线性方程的数值解法

设 0为给定精 度要求,试确定分半次 数k 使
x* xk
ba 2k
由 于2k , 两 边 取 对 数 , 即 得
ba
k ln(b a) ln
ln 2
数值分析
18/47
§例1: 5.用2 二二分分法 求 法x3 4x2 10 0在[1,2]内 的 根 ,
要 求 绝 对 误 差 不 超 过1 102。 2
第七章 非线性方程的数值解法
数值分析
本章内容
§7.1 方程求根与二分法 §7.2 不动点迭代及其收敛性 §7.4 牛顿法 §7.5 弦截法
数值分析
2/47
本章要求
1. 掌握二分法基本原理,掌握二分法的算法 流程;
2. 掌握理解单点迭代的基本思想,掌握迭代 的收敛条件;
3. 掌握Newton迭代的建立及几何意义,了解 Newton迭代的收敛性;
27/47
§ 7.2 不动点迭代法及其收敛性
不动点迭代的几个重要问题: 1、迭代格式的构造; 2、初值的选取; 3、敛散性的判断;☆ 4、收敛速度的判断。
数值分析
28/47
§ 7.2 不动点迭代法及其收敛性
三.压缩映射原理(整体收敛性)
考虑方程x g( x), g( x) C[a, b], 若
则f (x)=0在[a, b]内必有一根。
二. 过程
将区间对分,判别f (x)的符号,逐步缩小有根区 间。
数值分析
14/47
§7.1.2 二分法
三. 方法
取xmid=0.5*(a+b)
若f(xmid) < (预先给定的精度),则xmid即为根。
否则,若f (a)*f (xmid)<0,则取a1=a,b1=xmid 若f (a)*f (xmid)>0,则取a1=xmid,b1=b 此时有根区间缩小为[a1, b1],区间长度为 b1-a1=0.5*(b-a)
基于不同方式技巧解决非线性问题的分析

基于不同方法解决非线性问题的分析摘要: 本文主要研究非线性方程的数值解法中的二分法,迭代法以及牛顿下山法对于解决非线性问题所体现出来的各自不同的特点 .通过实例来比较,分析在求解非线性方程时各自的优缺点。
借以研究这三种方法在求解非线性方程时各自的作用,方便学习及利用以上三种方法快速,准确地解决非线性问题.关键词: 二分法,迭代法,牛顿下山法,优缺点.1.引言: 代数方程求根问题是古老的数学问题,是在16世纪就找到了三次,四次方程的求根公式.但直到19世纪才证明n>=5次的一般代数方程式不能用代数公式求解.因此,需要研究用数值方法求得满足一定精度的代数方程式的近似解. 在工程和科学技术中许多问题常常归结为求解非线性方程式问题,例如在控制系统的设计领域,人口增长的研究等. 在科学研究和工程设计中, 经常会遇到的一大类问题是非线性方程f(x)=0 的求根问题,其中f(x)为非线性函数。
方程f(x)=0的根, 亦称为函数f(x)的零点 如果f(x)可以分解)()(*)(x g m x f x x -=,其中m 为正整数且0)(*≠x g .当m>1时称x *是f(x)的m 重零点,或称方程f(x)=0的m 重根;当m=1时称x*为单根.2.分析比较2.1二分法在非线性方程求解中的应用2.1.1问题的提出在无阻尼强迫震荡的研究中会碰到函数h(x)=xsin(x).寻找在区间[0,2]内的值x,满足h(x)=1(函数sin(x)用弧度计算)。
[1]2.1.2二分法的思路求方程根的一种最直观,最简单的数值方法是二分法(Dichotomy ).设函数f(x)在区间[a,b]上连续,且[a,b]为有根区间,不妨设f(a)<0,f(b)>0.首先将区间[a,b]二分,即取中点2/)(0b a x+=,若0)(0=x f ,则x x 0=就是方程式f(x)=0的根.否则,若0)(0<x f ,方程的有根区间变为[(a+b)/2,b];若0)(0>x f ,方程的有根区间变为[a,(a+b)/2],将新的有根区间记为[b a 11,],长度2/)(11a b a b -=-为[a,b]的一半.重复上述过程,即取a 2=(b a 11+)/2,将[b a 11,]再二分,又可得到新的有根区间],[22b a ,长度2/)(1122a b a b -=-为[b a 11,]的一半. 通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。
非线性方程的数值解法

2. 2 二分法
二分法的误差估计
由于 x − x* ≤ 1 (b − a ) = b − a k k k k +1 k +1
2
只要有根区间[a 只要有根区间 k+1, bk+1]的长度小于预先给定的误 的长度小于预先给定的误 差ε,那么就可以取 作为所求根x*的第 次近似值。 作为所求根 的第k+1次近似值。其误差估计为 的第
计算机科学与工程系 21
2.3 迭代法
简单迭代法的原理 迭代法的收敛性 迭代加速法
计算机科学与工程系 22
2.3.1 简单迭代法原理
基本思想
将方程f 将方程 (x) = 0化为一个等价的方程 化为一个等价的方程 x = ϕ (x ) 从而构成序列
x k +1 = ϕ ( x k ) k = 0 , 1, 2 , L
计算机科学与工程系
9
2.1.2 根的隔离方法
画图法
f(x)
x0 =
a
x0 + h
x* b
计算机科学与工程系 10
2.1.2 根的隔离方法
逐步扫描法
设单值连续函数f(x)在有根区间 b],从左端点 = 在有根区间[a, ,从左端点x 设单值连续函数 在有根区间 a出发,按某个预先选定的步长 一步一步地向右跨 出发, 出发 按某个预先选定的步长h一步一步地向右跨 每跨一步都检验每步起点x 和终点x 每跨一步都检验每步起点 0和终点 0 + h的函数值 的函数值 如果
1 x − xk ≤ k +1 (b − a) 2
*
计算机科学与工程系 16
1 xk = (ak + bk ) 2
输入 a, b, ε 定义f (x) 是
非线性方程数值解法及其应用

非线性方程数值解法及其应用摘要:数值计算方法主要研究如何运用计算机去获得数学问题的数值解的理论和算法。
本文主要介绍非线性方程的数值解法以及它在各个领域的应用。
是直接从方程出发,逐步缩小根的存在区间,或逐步将根的近似值精确化,直到满足问题对精度的要求。
我将从二分法、Steffensen加速收敛法、Newton迭代法、弦截法来分析非线性方程的解法及应用。
关键字:非线性方程;二分法;Steffensen加速收敛法;代数Newton法;弦截法一、前言随着科技技术的飞速发展,科学计算越来越显示出其重要性。
科学计算的应用之广已遍及各行各业,例如气象资料的分析图像,飞机、汽车及轮船的外形设计,高科技研究等都离不开科学计算。
因此经常需要求非线性方程 f(x) = O的根。
方程f(x) = O 的根叫做函数f(x)的零点。
由连续函数的特性知:若f(x)在闭区间[a,b]上连续,且f(a)·f(b)<O,则f(x) = O在开区间(a,b)内至少有一个实根。
这时称[a,b]为方程f(x) = O的根的存在区间。
本文主要是对在区间[1.2]的根的数值解法进行分析,介绍了非线性方程数值解法的四种方法,从而得到在实际问题中遇到非线性方程根的求解问题的解决方法。
二、非线性方程的数值解法1、二分法二分法的基本思想是将方程根的区间平分为两个小区间,把有根的小区间再平分为两个更小的区间,进一步考察根在哪个更小的区间内。
如此继续下去,直到求出满足精度要求的近似值。
设函数f(x)在区间[a,b]上连续,且f(a)·f(b)<O,则[a,b]是方程f(x)=O 的根的存在区间,设其内有一实根,记为。
取区间[a,b]的中点,并计算,则必有下列三种情况之一成立:(1)= O,就是方程的根;(2)f(a)·f()<O,方程的根位于区间[a,]之中,此时令,;(3)f()·f(b)<O,方程的根位于区间[,b]之中,此时令。
非线性方程(组)的解法

lnim(bn
an )
lim
n
2n1
(b
a)
0
lim
n
an
lim
n
bn
x
取
x
cn
1 2
(an
bn
)为
x 的近似解。
7
二分法
迭代终止准则
an - bn
即
x - cn
bn an 2
2
8
2.2一般迭代法
2.2.1 迭代法及收敛性
对于 f (x) 0 有时可以写成 x (x) 形式 如: x3 x 1 0 x 3 x 1
12
例题
例2.2.1 试用迭代法求方程 f (x) x3 x 1 0
在区间(1,2)内的实根。 解:由 x 3 x 1建立迭代关系
xk1 3 xk 1 k=0,1,2,3…… 计算结果如下:
13
例题
精确到小数点后五位
x 1.32472 1 105
2
14
例题 但如果由x x3 1建立迭代公式
xk1 xk3 1 k 1,2,...
仍取 x0 1.5,则有 x1 2.375 ,x2 12.39 显 然结果越来越大,{xk }是发散序列
15
2.3 Newton迭代法
设x*是方程f (x) = 0的根, 又x0 为x* 附近的一个值,
将f (x) 在x0 附近做泰勒展式:
f (x)
二分法
用二分法(将区间对平分)求解。
令
a1
a, b1
b, c1
1 2
(a1
b1 )
若 f (a1) f (c1) 0,则[a1, c1] 为有根区间,否 则 [c1,b1]为有根区间
非线性方程数值解法

对分区间法
对分法的基本思想
对分法的基本思想是在平分有根区间的 过程中,逐步缩小有根区间. 设函数f(x)在区间[a, b]上连续,且f(a) f(b)<0 ,则方程f(x)=0在(a, b)内至少有一 个根.为简便起见,假定方程f(x)=0在(a, b) 内仅有一个根.这样(a, b)为有根区间.这 时可用下面的对分法求方程f(x)=0的近似 根.
迭代法的整体收敛性
定理1 (迭代收敛定理)设(x)在[a, b]上具有一阶 导数,且 1°x[a, b] ,总有(x)[a, b] ; 2°存在0m<1,使x(a, b) ,有'(x)m 则 1°方程x=(x)在[a, b]内有且仅有一根α ,其中α 为对任意初值x0 [a, b]由迭代过程xk+1=(xk)所产生 序列的极限. m xk xk xk 1 2°有估计式
求根步骤
(1)确定所给方程存在多少个根. (2)进行根的隔离,找出每个有根区间, 有根区间内的任一点都可看成是该根的 一个近似值. (3)逐步把近似根精确化,直到足够精 确为止.
根的隔离
根的隔离
确定出若干个小区间,使每个小区间有 且仅有方程f(x)=0的一个根,这个步骤称 为根的隔离.其中每个有根小区间都称为 隔根区间.
第三章
非线性方程的数值解法
根的概念
给定方程f(x)=0,如果有α使得f(α)=0, 则称α为f(x)=0的根或f(x)的零点. 设有正整数m使得f(x)=(x-α)mg(x) 且g(α)0 ,则当m2时,称α为f(x)=0的 m重根;当m=1时,称为f(x)=0的单根. 本章只讨论实根的求法.
非线性方程的数值解法

非线性方程的数值解法《计算方法》期末论文论文题目非线性方程的数值解法学院专业班级姓名学号指导教师日期目录摘要第1 章绪论1.1 问题的提出和研究目的和意义1.2 国内外相关研究综述1.3 论文的结构与研究方法第2 章非线性方程的数值解法2.1 二分法2.2 迭代法2.3 迭代法的局部收敛性及收敛的阶2.4 牛顿迭代法2.5 牛顿法的改进2.6 插值摘要数值计算方法,是一种研究解决数学问题的数值近似解方法,它的计算对象是那些。
在理论上有解而又无法用手工计算的数学问题。
在科学研究和工程技术中都要用到各种计算方法。
例如 在地质勘探、汽车制造、桥梁设计、天气预报和汉字设计中都有计算方法的踪影。
本文讨论了非线性方程的数值解法:非线性方程的二分法、迭代法原理、牛顿迭代法,迭代法的收敛性条件及适合非线性方程的插值法等等。
第1 章绪论可以证明插值多项式L (x) n 存在并唯一。
拉格朗日插值多项式的算法 step1.输入 插值节点控制数n 插值点序列 i i x , yi=0,1,…,n 要计算的函数点x。
step2. FOR i =0,1,…,n i 制拉格朗日基函数序列问题的提出和研究目的和意义非线性方程的问题在工程实践中有很多用途 研究其数值解法是当前一个研究方向。
目前已有相当一部分算法在广泛使用于工程实践中。
非线性方程组和无约束最优化的数值解法 一直是数值优化领域中热门的研究课题。
本文对传统的方法进行改进和提出新的算法 该算法不仅有重要的论价值,而且有很高的实用价值。
例如在天体力学中,有如下Kepler 开普勒方程 x-t- sin x=0,0< <1,其中t 表示时间 x 表示弧度,行星运动的轨道x 是t 的函数。
也就是说,对每个时刻i t 上述方程有唯一解i x ,运动轨道位置。
国内外相关研究综述随着科学技术的高速发展和计算机的广泛应用 求解形如F(x)=0 的非线性方程组问题越来越多的被提出来了 其中F 是的连续可微函数。
非线性方程的5种数值解法及其

①收敛速度比较慢; ②只能求解奇数重根,不 能求解偶数重根;
函数在有根区 间上连续,且在 区间端点处的 函数值异号;
①在整个有根 区间上,一介导 函数值不变号, 且恒不为0; ②选取的初始 值的一介,二介 导函数值号;
引言
论 文 结 构 框 架
相关领域研究回顾
相关理论知识
介绍了这5种方法的基本 原理及算法步骤 以方程 x 6 x 2 x 5 0 为例, 用matlab程序分别实现
3 2
及算法步骤
算例分析 综合分析比较
分析比较,归纳其应用 范围和优缺点
1 引言
• 在实际问题中,求解非线性方程根的精确值很困难, 大部 分的情况下,我们只需要求解出近似值即可.而数值解法, 就是用数值迭代的方法来求解近似值的一种方法. • 其中最早提出来的是二分法.
表1:最终的迭代结果比较
初始值
二分法
a 9 b 5
迭代次数
33
迭代时间
0.015秒
数值解
-5.80383649934083
netwon迭 代法
反函数法 求交法
x 0 6 .5
4
3 4
0.01秒
0.01秒 0.006秒
-5.80383649910152
-5.80383649910152 -5.80383649910152
6 .5
区间是 9 , 5 ,然后再选取初始值 x 0
和精确度
10
9
最后用matlab语言对这5种方法逐一实现,求解出该方程 根的近似值,并要求能得到每一步迭代的结果.(具体程序 见附录).
二分法(对分法)

x k
b1 k a1
2
2
4
2
xk x
(5) 返回第 2 步
优点:简单易用,总是收敛
缺点:收敛慢,不能求复根和偶数重根,一次只能求一个根
ba
0 (k )
2k
结论:二分法总是收敛的! (条件:函数满足介值定理)
若 f(x) 是一次多项式,则称为线性方程;
否则称为非线性方程
代数方程:
n=1, 2, 3, 4 时有相应的求根公式,n 5 时不存在求根公式
非线性方程可能有(无穷)多个解,一般要强调 求解区间
非线性方程一般没有直接解法,通常用迭代法求数值解
3
4
基本概念
二分法(对分法)
实根与复根
x0
x*
x1
y
y=x
y=x
y=(x)
p0
p0
p1
p1
x
13
收敛性分析
设 (x) 连续,若
x1 x0
x*
x
x0 x*
x1
14
解的存在唯一性
xk k 0 收敛,即
lim xk x
k
lim x k 1 lim ( xk ) lim x k
k
y= (x)
0.134 1
2
'( x ) 0
''( x )
2
3
不动点迭代的加速
Aitken 加速技巧
Steffensen 迭代方法
0
一般来说,|'(x*)| 越小,收敛越快!
非线性方程(组)的解法

f ( x) f ( xk ) f ( xk )(x xk ) 一元函数 F ( x) F ( x k ) F ( xk )(x xk ) 0 x k为向量 F ( x k )(x x k ) F ( x k ) x x k F ( x k )1 F ( x k )
18
3.非线性方程组的迭代解法
f1 ( x1 , x2 , , xn ) 0 f1 ( x) f1 ( x1 , L , xn ) 或 F ( x) L 0 L f ( x) f ( x , L , x ) f ( x , x ,, x ) 0 n n n 1 n n 1 2
9
迭代法及收敛性
考虑方程 x ( x)。 这种方程是隐式方程,因而不能直接求出它的根。
但如果给出根的某个猜测值 x0, 代入 x ( x) 中的右端得到 x1 ( x0 ),再以 为一个猜测值,
x1
代入 x ( x) 的右端得 x2 ( x1 ) ,反复迭代 得
1 f ( x ) f ( x0 ) ( x x0 ) f ( x0 ) ( x x0 )2 f ( ) 2 其中在x和x0之间
0 f ( x) f ( x0 ) ( x x0 ) f ( x0 ) 0
16
Newton迭代法
有:
*
f ( x0 ) x x0 f ( x0 )
能为力时,数值方法则可以借助于计算机出色完成。
2
2.1二分法
概念:
有根区间:存先确定有限区间:依据零点定理。 设 f ( x) C[a, b],且 f (a) f (b) 0 ,则 方程 f ( x) 0在区间 (a, b)上至少有一个根。 如果 f ' ( x) 在 (a, b)上恒正或恒负,则此根唯 一。
计算方法 第2章 非线性方程数值解法

第二章非线性方程数值解法本章将讨论非线性方程0)(=x f (2.1)的数值解法,我们最为熟悉的非线性方程是一元二次方程02=++c bx ax也是最简单的非线性方程,其解为:aac b b x 2422,1-±-=但是对于(2.1)式中一般形式的非线性函数)(x f ,很难甚至不可能找到解析形式的解,通常只能用数值的方法求其近似数值解。
2.1 基本概念定义2.1如果*x 满足0)(*=x f ,则称*x 为方程(2.1)的解或根,也称*x 为函数)(x f 的零点或根。
用数值方法求解非线性方程的解,通常需要我们对其解有一个初步的估计,或知道其解的一个限定区间,因此确定包含解的区间将是我们首先需要解决的问题。
定义2.2若连续函数)(x f 在],[b a 内至少有一个根,则称],[b a 为有根区间,若在],[b a 内恰有一个根,则称],[b a 为隔根区间。
定理2.1 如果函数)(x f 在],[b a 上连续且0)()(<b f a f ,则)(x f 在),(b a 内至少有一个根,如果函数)(x f 另外满足在],[b a 上单调连续,则)(x f 在),(b a 内恰有一个根。
寻找隔根区间的通常方法有:图形法, 试探法。
例2.1 求033)(3=+-=x x x f 的有根区间。
解:作出函数)(x f y =的曲线图形图2.1 例2.1曲线示意图观察图中的曲线与X 轴的交点,可判断在区间)2,3(--之间方程有一个根。
例2.2 求033)(23=--+=x x x x f 的有根区间。
解:计算出)(x f 在一些点的值。
从表中可以看出1-=x 是一个根,区间)2,1(是一个有根区间。
如果在[-2,-1]之间把间隔再缩小到0.25我们可以得到下列表格在这个表格里我们又发现一个有根区间)5.1,75.1(--。
从此例中我们可以体会到试探法有可能漏掉某些有根区间,具有一定的局限性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二分法求非线性方程的数值解
function [x,k] = bisec( f,a,b,ep ) %f:f(x)=0的函数,a,b:[a,b]端点,ep:精度
%x:方程的数值解,k迭代次数
if f(a)*f(b)>=0
if f(a)* f(b)>0
warning('端点值同号,不符合二分法的条件');
return;
else
if f(a)==0
disp(' a就是方程的解');
return;
else
disp(' b就是方程的解');
return;
end
end
end
k=0;
N=(log10(b-a)-log10(ep))/log10(2); %最大迭代次数
x=(a+b)/2;
if f(x)==0
disp(' x就是方程的解');
return;
else
while abs(a-b)>ep & k<N
if f(x)*f(a)<0
b=x;
else
a=x;
end
k=k+1;
x=(a+b)/2;
% if k==N
% warning('已达到最大设定次数'); %二分法一定收敛,这个最大次数是达到精度时次数
%每次运行都会出现,完全没有必要。
%end
end
t=round(-log10(ep));
x=vpa(x,t);
end
>> f=@(x)x-exp(-x);a=0;b=1;ep=0.5e-10;
>> [x,k]=bisec(f,a,b,ep)
x =0.5671432904
k =35
二分法求非线性方程的数值解(多元函数情形,以二元函数为例)
function [x,k] = bisec( f,a,b,ep ) %f:f(x)=0的函数,a,b:[a,b]端点,ep:精度
%x:方程的数值解,k:迭代次数
if f(a(1),a(2))*f(b(1),b(2))>=0
if f(a(1),a(2))* f(b(1,b(2)))>0
warning('端点值同号,不符合二分法的条件');
return;
else
if f(a(1),a(2))==0
disp(' a就是方程的解');
return;
else
disp(' b就是方程的解');
return;
end
end
end
k=0;
x=(a+b)/2;
if f(x(1),x(2))==0
disp(' x就是方程的解');
return;
else
while norm(a-b)>ep
if f(x(1),x(2))*f(a(1),a(2))<0
b=x;
else
a=x;
end
k=k+1;
x=(a+b)/2;
end
t=round(-log10(ep));
x=vpa(x,t);
end
>> g=@(x,y)1-x^2-y^2;a=[0;0];b=[1;1];ep=0.5e-15;
>> [x,k]=bisec1(g,a,b,ep)
x =
0.707106781186548
0.707106781186548
k =
52。