非线性方程的数值解法

合集下载

3-第三章 非线性方程的数值解法

3-第三章 非线性方程的数值解法

到小数点后第三位小数,需要二分多少次? 解:设 f ( x) x6 x 1,由于 f (1) f (2) 0, f ( x) 0(1 x 2), 所以在区间 [1,2]内方程 f ( x) 0 有唯一实根。
ba 1 令 k 1 10 3 ,求得所需对分次数至少是10次。 2 2
x* xk ba k 1 2
时,停止计算。
§1 根的搜索与二分法
3 2 x 4 x 10 0 在 [1,2] 内的根的近似 例:用二分法求方程 1 2 值,要求绝对误差不超过 10 。 2 3 2 解: f ( x) x 4x 10 f ( x) 3x2 8x 0, x [1,2] 即 f ( x) 严格单调增加,又 f (1) f (2) 0 ,所以方程在[1,2]上有 唯一实根。 ba 1 2 令 2k 1 2 10 ,得到 k 6.64 ,取 k 7 ,即至少二分7次 。计算过程如下:
由 f ( x) 0 转化为 x ( x) 时,迭代函数 ( x) 不是唯一的, ( x) 不同,会产生不同的序列{xk } ,从而收敛情况也不 一样。
§2 迭代法及其迭代收敛的加速方法
几何意义: * x x ( x ) 求方程 的根 ,在几何上就是求直线 y x与曲线 y ( x) 交点 P* 的横坐标,如图所示。从图中可以看出, * ( x ) ( x ) x 当迭代函数 的导数 在根 处满足不同条件时,迭
特点:运算简单,方法可靠,对函数只要求在区间上连续 ;但收敛速度慢,不能用来求复数根及偶数重根。常用于为 其它求根方法提供较好的近似初始值。
§2 迭代法及其迭代收敛的加速方法
迭代法(逐次逼近)

非线性方程的数值解法省公开课一等奖全国示范课微课金奖课件

