非线性方程求根

非线性方程求根
非线性方程求根

第七章 非线性方程求根

教学目的与要求:

理解二分法求根的思想;掌握二分法求解过程;了解二分法的优点和缺点。了解迭代法的基本思想,迭代法的收敛条件以及局部收敛性的定义;理解基本迭代法的迭代思路,收敛条件的产生与求证过程;掌握基本迭代法的迭代格式,收敛条件的应用以及局部收敛定理。

重点和难点:迭代法的基本思想,迭代法的收敛性 ■ 教学内容:

基本概念: 的零点; 的m 重零点。

)(x f )(x f 非线性方程的求根通常分为两个步骤:一是对根的搜索,二是根的精确化,求得根的足够精确的近似值。 求方程的有根区间有如下方法:

(1)描图法。画出的简图,从曲线与)(x f y =x 轴交点的位置确定有根区间。

(2)解析法。根据函数的连续性、介值定理以及单调性等寻找有根区间。

§ 1 二分法

分析二分法的基本原理

例1 用二分法求方程的一个正根,要求误差不超过.

01)(6=??=x x x f 2105.0?ק 2 迭代法及其收敛性

一、迭代法的定义

二、基本迭代法

定义:将方程改写成以下等价形式() x x ?=取定初始值0x ,由迭代公式1()

(0,1,2,)n n x x n ?+==L 产生迭代序列{}n x 。显然,若{}n x 收敛于*x ,()x ?在*x 处连续,就有**

1lim lim ()()n n n n x x x ??+→∞→∞

===x 即*x 是方程() x x ?=的解,从而也是0)(=x f 的解。故当充分大时,可取作为方程根的近似值。用迭代格式求得方程近似根的方法称为基本迭代法,n n x )(x ?称为迭代函数。由于收敛点*x 满足*()*

x x ?=,故称*x 为)(x ?的不动点

例 求方程的一个实根,要求精确到六位小数。

032)(3

=??=x x x f 注意:把此方程转换成三种等价形式 ,32)(31+==x x x ?)3(2

1)(32?=

=x x x ?, 3)(33??==x x x x ?三、迭代法的收敛条件

定理1 (压缩映像原理)设函数()x ?在区间上满足条件:

],[b a (1)对任意[,]x a b ∈,都有()a x b ?≤≤;

(2)存在常数0

则(1)方程()x x ?=在内有唯一的根],[b a *x 。 (2) 对任何初值0[,]x a b ∈,迭代序列1() (0,1,)n n x x n ?+==L 均收敛于*x 。

(3)*

11n n L n x x x x L ??≤?? *101n n L x x x L x ?≤?? 注意:

(I) 定理1中的条件(2)不容易检验。如果函数)(x ?在区间上可导,那么条件(2)可用更强的条件

),(b a ),(,1)(b a x L x ∈?<≤′?代替。事实上,若此式成立,则由微分中值定理,对任何都有

],[,b a y x ∈()()()x y x y L x ???ξ′?=?≤?y

其中ξ在x 与y 之间,从而条件(2)成立。 如32'

1

)32(32)(?+=x x ?,在区间上,]2,1[1)('1

四、迭代法的局部收敛性

定理2 如果函数()?x 在的一邻域*x **(,)O x δ内连续可微,为方程(7-3)的根,且*x *()1x ?′<,则存在正数δ,*δδ≤,使得对任意**0[,x x x ]δδ∈?+,迭代序列1()

(0,1,2,)n n x x n ?+==L 收敛于。

*x 定理2给出了初值在根邻近时,基本迭代法收敛的充分条件,称为局部收敛性定理。这一定理表明,只要构造迭代函数,使其在根的邻近满足导数的绝对值有小于1的上界,即可保证基本迭代法收敛。因此,定理7.2对初值的要求较高。如果已知的大概位置,为的一个较好的近似值,则可用0x *x 0x *x 0()1x ?′<代替*()1x ?′<,然后用定理7.2判断迭代格式的局部敛散性。

小结:1. 二分法的思路和误差估计式

2. 基本迭代法:迭代的具体过程

3. 迭代收敛性分析

作业:习题7 第3,4,5,6题

§ 3 Newton 法与弦截法

教学目的与要求:

理解Newton 法的构造过程,了解Newton 法的几何意义,掌握用Newton 迭代法、重根法求根的具体过程以Newton 迭代法的局部收敛性分析;最后掌握弦截法的迭代格式、几何意义以及两种迭代法的优缺点的比较。简单的了解求解非线性方程组的Newton 法的思想。

重点:Newton 法与弦截法;

难点:非线性方程组的求解。

■ 教学内容:

一、Newton 迭代法

Newton 迭代法的基本思想:将非线性方程线性化,以线性方程的解逐步逼近非线性方程的解。

1.定义

2.几何意义

例 用Newton 迭代法求方程在内的一个根,要求精度。

01)(2

3=??=x x x f ]6.1,4.1[510?=ε二、Newton 迭代法的局部收敛性

定理4 设函数()f x 在其零点*x 邻近二阶连续可微,且*()0f x ′≠,则存在0δ>,使得对任意**0[,x x x ]δδ∈?+,Newton 法所产生的序列{}n x 至少二阶收敛于*x 。

需要注意的是,Newton 法虽具有收敛快,形式简单等优点,但它对初值的要求较高。当初始值不够好时,Newton 法可能发散。一般可由问题的实际背景来预测或由二分法求得较好的初始值。另外当*x 是0)(=x f 的重根时也可用Newton 法求方程的近似解。

为了改善重根时Newton 法的收敛性,可将Newton 迭代格式做一些修改。*x 是的重根,则0)(=x f )2(≥m m *x 是0)]([1

=m x f 的单根,对此方程应用Newton 迭代法,则有L ,2,1,0,)

()(1=′?=+k x f x f m x x k k k k 三、弦截法

1.定义

2.几何意义

3.Newton 法与弦截法的比较

Newton 法和弦截法都是先将线性化再求根,但线性化的方式不同:Newton 法是作切线的方程,而弦截法是作弦线的方程;Newton 法只需一个初始值,而弦截法需要两个初始值。

)(x f

例2 用弦截法求方程在内的一个根,要求精度。

01)(2

3=??=x x x f ]6.1,4.1[510?=ε§ 4 解非线性方程组的Newton 法(略讲)

对于非线性方程组,也可以构造类似于一元方程的Newton 迭代法,而且同样具有二阶局部收敛性。

设有非线性方程组 11221212(,,,)0(,,,)0(,,,)0n n n n f x x x f x x x f x x x =??=????=?L L LL L 若记=x 12(,,,)T n x x x L ,12()((),(),,())=L T n F x f x f x f x ,则方程组可简记成向量形式()=F x 0,如果存在向量,使,则称为非线性方程组的解。

n R x ∈*0)(*

=x F *x 像单个方程的Newton 迭代法一样,采用逐次线性化的方法构造方程组的Newton 迭代法。在某个近似解处,将向量函数作泰勒(Taylor)展开,则有: )(k x )(x F ()())()()()()(k k k x x x F x F x F ?′+≈

从而得方程的近似方程()()0)()()()(=?′+k k k x x x F x F

即()()()()(′Δ=?k k k )F x x F x ,其中()()′=k F x ()11

112

1

2k n n n

n n x x f f f x x x f f f x x x =????????????????????????????L L L 称为向量函数()F x 的Jacobi 矩阵,。

线性方程组称为Newton 方程组。如果()()Δ=?k k x x x ()()1(,,)k k n x x =ΔΔL T ()F x 的Jacobi 矩阵在处非奇异,方程组(7-16)有唯一解,则为方程组(7-15)的第次近似解。按上述过程求方程组的近似解称为Newton 方法。可以证明,当初始值()k x ()Δk x (1)()()+=+Δk k x x x k 1+k (0)x 与解充分接近时,Newton 法是平方收敛的。

例3 求解方程组给定初值,用Newton 迭代法求解。 ?????=+?+=++?0

81008102122122121x x x x x x x T x )0,0()0(=小结: 1. 牛顿法的基本思想;2. 用牛顿法解非线性方程的具体方法;

3. 弦截法与牛顿法的区别;

4. 弦截法的定义及解题方法

作业:习题7 第7,8,9题

★ 数值实验:

1. 程序设计基础知识:

Solve 和FindRoot 都能求方程的根,Solve 主要用于多项式方程组的求根,FindRoot 计算非线性方程或方程组的一个数值解。下列FindRoot 的求解形式及其意义: 函数FindRoot

意义 FindRoot[方程,{x ,x0}] 从x=x0开始,计算方程的一个数值解

FindRoot[方程,{x ,{x0,x1}}]

以x0和x1为初始值,计算方程的一个数值

解.当找不出f 的显式的导数表示时使用

FindRoot[方程,{x ,xstart ,xmin ,xmax}]

在xmin ,xmax 范围内计算方程的一个数值

FindRoot[{方程组},{x ,x0},{y ,u0},…] 计算联立方程组的数值解

2.编写一个非线性方程求解的Mathematica 程序:

用迭代法求方程在0543)(35=??=x x x f 10=x 附近的实根,要求精确到四位小数。

将方程改写成53)54(3

1)(+==x x x ?迭代格式为 521)54(31+=+n n x x L ,2,1,0=n

f[x_]:=3x^5-4x^3-5;

Plot[f[x],{x,-3,3}]

x[n_]:=((4x[n-1]^3+5)*(1/3))^(1/5)

x[0]=1.;

N[Table[x[n],{n,1,20}],10];

MatrixForm[%]

N[Solve[f[x]==0,x],10][[5]]

运行结果为:

(1)图形

(2)迭代结果

1.24573094

1.335242178

1.370826848

… …

1.395303757

1.39530378

1.39530379

{x -> 1.395303796}

则取为方程在1附近的近似根。

39530.1≈x 或

Clear[f,x,xx]

f[x_]:=3x^5-4x^3-5

g[x_]:=x-f[x]/f'[x]

x=1;

xx=1.1;

Do[x=g[x];Print[k," ",x],{k,1,20}]

Abs[g'[xx]]-1//N

Clear[x]

FindRoot[f[x]==0,{x,2}]

3.生活实例:在研究购房贷款中有如下方程:])([n a a

p N ?+?=11,其中N 代表贷款总额,P 为贷款人每月最大偿还能力,a 是银行利率,n 是贷款年限,假定N ,P ,n 是已知的,研究贷款人所能承受的最高利率。 ★ 知识拓展及课题研究(适合研究生):

课题1:探索一般方程组牛顿法收敛域的结构(与方程比较)。可对方程组用牛顿法求解,设计一个程序找出牛顿法的收敛域。

013

=?z ???=+=+1122y x y x cos sin 课题2:探讨估计迭代法收敛阶的方法,比较牛顿法对于单根、重根时的收敛性态。

课题3:研究几种常用迭代法的改进算法

要求阅读的文献:

【1】非线性方程求解的新算法 《江西师范大学学报》 2006

文章简介:采用黄金分割思想,构造了一种非线性代数方程求解的新算法. 该算法在迭代过程中不用计算导数,且至少二阶收敛. 实验表明,该算法比弦割法和抛物线法的收敛速度更快.

【2】对非线性方程(组)简单迭代法的改进 《海南师范大学学报 》 2007

文章简介:对非线性方程(组)的简单迭代法进行了改进,从而扩大了此方法的使用范围. 数值计算说明这种新的迭代序列是收敛的、可行的.

【3】对非线性方程(组) 简单迭代法的一种新改进 《安庆师范学院学报》 2008

文章简介: 在使用简单迭代法解非线性方程(组)时, 要求迭代函数必须满足)(,)(x F x f 1)(sup '<=x f q 1)(sup ''<=x F q 。如将迭代函数导数的最大模( 的J acobi 矩阵最大范数) 超出上述取值区间情况下的迭代函数 () 进行一系列恒等变形,建立一个新的迭代函数,让其导数的最大模(J acobi 矩阵最大范数) 落在上述取值区间内,再运用压缩映射原理逐步逼近求出非线性方程(组) 的近似解。这是一种新的改进,有更广的应用范围。两个数值计算实例表明,恒等变形得到这种新的迭代序列收敛,该方法可行。

)(x f )(x F )(x f )(x F 【4】非线性方程几种数值解法的Matlab 程序 《宁波职业技术学院学报》 2007

文章简介:为研究非线性方程数值解,给出了二分法、简单迭代法和牛顿迭代法的

Matlab 程序,并进行了近似计算。结果表明,牛顿迭代法收敛最快。

【5】非线性方程求解的一种新方法 《安庆师范学院学报 》 2006

文章简介: 给出一种基于连分式的非线性方程迭代求解新算法。该方法与M üller 方法相比, 无需进行根式计算, 在迭代过程中也无需进行符号判别; 在计算非线性方程组时与Newton 法相比, 该方法无需求解偏导数值以及计算逆矩阵; 数值例子说明本文方法计算量小, 迭代速度较快。

【6】解非线性方程的牛顿迭代法及其应用 《重庆工学院学报》 2007

文章简介:牛顿迭代法也称为牛顿切线法,是解非线性方程的一种方法,通过实例对该方法进行了介绍,包括其理论依据、误差估计、收敛阶数、迭代法初始值的选取规则等.

【7】求解高维非线性方程的一种简便方法 《《兰州交通大学学报》 2008

文章简介:将试探函数方法扩展应用于求解高维非线性偏微分方程. 通过引入变换和选准试探函数,把难于求解的高维非线性偏微分方程化为易于求解的代数方程,然后用待定系数法确定相应的常数,从而简洁地求得了方程的解析解.

【8】牛顿迭代法在非线性方程求重根中的应用 《科技信息》 2006

文章简介:牛顿迭代法是非线性方程根的一种常见的数值方法, 对于非线性方程的单重零点来说Newton 迭代法一般具有局部二阶收敛性, 但是当所求的根x* 是f(x)的m 重根时, m 是大于等于2 的整数, 此时Newton 迭代法只有一阶收敛性。本文结合两种修正的Newton 迭代法给出一种在不知道根的重数的情况下既可以提高收敛速度而又避免求f(x)的二阶导数可行的算法

非线性方程求根word版

第7章 非线性方程求根 本章主要内容: 1.区间二分法. 2切线法. 3.弦位法. 4.一般迭代法. 重点、难点 一、区间二分法 区间二分法是求方程f(x)=0根的近似值的常用方法。 基本思想:利用有根区间的判别方法确定方程根的区间[a,b] ,将有根区间平分为二;再利用有根区间的判别方法判断那一个区间是有根区间;重复上述步骤,直到小区间端点差的绝对值小于等于精度要求的数值,则用将上一区间的分半值作为方程的根的近似值。 区间二分法的计算步骤如下: 1. 计算区间端点的函数值f(a) , f(b)(不妨设f(a)<0,f(b)>0); 确定初始有根区间[a,b]. 2.二分有根区间[a,b],并计算)2( b a f + 取2 1b a x += 3.判断: 若0)(1=x f ,则方程的根为1x x =* ; 若 0)(1>x f ,则有根区间为[]1,x a x ∈* ;令[]],[,111b a x a = 若 0)(1

12 ln ln )ln(---≥ ε a b n 确定应二分的次数。 例1 用区间二分法求方程0353 =+-x x 在某区间内实根的近似值(精确到0.001) 【思路】参见上述区间二分法的计算步骤 解 ∵f(1.8)=-0.168<0, f(1.9)=0.359>0 ∴f(x)在区间[1.8 ,1.9]内有一个根。 由公式 644.512 ln 001 .0ln 1.0ln 12ln ln )ln(=--=---≥ εa b n 取n=6, 计算结果列表如下: 则方程在区间[1.8,1.9]内所求近似值为x * ≈ x = 1.8328125 区间二分法的优点是计算程序简单,只要f (x )在区间[a,b]上连续,区间二分法就可使用,但区间二分法不能用来求偶次重根,由于区间二分法收敛比较慢,在实际计算中,区间二分法常用来求比较好的含根区间和初始近似值,以便进一步使用收敛更快的迭代法求出更精确的近似值。 迭代序列收敛阶的概念

非线性方程求根问题

计算机学院上机实践报告 一、目的 1.通过本实验,帮助加深对非线性方程求根方法的构造过程的理解; 2.能将各种方法编写为程序并上机实现; 3.比较各种方法在求解同一非线性方程根时,在收敛情况上的差异。 二、容与设计思想 1.用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]的根。 2.方程f(x)=2x3-5x2-19x+42=0在x=3.0附近有根,试写出其三种不同的等价形式以构成三种不同的迭代格式,再用简单迭代法求根,观察这三种迭代是否收敛。 三、使用环境 1. 硬件环境 微型计算机(Intel x86系列CPU)一台 2. 软件环境 Windows2000/XP操作系统 VC++6.0或其它的开发工具。 四、核心代码及调试过程 1.用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]的根主要代码: void bisect(double a,double b,int max_B) { double root, ya,yb,yroot; int i,actual_B; ya=f(a);yb=f(b); if(ya*yb>0) { printf("method failed!\n"); exit(0); } for(i=1;i<=max_B;i++) { root=(a+b)/2;yroot=f(root); //取当前含根区间的中点 if(yroot==0) { a=root;b=root;} else if(yb*yroot>0) //取含根区间为[a,(a+b)/2]

{ b=root;yb=yroot;} Else //取含根区间为[(a+b)/2,b] { a=root;ya=yroot;} if(fabs(b-a)b)) { printf("re_select a proper initial value x0!\n"); exit(0); } if(fabs(x1-x0)

实验二 非线性方程求根实验报告

实验报告 学院:电子信息工程 实验课程:计算方法 学生姓名: 学号: 专业班级:通信工程 实验二非线性方程求根 1 目的与要求 (1)进一步熟练掌握求解非线性方程的二分法与Newton迭代法。 (2)掌握二分法与Newton迭代法的算法,能运用程序设计语言和此方法编制软件求出任意指定一元三次方程在给定点附近的根。 2 实验内容 用二分法和Newton迭代法求方程 310 x x --=在 1.5 附近的根,精确到 3 10-,输出每次的迭代结果

并统计所用的迭代次数。 3 实验原理 (1)二分法实验原理 取[a,b]区间二等分的中点x1 =(a+b)/2 (1)若f(x1)=0,则x1是f(x)=0的实根。 (2)若f(a)f(x1)<0 成立,则x* 必在区间(a, x1)内,取a1=a,b1= x1;否则x*必在区间(x1,b)内,则取a1= x1,b1=b,这样,得到新区间[a1,b1],其长度为[a,b]的一半。 (3)如此继续下去,进行n次等分 (2)Newton迭代法实验原理 4 程序设计 (1)流程图 二分法程序流程图

Newton迭代法程序流程图

(2)程序代码 ①二分法求非线性方程根#include #include double fun1(double x) {

return x*x*x-x-1; } double fun2(double x1,double x2) { return (x1+x2)/2; } main() { int n=1; float a,b,c; printf("二分法求非线性方程的根\n"); scanf("a=%f,b=%f",&a,&b); if (fun1(a)*fun1(b)<0) { while(fabs(b-a)>1e-3) { c=fun2(a,b); if (fun1(a)*fun1(c)<0) { b=c;

非线性方程求根

第二章非线性方程求根 线性方程是方程式中仅包含未知量的一次方项和常数项的方程,除此之外的方程都是非线性方程(nonlinear equation). 例如,大家熟知的“一元二次方程”就是一个非线性方程. 多元线性方程组的求解是数值计算领域的一个重要问题,在后续几章将专门讨论. 本章介绍求解非线性方程的数值方法,主要针对实数域,重点是单个非线性方程的求根问题. 2.1引言 2.1.1非线性方程的解 记要求解的单变量非线性方程为 f(x)=0(2.1) 其中函数f: ?→?. 一般而言,非线性方程的解的存在性和个数是很难确定的,它可能无解,也可能有一个或多个解. 例2.1 (非线性方程的解):分析下列非线性方程的解是否存在和解的个数. (1) e x+1=0. 此方程无解. (2) e?x?x=0. 此方程有一个解. (3) x2?4sinx=0. 此方程有两个解. (4) x3?6x2+5x=0. 此方程有三个解. (5) cosx=0. 此方程有无穷多个解. 在实际问题中,往往要求的是自变量在一定范围内的解,比如限定x∈[a,b]. 函数f一般为连续函数,则可记为f(x)∈C[a,b],C[a,b]表示区间[a,b]上所有连续实函数的集合. 假设在区间[a, b]上方程(2.1)的根为x?,也称x?为函数f(x)的零点. 方程的根可能不唯一,而且同一个根x?也可能是方程(2.1)的多重根. 定义2.1:对光滑函数f,若f(x?)=f′(x?)=?=f(m?1)(x?)=0,但f(m)(x?)≠0,则称x?为方程(2.1)的m重根. 当m=1时,即f(x?)=0,f′(x?)≠0时,称x?为单根. 对于多项式函数f(x),若x?为m重根,则f(x)可因式分解为 f(x)=(x?x?)m g(x) 其中g(x)也是多项式函数,且g(x?)≠0. 很容易验证,f(x?)=f′(x?)=?=f(m?1)(x?)=0,但f(m)(x?)≠0,即多项式方程重根的概念与定义2.1是一致的. 对一般的函数f,x?是方程(2.1)的重根的几何含义是,函数曲线在x?处的斜率为0,且在该点处与x轴相交. 非线性方程的一个特例是n次多项式方程(n≥2),根据代数基本定理可知,n次方程在复数域上有n个根(m重根计为m个根). 当n=1, 2时,方程的求解方法是大家熟知的. 当 n=3, 4时,虽然也有求根公式,但已经很复杂,在实际计算时并不一定适用. 当n≥5时,不存在一般的求根公式,只能借助数值求解方法来求根. 2.1.2问题的敏感性 根据问题敏感性的定义,这里需要考虑输入数据的扰动对方程的根有多大影响. 要分析敏感性首先应假设问题中的数据如何扰动,一种易于分析的情况是将非线性方程写成: f(x)=y 的形式,然后讨论y在0值附近的扰动造成的问题敏感性. 此时,求根问题变成了函数求值

实验一 非线性方程求根

石家庄经济学院2014/2015学年第一学期 数值分析实验报告 班级: 5141090301 学号: 514109030105 姓名:张倩 指导教师: 张敬敏

实验一非线性方程求根 一、实验题目 1. 求方程f(x)=3x2-e x=0一个正根,并使误差不大于10-5。(p22第3题) 2. 计算√5,结果具有5位有效数字。 3. 求方程f(x)=x3-x-1=0在区间[1.0,1.5]内的一个实根,误差不大于10-5。(选做) 二、程序功能 1. 使用迭代法求方程f(x)=3x2-e x=0一个正根,并使误差不大于10-5。 2. 用牛顿法计算√5,结果具有5位有效数字。 3. 利用二分法求方程f(x)=x3-x-1=0在区间[1.0,1.5]内的一个实根,精度为10-5。 三、算法 算法1. 使用迭代法求方程f(x)=3x2-e x=0一个正根,并使误差不大于10-5。 算法2. 用牛顿法计算√5,结果具有5位有效数字。 for k=2,3,4….N do 1)compute x:x g(x) 四、重要标识符说明 程序1. 重要标识符说明 程序2. 重要标识符说明 Error确定有效位数,abs取绝对值,for 迭代次数 五、程序运行实例 在matlab 6.5环境中,运行程序1,结果如图1所示。

图1 程序1运行结果在matlab 6.5环境中,运行程序2,结果如图2所示。 图2 程序2运行结果六、源程序 程序1源程序: 程序2源程序: Error=1e-5; x=2; for k=2:10 xk=x; x=x/2+5/(2*x); if (abs(xk - x)<=Error) break; end end

实验3非线性方程求根问题

西华数学与计算机学院上机实践报告 课程名称:计算方法A年级:上机实践成绩: 指导教师:严常龙姓名: 上机实践名称:非线性方程求根问题学号:上机实践日期: 上机实践编号:1上机实践时间: 一、目的 1.通过本实验的编程练习,加深对非线性方程求根方法之二分法、简单迭代法、、牛顿迭代法等的构造过程的理解; 2.能将各种方法的算法描述正确地改编为程序并上机实现; 3.比较各种方法在求解同一非线性方程根时,在收敛情况上的差异。 二、内容与设计思想 自选求根问题,分别用二分法、简单迭代法、埃特金加速收敛法和牛顿迭代法求解其根,然后完成编程作业(注意把同一求根问题的几种不同方法放在一个程序之内)。以下求根问题供参考和选择,也可自行选择其他求根问题: 1.用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]内的根。 2.方程f(x)=2x3-5x2-19x+42=0在x=3.0附近有根,试写出其三种不同的等价形式以构成三种不同的迭代格式,再用简单迭代法求根,观察这三种迭代是否收敛及收敛的快慢。 3.用牛顿迭代法求方程f(x)=x3+2x2+10x-20=0在区间[1 , 1.5]上的根。 4.Cosx=x在区间[0 , /2]上的根。 三、使用环境 操作系统:Windows XP 软件环境:Microsoft Visual C++ 四、核心代码及调试过程 第一题:用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]内的根。 方程的近似解是:x=2.094552。 #include #include #define N 25 void main() { int k; float a[N],b[N],c[N],fa[N],fb[N],fc[N]; float x,y; printf("请输入a[0]的数值:"); scanf("%f",&x); printf("\n请输入b[0]的数值:"); scanf("%f",&y);

非线性方程求根

实验七 非线性方程求根 实验7.1(迭代法、初始值与收敛性) 实验目的:初步认识非线性问题的迭代法与线性问题迭代法的差别,探讨迭代法及初始值与迭代收敛性的关系。 问题提出:迭代法是求解非线性方程的基本思想方法,与线性方程的情况一样,其构造方法可以有多种多样,但关键是怎样才能使迭代收敛且有较快的收敛速度。 实验内容:考虑一个简单的代数方程 012=--x x 针对上述方程,可以构造多种迭代法,如 )1.7(1 2 1-=+n n x x )2.7(111n n x x + =+ )3.7(1 1+=+n n x x 在实轴上取初始值x 0,请分别用迭代(7.1)-(7.3)作实验,记录各算法的迭代过程。 实验要求: (1)取定某个初始值,分别计算(7.1)-(7.3)迭代结果,它们的收敛性如何?重复选取不同的初始值,反复实验。请自选设计一种比较形象的记录方式(如利用MATLAB 的图形功能),分析三种迭代法的收敛性与初值选取的关系。 (2)对三个迭代法中的某个,取不同的初始值进行迭代,结果如何?试分析迭代法对不同的初值是否有差异? (3)线性方程组迭代法的收敛性是不依赖初始值选取的。比较线性与非线性问题迭代的差异,有何结论和问题。 实验过程: 第一问: 针对迭代函数 11n n x x +=- 程序 disp(' 请输入初始迭代值为') x=[]; a=[];

b=[]; x(1)=input(''); for i=2:30 x(i)=x(i-1)^2-1; end for i=2:30 a(i-1)=x(i-1); b(i)=x(i); end a b i=1:30; plot(i,x) title('x(n+1)=x(n)^2-1') 数值实验结果及分析: 选择初始值为1时,每次迭代的波动情况如下:

计算方法非线性方程求根

计算方法第7章 非线性方程求根 本章主要内容: 1.区间二分法. 2切线法. 3.弦位法. 4.一般迭代法. 重点、难点 一、区间二分法 区间二分法是求方程f(x)=0根的近似值的常用方法。 基本思想:利用有根区间的判别方法确定方程根的区间[a,b] ,将有根区间平分为二;再利用有根区间的判别方法判断那一个区间是有根区间;重复上述步骤,直到小区间端点差的绝对值小于等于精度要求的数值,则用将上一区间的分半值作为方程的根的近似值。 区间二分法的计算步骤如下: 1. 计算区间端点的函数值f(a) , f(b)(不妨设f(a)<0,f(b)>0); 确定初始有根区间[a,b]. 2.二分有根区间[a,b],并计算)2( b a f + 取2 1b a x += 3.判断: 若0)(1=x f ,则方程的根为1x x =*; 若 0)(1>x f ,则有根区间为[]1,x a x ∈* ;令[]],[,111b a x a = 若 0)(1

12 ln ln )ln(---≥ ε a b n 确定应二分的次数。 例1 用区间二分法求方程0353 =+-x x 在某区间内实根的近似值(精确到0.001) 【思路】参见上述区间二分法的计算步骤 解 ∵f(1.8)=-0.168<0, f(1.9)=0.359>0 ∴f(x)在区间[1.8 ,1.9]内有一个根。 由公式 644.512 ln 001 .0ln 1.0ln 12ln ln )ln(=--=---≥ εa b n 取n=6, 计算结果列表如下: 则方程在区间[1.8,1.9]内所求近似值为x * ≈ x = 1.8328125 区间二分法的优点是计算程序简单,只要f (x )在区间[a,b]上连续,区间二分法就可使用,但区间二分法不能用来求偶次重根,由于区间二分法收敛比较慢,在实际计算中,区间二分法常用来求比较好的含根区间和初始近似值,以便进一步使用收敛更快的迭代法求出更精确的近似值。 迭代序列收敛阶的概念 设迭代序列{}n x 收敛于* x ,如果存在实数1≥p 与正常数c ,使得

非线性方程求根方法

第12章非线性方程求根方法 二分法 二分法算法 1.计算[a, b]区间的中点存放在变量x0中,x0 ?(a+b)/2; 2.如果函数值f(x0)=0, 则x0是f(x)=0的实根x* ,输出根x0, 终止; 3.如果函数值f(a)f(x0)<0,则b ? x0 ,否则a ? x0; 4.如果b-a≤ε(ε为给定的精度),则输出根的近似值(a+b)/2,终止,否则转1。 二分法程序 Clear[x] f[x_]=Input[“键入函数f(x)=”]; a= Input[“键入左端点a=”]; b=Input[“键入右端点b=”]; Print[“a=”,a, “b=”,b, “ f(x)=”,f[x]] e1=10^(-10); eps=Input[“键入根的误差限eps=”]; n=0; While[b-a>eps, x=(a+b)/2;n=n+1; w=f[x]; If[Abs[w]

相关文档
最新文档