非线性方程的数值解法省公开课一等奖全国示范课微课金奖课件
下面将介绍几个求解普通非线性方程惯用数值计算方法。
第5页
5.2 二分法(the bisection method)
设f (x)在区间[a,b]上连续, 且f (a)f (b)<0, 那么依据连续函数 零点定理, 方程f (x)=0在(a,b)内最少有一个实根。为简便起见, 不 妨设f (x)=0在(a,b)内只有一个实根p。 1.二分法基本思想
end
end
n=n+1;
if (fa.*fp >0 )
a=p;fa=fp;
第9页
说明: 程序中函数f (x)应预先自定义,并取函数名存盘。以方程 f (x) x3 2x 5 0为例, 自定义一个名cubicf. m函数, 源程序以下: function y=cubicf(x) y=x.^3-2*x-5
else b=p;
n=1;fa=popu(a);flag=0;
end
while (n<=N)
if(flag==1)
p=(a+b)./2;fp=popu(p);
'P=',p
if (fp==0|(b-a)./2< tol)
else
flag=1;break
'Method failed after N
end
这么二分区间[a2,b2]是方程新有根区间, 它被包含在旧有根
区间[a1,b1]即[a,b]之内, 而且其长度仅是[a1,b1]二分之一。
对缩小了区间[a2,b2]再计算其中点 判断f ( p2 )与f (a2 )还是f (b2 )异号。
1 p2 2 (a2 b2 )
Step3: 如果f ( p2 )与f (a2 )异号,则记a3 a2 ,b3 p(2 即取区间[a2,b2]

数值分析第七章非线性方程的数值解法

数值分析第七章非线性方程的数值解法

数值分析第七章非线性方程的数值解法在数值分析中,非线性方程和非线性方程组的求解是非常重要的问题。

线性方程是指变量之间的关系是线性的,而非线性方程则指变量之间的关
系是非线性的。

非线性方程的数值解法是通过迭代的方式逼近方程的解。

非线性方程的求解可以分为两类:一元非线性方程和多元非线性方程组。

接下来,我们将对这两类方程的数值解法进行介绍。

对于一元非线性方程的数值解法,最常用的方法是二分法、牛顿法和
割线法。

二分法是一种直观易懂的方法,其基本思想是通过迭代将方程的解所
在的区间逐渐缩小,最终找到方程的解。

二分法的缺点是收敛速度较慢。

牛顿法是一种迭代法,其基本思想是通过选择适当的初始值,构造出
一个切线方程,然后将切线方程与x轴的交点作为新的近似解,并不断迭代,直到满足精度要求。

牛顿法的优点是收敛速度较快,但其缺点是初始
值的选择对结果影响很大,容易陷入局部极值。

割线法是对牛顿法的改进,其基本思想是通过选择两个初始值,构造
出一条割线,然后将割线与x轴的交点作为新的近似解,并不断迭代,直
到满足精度要求。

割线法的收敛速度介于二分法和牛顿法之间。

对于多元非线性方程组的数值解法,最常用的方法是牛顿法和拟牛顿法。

牛顿法的思想同样是通过构造切线方程来进行迭代,但在多元方程组中,切线方程变为雅可比矩阵。

牛顿法的优点是收敛速度快,但同样受初
始值的选择影响较大。

拟牛顿法是对牛顿法的改进,其基本思想是通过逼近Hessian矩阵来进行迭代,从而避免了计算雅可比矩阵的繁琐过程。

拟牛顿法的收敛性和稳定性较好,但算法复杂度相对较高。

数值分析非线性方程的数值解法

数值分析非线性方程的数值解法

数值分析非线性方程的数值解法数值分析是一种应用数学方法来分析和解决数学问题的领域。

非线性方程是数值分析中一类重要的问题,其解法包括了迭代法、牛顿法、割线法等。

本文将详细介绍这些数值解法及其原理和应用。

一、迭代法迭代法是解非线性方程的一种常用数值方法。

该方法的基本思想是通过不断迭代逼近方程的根,直到达到所需精度或满足停止准则为止。

迭代法的求根过程如下:1.选择适当的初始值x0。

2. 利用迭代公式xn+1 = g(xn),计算下一个近似根。

3.重复步骤2,直到满足停止准则为止。

常用的迭代法有简单迭代法、弦截法和牛顿法。

简单迭代法的迭代公式为xn+1 = f(xn),其中f(x)为原方程的一个改写形式。

该方法的收敛性要求函数f(x)在解附近有收敛性且导数在一个区间内收敛。

弦截法的迭代公式为xn+1 = xn - f(xn) * (xn-xn-1) / (f(xn)-f(xn-1))。

该方法通过连接两个点上的函数值的割线来逼近方程的根。

牛顿法的迭代公式为xn+1 = xn - f(xn) / f'(xn),其中f'(x)为f(x)的导数。

该方法通过用切线来逼近方程的根。

二、牛顿法牛顿法是解非线性方程的一种常用迭代法。

该方法通过使用方程的导数来逼近方程的根。

迭代过程如下:1.选择适当的初始值x0。

2. 利用迭代公式xn+1 = xn - f(xn) / f'(xn),计算下一个近似根。

3.重复步骤2,直到满足停止准则为止。

牛顿法的收敛速度较快,但要求方程的导数存在且不为0。

三、割线法割线法是解非线性方程的另一种常用迭代法。

该方法通过连接两个点上的函数值的割线来逼近方程的根。

迭代过程如下:1.选择适当的初始值x0和x12. 计算下一个近似根xn+1 = xn - f(xn) * (xn-xn-1) / (f(xn)-f(xn-1))。

3.重复步骤2,直到满足停止准则为止。

割线法的收敛速度介于简单迭代法和牛顿法之间。

5-非线性方程组的数值解法及最优化方法

5-非线性方程组的数值解法及最优化方法

1 4 0
非线性方程组的数值解法
x10=0; x20=0; k=0; while 1 k=k+1; x1k=(1+x20-0.1*exp(x10))/4; x2k=(x10-x10^2/8)/4; %雅克比迭代法 %x2k=(x1k-x1k^2/8)/4; %高斯-赛德尔迭代法 err1=abs(x1k-x10); err2=abs(x2k-x20); err=max(err1,err2); if err<=0.00000000005 break; end x10=x1k; x20=x2k; end
0.0000055305 0.0000001511 0.0000000041 0.0000000001
非线性方程组的数值解法
牛顿迭代法:根据求解非线性方程的牛顿迭代法,如果已经 k k T ,则 ,, xn 给出方程组 Fx 0 的一个近似根 xk x1k , x2 可把函数 Fx 的分量 fi x, i 1,2,, n 在 x k 处按多元函数泰 勒公式展开,取其线性部分做近似,得
(0.2325668498,0.0564514831) (0.2325670008,0.0564515487) (0.2325670050,0.0564515196) (0.2325670051,0.0564515197) (0.2325670051,0.0564515197)
0.0002023950


所以有
1 x φx 1 2 x1
0
T
取初值 x 代公式收敛。
T 0 x 0 , 0 附近 φx 1,所以迭 0,0 ,在
1 1 x 1 e 40 x2 2 1 1 x1 x2 4 16

非线性方程数值求解法总结

非线性方程数值求解法总结

(一)非线性方程的迭代解法1.非线性方程的一般形式:f(x)=02.非线性方程的分类:⎩⎨⎧=为其他函数。

超越方程,次代数多项式;为代数方程,)()(0)(x f n x f x f 3.方程的根:若存在常数s 使f(s)=0,则称s 是方程(4.1)的根,又称s 是函数f(x)的零点。

4.重根:若f(x)能分解为)()()(x s x x f m ϕ-= 则称s 是方程(4.1)的m 重根和f(x)的m 重零点。

当m=1时,s 称为方程(4.1)的单根和f(x)的单零点。

5.结论:(1)零点存在定理:设函数f(x)在闭区间[a,b]上连续,且f(a)•f(b)<0,那么在开区间(a,b )内至少有一点ξ,使f(ξ)=0.(2)根的唯一性判别:一阶导数不变号且不为零(3)n 次代数方程在复数域上恰有n 个根(4)高于4次的代数方程没有求根公式6.方法:(1)搜索根方法:①作图法:②逐步搜索法:确定方程根的范围的步骤:步骤1 取含f(x)=0根的区间[a,b],即f(a)•f(b)<0;步骤2 从a 开始,按某个预定的步长h ,不断地向右跨一步进行一次搜索, 即检查kh a x k +=上的函数)(k x f 值的符号。

若0)()(1<•-k k x f x f ,则可以确定一个有根区间],[1k k x x -.步骤3 继续向右搜索,直到找出[a,b]上的全部有根区间],[1k k x x -(k=1,2,…,n).(2)二分法①基本思想:含根区间逐次分半缩小,得到一个区间长度以1/2的比例减小的含根区间序列 {}k I ,在给定根的误差界时,利用长度趋于零的特点,可得到在某个区间中满足要求的近似根。

②迭代终止的条件ε<)(k x fε2<-k k a b或者ε<-≤-2k k k a b s x(3)简单迭代法及其收敛性)(0)(x x x f ϕ=⇔=,2,1,0),(1==+k x x k k ϕ迭代法是一种逐次逼近法,用某个固定公式反复校正根的近似值,使之逐 步精确化,最后得到满足精度要求的解。

非线性方程组数值解法

非线性方程组数值解法

非线性方程组数值解法

非线性方程组数值解法是通过数值方法解决非线性方程组问题的一种解法。

非线性方程组不像普通的线性方程组,它们往往没有普遍的解析解,一般只有数值解。

因此,非线性方程组的数值解法非常重要。

非线性方程组数值解法的基本思想是,将非线性方程组分解为多个子问题,并采用一种迭代算法求解这些子问题。

最常见的数值方法有牛顿法、拟牛顿法和共轭梯度法等。

牛顿法是利用曲线上的点的二次近似,将非线性方程分解为两个子问题,转换为求解一个简单的一元方程的问题来求解非线性方程组的数值解。

拟牛顿法利用有限差分方法来求解非线性方程组的数值解,共轭梯度法利用解的搜索方向,进行有效的搜索,通过解的最优性条件收敛到解。

非线性方程组数值解法是目前应用最广泛的数值解法,它能很好地求解非线性方程组。

不仅能有效求解复杂的非线性方程组,还能求出较精确的数值解。

此外,非线性方程组数值解法运算速度快,可以对模型进行实时定位和跟踪,非常适合模拟复杂的动态系统。

总之,非线性方程组数值解法是一种求解复杂非线性方程组的有效解法,它的准确性高,运算速度快,广泛应用于现实世界中的多种工程与科学计算问题。

非线性方程的数值解法

非线性方程的数值解法

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) 是

非线性方程组数值解法课件

非线性方程组数值解法课件
非线性方程组数值 解法课件
目 录
• 非线性方程组概述 • 迭代法求解非线性方程组 • 牛顿法求解非线性方程组 • 拟牛顿法求解非线性方程组 • 非线性方程组数值解法的应用
01
非线性方程组概述
非线性方程组的定义与分类
定义
非线性方程组是由多个非线性方 程组成的数学模型,描述了多个 变量之间的关系。
在工程问题中的应用
航空航天工程
土木工程
非线性方程组数值解法用于设计和优 化飞行器、卫星和火箭的结构和性能。
在建筑设计、桥梁和高层建筑的结构 分析中,非线性方程组数值解法用于 模拟结构的承载能力和稳定性。
机械工程
在机械设计中,非线性方程组数值解 法用于分析复杂机械系统的动力学特 性和稳定性。
在金融问题中的应用
拟牛顿法的收敛性分析主要基于Hessian 矩阵的条件数和近似矩阵的误差界。在适 当的条件下,拟牛顿法能够保证全局收敛 性和局部超线性收敛性。
拟牛顿法的实现
总结词
拟牛顿法的具体实现可以通过不同的算法实 现,如DFP算法和BFGS算法等。
详细描述
DFP算法(Davidon-Fletcher-Powell)和 BFGS算法(Broyden-Fletcher-GoldfarbShanno)是两种常见的拟牛顿算法。它们 的主要区别在于近似矩阵的更新方式。DFP 算法采用三对角化方法更新近似矩阵,而 BFGS算法采用迭代更新的方式。在实际应 用中,BFGS算法通常比DFP算法更受欢迎, 因为它在大多数情况下都能提供更好的收敛 效果。
05
非线性方程组数值解法的 应用
在物理问题中的应用
量子力学方程
非线性方程组数值解法在 量子力学中用于描述微观 粒子的行为和相互作用。

非线性方程数值解法详解

非线性方程数值解法详解

1 ( p) (
p!
)( xk
)
p
xk1
1
p!
(
p)
(1
)(
xk
)p
lim
k
xk1 xk p
1 ( p) ( )
p!
0
必要性 (略)
例 能不能用迭代法求解方程x=4-2x,如果不能
时,试将方程改写成能用迭代法求解的形式.
方程为x-4+2x =0.设f(x)= x-4+2x ,则f(1)<0,f(2)>0, f‘(x)= 1+2x ln2>0,故方程f(x)=0仅在区间(1, 2)内有唯一根.
(1) f(a)f(b)<0; (2) f'(x)0, x[a, b]; (3) f''(x)不变号, x[a, b]; (4) 初值x0 [a, b]且使f''(x0) f(x0)>0; 则 Newton 迭代法收敛于f(x)=0在[a, b]内的惟一 根.
例 研究求
a的Newton公式xk 1 Nhomakorabeaxk 1 xk
f (xk ) f (xk )
(k 0,1, 2,L )
逐次逼近方程f(x)=0的根α ,这种求根算法称为 Newton法(切线法),此公式称为 Newton迭代公式.
Newton迭代法的收敛性及收敛阶
Newton法的迭代函数是 (x) x f (x)
从而
(x)
f (x) f (x) [ f (x)]2
或f(x)的零点. 设有正整数m使得f(x)=(x-α)mg(x)
且g(α)0 ,则当m2时,称α为f(x)=0的m 重根;当m=1时,称α为f(x)=0的单根. 若α为f(x)=0的m重根,则

非线性方程数值解法

非线性方程数值解法

对分区间法
对分法的基本思想


对分法的基本思想是在平分有根区间的 过程中,逐步缩小有根区间. 设函数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的单根. 本章只讨论实根的求法.

第三章 非线性方程(组)的数值解法

第三章 非线性方程(组)的数值解法

第三章 非线性方程(组)的数值解法一.取步长1h =,试用搜索法确立3()25f x x x =--含正根的区间,然后用二分法求这个正根,使误差小于310-。

【详解】由于是要寻找正根,因此,可选含根区间的左端点为0。

(0)5f =-,(1)5f =-,(2)1f =-,(3)16f =,因此,(2,3)中有一个正根。

这就确立了含根区间。

接下来,我们用二分法求这个正根,使误差小于310-,计算结果如下表 迭代次数k a k b k x0 2 3 2.5 1 2 2.5000 2.250 0 2 2 2.2500 2.125 0 3 2 2.1250 2.062 5 4 2.0625 2.1250 2.093 8 5 2.0938 2.1250 2.109 4 6 2.0938 2.1094 2.101 6 7 2.0938 2.1016 2.097 7 8 2.0938 2.0977 2.095 7 9 2.09382.09572.094 7二.对方程2()2sin 20f x x x =--=,用二分法求其在区间[]1.5,2内的根,要求误差小于0.01。

【详解】用二分法求解方程在[]1.5,2内的根,要求误差小于0.01,计算结果如下表: 迭代次数k ak bk x0 1.5 2 1.75 1 1.7500 2.0000 1.875 0 2 1.8750 2.0000 1.937 5 3 1.9375 2.0000 1.968 8 4 1.9375 1.9688 1.953 1 51.95311.96881.960 9三.用不动点迭代法,建立适当的迭代格式,求方程3()10f x x x =--=在0 1.5x =附近的根,要求误差小于610-。

【详解】310x x --=,等价于x =。

这样,可以建立不动点迭代格式1k x +=当0x ≥时,总有23110(1)133x -'<=+≤<,因此,迭代格式对于任意初始值00x ≥总是收敛的。

非线性方程的数值解法

非线性方程的数值解法

迭代法求解的问题
1、迭代的收敛性 2、迭代的收敛速度 以上问题与迭代形式 x=ϕ(x)有关 例:方程 x2 + x – 6 =0 ,初值x0=1 迭代形式: x =6-x2 结果发散 迭代形式: x =(6+3x-x2)/4
结果收敛
简单迭代法的几何解释
迭代法的收敛条件
设方程 f (x)=0的根为x=a, 即f (a)=0 迭代形式 x=ϕ(x),则 a = ϕ (a),xn+1 = ϕ (xn) xn+1-a = ϕ (xn)- ϕ (a)
f ′(x) 与 f ′ (x) 均存在,
x0, x∈[ a,b] ;
插 值 法 的 几 何 解 释
弦割法
Newton’s Method 一步要计算 f 和 f ’,相当于 个函数值, 个函数值, ,相当于2个函数值 比较费时。 比较费时。现用 f 的值近似 f ’,可少算一个函数值。 ,可少算一个函数值。
直接法:fslove函数 直接法:fslove函数
fsolve函数有多种调用格式可供选用,现 以最常见的格式为例说明。 b=fsolve (′F′,x0,options) 例:fsolve(‘sin(x)’,1.2) 其中F为函数名,x0为初值矩阵,options为 以向量表示的可选参数值
迭代法求解
第二节 初值估计
1. 物理法 根据数学方程 f(x)=0 的物理概念确定初值。 例:计算实际气体的压缩因子 Z = PV / R T 可将理想气体的压缩因子作为初值 优缺点:物理法估计初值简便而确切, 并 具有明确的物理概念。但在实际应用上有 一定的局限性, 并不能解决所有初值的估 计问题。
Z0 =1
ϕ′(x) ≤ q <1

计算方法 第2章 非线性方程数值解法

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

一、实验目的 通 过 本 实 验的学习,应掌握 非线性方程的数值解法的 基本思想和原理,深刻认识 现 实 中 非 线 性 方 程 数 值的意义;明确代数精度的概念 ;熟悉几种基本的常用 的解非线性方 程 的 数 值 的 方 法 ,如二分法、迭代法 等,了解它 们各自的优缺点及适用范围,并能用来解决其他实 际 问 题 ; 熟 悉非线性方程的数值 的程序编制。
3. 实验的结果是存在一定的误差。
六、 实验中存在的问题及解决方案
1.在开始时,运用循环 for(k=1;k<(log(b-a)-log(0.000001))/log(2.0);k++) { c=(a+b)/2; if(fabs(function(c)<0.000001)) printf("k=%dx=%9.5f",k,c); else if(function(a)*function(c)<0) {d=c;c=b;b=d;} else {d=c;c=a;a=d;}}得到的结果是:
框图 1
二分法
框图 2
迭代法
2
南昌航空大学数学与信息科学学院实验报告
3.源程序代码: ①利用二分法的源程序如下: #include<stdio.h> #include<math.h> float function(float x); /*函数 f(x)的申明*/
main() { float root1(float x1,float x2); /*解得近似值函数的申明*/ float root2(float x1,float x2); /*解得近似值函数的申明*/ float a=-2,b=1,c1,c2; c1=root1(a,b); /*解得[-2,0]近似值函数的调用*/ c2=root2(a,b); /*解得[0,1]近似值函数的调用*/ printf("root is %10.6f\n%10.6f\n",c1,c2); /*输出结果*/ }float function(float x) { float y; y=pow(x,4)+2*pow(x,3)-x-1; return y; } float cmid(float x1,float x2) { float c; c=(x1+x2)/2; return (c); } float root1(float x1,float x2) { float cmid(float x1,float x2); float x,y,y1; do { x=cmid(x1,x2); y1=function(x1); y=function(x); if(y*y1<0) x2=x; else x1=x; }while(fabs(y)>=1e-6); return (x); } float root2(float x1,float x2) { float cmid(float x1,float x2); float x,y,y2; /*计算两个数的中值*/ /*函数 f(x)的定义*/
南昌航空大学
数学与信息科学学院
实 验 报 告
课程名称: 实验名称: 计 算 方 法 非线性方程的数值解法
实验类型: 验证性√ 综合性□ 设计性□ 实验室名称: 班级学号: 学生姓名: D 504 08061115 杨朝峰
任课教师(教师签名) : 成 绩: 2009-10-16
实验日期:
南昌航空大学数学与信息科学学院实验报告
二、实验题目 试计算方程发 f(x)=x 1. 2.
4
+2x -x+1=0 于[-2,1]的所有实根,要求
3
<10-6。
运用非线性方程数值解法的二分法解题。 运用非线性方程数值解法的迭代法解题
三、实验原理(包括所使用方法的原理、公式和程序框图)
1.原理: ①对于连续的函数 f(x),由罗尔中值定理广泛地推出利用含根区间[a,b]逐步分半,检 查函数值符号的变化,以便确定含根的充分小区间而得到二分法; ②用函数 f(x)构造出一个 x=g(x),再选取方程根的一个初始近似值 x0,按 xk+1=g(xk)逐 次代入法。 2.公式: 利用非线性方程的其中两种方法二分法以及迭代法。 3.程序框图: ①利用二分法的程序框图如框图 1: ②利用迭代法的程序框图如框图 2:
1
南昌航空大学数学与信息科学学院实验报告
输入初始值 x 输入区间 a,b 的值
K=1,2,…,N0
调用函数 root()
计算 xk+1
调用函数 cmit() 输出 x 是
<10-6
调用函数 function ()
X1←x
k≦100

<10
-6
输出没有达到精度 要求信息
成 立 输出 x 的值
输出没有数值信息
/*初值的选定*/
/ *用精度来作为循环结束的条件*/
南昌航空大学数学与信息科学学院实验报告
四、实验过程中需要记录的数据:
1. 实验中要记录迭代的次数 N0 和 k 的数值。 2. 在运行程序结束后要显示记录的两个实验的计算结果。
五、Байду номын сангаас实验数据处理及结果分析
1.在实验进行之前, 通过简单的计算知道实验 1 中的区间[-2,1]有两个实根, 其中一个为负实根, 另一个为正实根。但是运用二分法是无法之间求出两个不同的实根的,因此在编程的时候把区间化为 [-2,0]和[0,1]分别计算结果。 2.运用迭代法时,方程的真实根是无法确定的,即使知道精度也难以算出迭代的次数 N 数值,因 此认为的将 N 定义为 100 或者更大,只是运行时效率问题而已。 3 运行程序的结果如下:
经过分析知道程序的顺序有误,而且编程的思想错误,它的 f(a)*f(b)不小于 0,因此 我改变思想运用上述的源程序编译得到结果。
5
南昌航空大学数学与信息科学学院实验报告
2.运用迭代法解该方程时总会在 DOS 环境下报以下的错误:
其实运用迭代法时是有一定的局限性的, 即迭代法的局限收敛性。 如果初值选的不恰当 是得不到结果的,因此要在真实值附近取值。 3.在做迭代时开始选取 g(x)=x
6
4
+2x +1 为迭代函数时出现结果为
3
因此就选取牛顿—雷福生方法的公式作为迭代函数。 4.在做迭代法时一次无法同时输出两个值,所以选 x=0.7 和 x=-1.8 为初值。
七、 心得体会
通过本次编程, 在一定程度下了解并能基本掌握非线性方程的基本思想和 方法,了解 到 计 算 方 法 这 门课程能解决很多现实中难以解决的问题。通过 编程电脑实现很多现 实 理 论 不 能 解 决的问题。更加增加了学习的兴趣和动力。但在开始的时候因为自己 对 非 线 性 方 程 的思想不是十分清楚导致程序得不到答案甚至无法运行 程序,其实实 验 也 是 可 以 检 查我们对知识点的掌握程度。
/*解得[-2,0]近似值函数的定义*/
/*解得[0,1]近似值函数的定义*/
3
南昌航空大学数学与信息科学学院实验报告
do { x=cmid(x1,x2); y2=function(x2); y=function(x); if(y*y2<0) x1=x; else x2=x; }while(fabs(y)>=1e-6);/*用精度来作为循环结束的条件*/ return (x); ②利用迭代法的源程序如下: #include<stdio.h> #include<math.h> main() { float function(float x); float x1,x; int k; x1=0.7; for(k=1;k<1000;k++) { x= function(x1); if(fabs(x-x1)<1e-6) { printf("%10.6f\n",x); break; } else x1=x; } } float function(float x) { float y; y=x-(pow(x,4)+2*pow(x,3)-x-1)/(4*pow(x,3)+6*pow(x,2)-1); return y; } 4 /*利用牛顿法公式作为迭代函数的定义*/
相关文档
最新文档