文档库 最新最全的文档下载
当前位置:文档库 › 实验七 非线性方程求根

实验七 非线性方程求根

实验七  非线性方程求根

实验七 非线性方程求根

实验7.1(迭代法、初始值与收敛性)

实验目的:初步认识非线性问题的迭代法与线性问题迭代法的差别,探讨迭代法及初始值与迭代收敛性的关系。

问题提出:迭代法是求解非线性方程的基本思想方法,与线性方程的情况一样,其构造方法可以有多种多样,但关键是怎样才能使迭代收敛且有较快的收敛速度。

实验内容:考虑一个简单的代数方程

012=--x x

针对上述方程,可以构造多种迭代法,如

)1.7(121-=+n n x x

)2.7(1

11n n x x +=+

)3.7(11+=+n n x x

在实轴上取初始值x 0,请分别用迭代(7.1)-(7.3)作实验,记录各算法的迭代过程。

实验要求:

(1)取定某个初始值,分别计算(7.1)-(7.3)迭代结果,它们的收敛性如何?重复选取不同的初始值,反复实验。请自选设计一种比较形象的记录方式(如利用MATLAB 的图形功能),分析三种迭代法的收敛性与初值选取的关系。

(2)对三个迭代法中的某个,取不同的初始值进行迭代,结果如何?试分析迭代法对不同的初值是否有差异?

(3)线性方程组迭代法的收敛性是不依赖初始值选取的。比较线性与非线性问题迭代的差异,有何结论和问题。

非线性方程求根

非线性方程求根 本章主要内容: 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

例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 ,使得 c x x x x p n n n =--* *+∞ →1lim ,则称序列{}n x 是p 阶收敛于*x 。 特别地,当1=p 时,称序列{}n x 为线性(一次)收敛;{}n x 为线性收敛时,必须要求1

非线性方程求根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]上连续,区间二分法就可使用,但区间二分法不能用来求偶次重根,由于区间二分法收敛比较慢,在实际计算中,区间二分法常用来求比较好的含根区间和初始近似值,以便进一步使用收敛更快的迭代法求出更精确的近似值。 迭代序列收敛阶的概念

非线性方程的解法

20世纪60年代中期以后,发展了两种求解非线性方程组(1)的新方法。一种称为区间迭代法或称区间牛顿法,它用区间变量代替点变量进行区间迭代,每迭代一步都可判断在所给区间解的存在惟一性或者是无解。这是区间迭代法的主要优点,其缺点是计算量大。另一种方法称为不动点算法或称单纯形法,它对求解域进行单纯形剖分,对剖分的顶点给一种恰当标号,并用一种有规则的搜索方法找到全标号单纯形,从而得到方程(1)的近似解。这种方法优点是,不要求f(□)的导数存在,也不用求逆,且具有大范围收敛性,缺点是计算量大 编辑摘要 目录 ? 1 正文 ? 2 牛顿法及其变形 ? 3 割线法 ? 4 布朗方法 ? 5 拟牛顿法 ? n个变量n个方程(n >1)的方程组表示为 (1) 式中?i(x1,x2,…,x n)是定义在n维欧氏空间R n的开域D上的实函数。若?i中至少有一个非 线性函数,则称(1)为非线性方程组。在R n中记?= 则(1)简写为?(尣)=0。若存在尣*∈D,使?(尣*)=0,则称尣*为非线性方程组的解。方程组(1)可能有一个解或多个解,也可能有无穷多解或无解。对非线性方程组解的存在性的研究远不如线性方程组那样成熟,现有的解法也不象线性方程组那样有效。除极特殊的方程外,一般不能用直接方法求得精确解,目前主要采用迭代法求近似解。根据不同思想构造收敛于解尣*的迭代序列{尣k}(k=0,1,…),即可得到求解非线性方程组的各种迭代法,其中最著名的是牛顿法。 牛顿法基本思想是将非线性问题逐步线性化而形成如下迭代程序:

(2) 式中 是?(尣k)的雅可比矩阵,尣0是方程(1)的解尣*的初始近似。 这个程序至少具有2阶收敛速度。由尣k算到尣k+的步骤为:①由尣k算出?(尣k)及 ;②用直接法求线性方程组的解Δ尣k;③求 。 由此看到迭代一次需计算n个分量函数值和n2个分量偏导数值,并求解一次n阶线性方程组。 为了评价非线性方程组不同迭代法的优劣,通常用效率作为衡量标准,其中P为迭 代法的收敛阶,W为每迭代步计算函数值?i及偏导数值的总个数(每迭代步中求一次逆的工作量相同,均不算在W 内)。效率e越大表示此迭代法花费代价越小,根据效率定义, 牛顿法(2)的效率为。 牛顿法有很多变形,如当奇异或严重病态时,可引进阻尼因子λk,得到阻尼牛顿法,即

数值分析分章复习(第七章非线性方程求根)

第七章非线性方程求根 要点:(1)迭代公式局部收敛性及收敛性判断 (2) 迭代公式收敛阶概念 (3) Newton 迭代公式及收敛性左理 复习题: 1、建立一个迭代公式il ?算数G = j5 + 7?+辰二,要求分析所建迭代公式的收敛性 解:迭代式为:「卄产 l/o = 5 数d 应是函数卩(x ) = jrr§的不动点(即满足0(a ) = a ) 注意到(1)当xeI0,5]时,恒有0(人)€[0?习 (2)当xe[(X5]时,恒有0Cr) = — <-< 1 2\J X + 5 2 依据不动点迭代法收敛定理,知该迭代公式收敛到“ 2、对于方程—x = 2 ? 解:(1)记/(X )= 8’ — / 一 2 显然 /(_1.9) = 0.0496 >0, /(一1) =-0.6321 <0 当Jce[-L9,-1]时.恒有/V) = e'-l<0 可见/(X )在区间[-1.9,-I ]内有且仅有一个零点 即方程在区间内有且仅有一个实根 (2)取

严-X-2 兀屛=兀------ 汗七― e" -1 .心=一1?9 3、为求x^-x--\=0/£ L5附近的一个根,现将方程改写成等价形式,且建立相应的 迭代公式:(1) x = l + A: (2) x = (l + x-)h试分析每一种迭代的收敛性 X- 解:记 ⑴ 迭代式为£. = 1+2,这里记9?U)= I+4 注意到/(1?3)/(1?5)<1?并且f\x) = 3x--2x = x(3x-2)>Q. xe[L3J.5] 所以区间[1.3J.5]为有根区间 2 0([l?3J?5])c[l?3J?习,井且当xe[L3J.5]时,恒有I

Maab求解线性方程组非线性方程组

M a a b求解线性方程组非 线性方程组 The latest revision on November 22, 2020

求解线性方程组solve,linsolve例:A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1];%矩阵的行之间用分号隔开,元素之间用逗号或空格B=[3;1;1;0]X=zeros(4,1);%建立一个4元列向量 X=linsolve(A,B)diff(fun,var,n):对表达式fun中的变量var求n阶导数。 例如:F=sym('u(x,y)*v(x,y)'); %sym()用来定义一个符号表达式diff(F); %matlab区分大小写pretty(ans) %pretty():用习惯书写方式显示变量;ans是答案表达式 非线性方程求解 fsolve(fun,x0,options) 其中fun为待解方程或方程组的文件名; x0位求解方程的初始向量或矩阵; option为设置命令参数 建立文件: function y=fun(x) y=[x(1)*sin(x(1))*cos(x(2)), ... x(2) - *cos(x(1))+*sin(x(2))]; >>clear;x0=[,];fsolve(@fun,x0,optimset('fsolve'))注:...为续行符m文件必须以function 为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。 Matlab求解线性方程组AX=B或XA=B在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符“/”和“\”。如:X=A\B表示求矩阵方程AX=B的解;X=B/A表示矩阵方程XA=B 的解。对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A 的列数,方程X=B/A同理。 如果矩阵A不是方阵,其维数是m×n,则有:m=n 恰定方程,求解精确解;m>n 超定方程,寻求最小二乘解;m

非线性方程求根

第七章 非线性方程求根 教学目的与要求: 理解二分法求根的思想;掌握二分法求解过程;了解二分法的优点和缺点。了解迭代法的基本思想,迭代法的收敛条件以及局部收敛性的定义;理解基本迭代法的迭代思路,收敛条件的产生与求证过程;掌握基本迭代法的迭代格式,收敛条件的应用以及局部收敛定理。 重点和难点:迭代法的基本思想,迭代法的收敛性 ■ 教学内容: 基本概念: 的零点; 的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 ?三、迭代法的收敛条件

MATLAB应用 求解非线性方程

第7章 求解非线性方程 7.1 多项式运算在MATLAB 中的实现 一、多项式的表达 n 次多项式表达为:n a +??++=x a x a x a p(x )1-n 1-n 1n 0,是n+1项之和 在MATLAB 中,n 次多项式可以用n 次多项式系数构成的长度为n+1的行向量表示 [a0, a1,……an-1,an] 二、多项式的加减运算 设 有 两 个 多 项 式 n a +??++=x a x a x a p1(x )1-n 1-n 1n 0和 m b +??++=x b x b x b p2(x )1-m 1-m 1m 0。它们的加减运算实际上就是它们的对应系 数的加减运算。当它们的次数相同时,可以直接对多项式的系数向量进行加减运算。当它们的次数不同时,应该把次数低的多项式无高次项部分用0系数表示。 例2 计算()()1635223-+++-x x x x a=[1, -2, 5, 3]; b=[0, 0, 6, -1]; c=a+b 例3 设()6572532345++-+-=x x x x x x f ,()3532-+=x x x g ,求f(x)+g(x) f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3]; g1=[0, 0, 0, g];%为了和f 的次数找齐 f+g1, f-g1 三、多项式的乘法运算 conv(p1,p2) 例4 在上例中,求f(x)*g(x) f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3]; conv(f, g) 四、多项式的除法运算 [Q, r]=deconv(p1, p2) 表示p1除以p2,给出商式Q(x),余式r(x)。Q,和r 仍为多项式系数向量 例4 在上例中,求f(x)/g(x) f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3]; [Q, r]=deconv(f, g) 五、多项式的导函数 p=polyder(P):求多项式P 的导函数 p=polyder(P,Q):求P·Q 的导函数

非线性方程求根问题

计算机学院上机实践报告 一、目的 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;

数值分析第七章非线性方程求根习题答案

第七章非线性方程求根 (一)问题简介 求单变量函数方程 ()0f x = (7.1) 的根是指求*x (实数或复数),使得(*)0f x =.称*x 为方程(7.1)的根,也称*x 为函数() f x 的零点.若()f x 可以分解为 ()(*)()m f x x x g x =- 其中m 为正整数,()g x 满足()0g x ≠,则*x 是方程(7.1)的根.当m=1时,称*x 为单根;当m>1时,称*x 为m 重根.若()g x 充分光滑,*x 是方程(7.1)的m 重根,则有 (1)() (*)'(*)...(*)0,(*)0m m f x f x f x f x -====≠ 若()f x 在[a,b]上连续且()()0f a f b <,则方程(7.1)在(a,b)内至少有一个实根,称[a,b]为方程(7.1)的有根区间.有根区间可通过函数作图法或逐次搜索法求得. (二)方程求根的几种常用方法 1.二分法 设()f x 在[a,b]上连续,()()0f a f b <,则()0f x =在(a,b)内有根*x .再设()0f x =在(a,b)内 仅有一个根.令00,a a b b ==,计算0001()2x a b =+和 0()f x .若0()0f x =则*x x =,结束计算;若 00()()0 f a f x >,则令 10,1a x b b ==,得新的有根区间 11[,] a b ;若 00()()0 f a f x <,则令 10,10a a b x ==,得新的有根区间11[,]a b .0011[,][,]a b a b ?,11001 () 2b a b a -=-.再令1111 ()2x a b =+计算1()f x ,同上法得出新的有根区间22[,]a b ,如此反复进行,可得一有根区 间套 1100...[,][,]...[,] n n n n a b a b a b --???? 且110011 *,0,1,2,...,()...() 22n n n n n n a x b n b a b a b a --<<=-=-==-. 故 1 lim()0,lim lim ()* 2n n n n n n n n b a x a b x →∞→∞→∞-==+=

计算方法非线性方程求根

计算方法第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 ,使得

matlab非线性方程的解法(含牛拉解法)

非线性方程的解法(含牛拉解法) 1引 言 数学物理中的许多问题归结为解函数方程的问题,即, 0)(=x f (1.1) 这里,)(x f 可以是代数多项式,也可以是超越函数。若有数*x 为方程0)(=x f 的根,或称函数)(x f 的零点。 设函数)(x f 在],[b a 内连续,且0)()(

数值分析分章复习(第七章 非线性方程求根)

第七章 非线性方程求根 要点:(1)迭代公式局部收敛性及收敛性判断 (2)迭代公式收敛阶概念 (3)Newton 迭代公式及收敛性定理 复习题: 1、建立一个迭代公式计算数 a =要求分析所建迭代公式的收敛性 解: 迭代式为:105 n x x +?=?? =?? 数a 应是函数()x ?= ()a a ?=) 注意到(1)当[0,5]x ∈时,恒有[,5)](0x ?∈ (2)当[0,5]x ∈ 时,恒有()1 12 x ?<'= < 依据不动点迭代法收敛定理,知该迭代公式收敛到a 2、对于方程2x e x -=, (1) 证明在区间[-1.9,-1]内有唯一实根 (2) 讨论迭代格式 10(12 .9,1) k x k x e x +?=∈--??-??的收敛性如何? (3) 写出求解该实根的牛顿迭代公式 解:(1)记()2x f x e x =-- 显然( 1.9)0.04960, (1)0.63210f f -=>-=-< 当[ 1.9,1]x ∈--时,恒有()10x f x e '=-< 可见()f x 在区间[ 1.9,1]--内有且仅有一个零点 即方程在区间[ 1.9,1]--内有且仅有一个实根 (2)取()2x x e ?=- 容易验证:(I )当[ 1.9,1]x ∈--时,恒有[ 1.9](,1)x ?∈--, (II) 当[ 1.9,1]x ∈--时,恒有1 )1(x e x e ?-'<=< 依据不动点迭代法收敛定理,知该迭代公式收敛 (3)记()2x f x e x =--

牛顿迭代法形式: 1() () n n n n f x x x f x +=- ' 即:10 211.9n n x n n n x e x x x e x +?--=-?-??=-? 3、为求012 3 =--x x 在1.5附近的一个根,现将方程改写成等价形式,且建立相应的 迭代公式:(1)211x x +=;(2)()3 1 21x x +=。试分析每一种迭代的收敛性 解:记 32 ()1f x x x =-- (1) 迭代式为1211n n x x +=+ ,这里记2 1()1x x ?=+ 注意到(1.3)(1.5)1f f <, 并且2 ()32(32)0f x x x x x '=-=->, [1.3,1.5]x ∈ 所以区间[1.3,1.5]为有根区间 ([1.3,1.5])[1.3,1.5]??, 并且当[1.3,1.5]x ∈时,恒有3 |()|2 11.3x ?≤ <' 依据不动点迭代法收敛定理,知该迭代公式收敛 (2) 迭代式为1231(1)n n x x +=+,这里123 ()(1)x x ?=+ 同(1)中讨论,得结论:该迭代公式收敛 4、对于方程01=-x xe 在0.5附近的根。 (1) 选取一个不动点迭代公式,判别其收敛性,并指出收敛阶。 (2) 给出求解该实根的牛顿迭代公式 解:(1) 01=-x xe 1x x e = 构造迭代式: 10 n x n x e x -+?=????, 即取迭代函数 ()x x e ?-= 首先,容易验证区间[0.1,1]是方程的一个有根区间 ([0.1,1])[0.1,1]??, 并且当[0.1,1]x ∈时,恒有0.1|()|1x e ?-≤<' 依据不动点迭代法收敛定理,知该迭代公式收敛 设* [0.1,1]x ∈是其根的精确值, 因为* *()0x x e ?-'=-≠,故收敛为线性收敛,即收敛阶1p =

Matlab求解线性方程组、非线性方程组

求解线性方程组 solve,linsolve 例: A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1]; %矩阵的行之间用分号隔开,元素之间用逗号或空格 B=[3;1;1;0] X=zeros(4,1);%建立一个4元列向量 X=linsolve(A,B) diff(fun,var,n):对表达式fun中的变量var求n阶导数。 例如:F=sym('u(x,y)*v(x,y)'); %sym()用来定义一个符号表达式 diff(F); %matlab区分大小写 pretty(ans) %pretty():用习惯书写方式显示变量;ans是答案表达式 非线性方程求解 fsolve(fun,x0,options) 其中fun为待解方程或方程组的文件名; x0位求解方程的初始向量或矩阵; option为设置命令参数 建立文件fun.m: function y=fun(x) y=[x(1)-0.5*sin(x(1))-0.3*cos(x(2)), ... x(2) - 0.5*cos(x(1))+0.3*sin(x(2))]; >>clear;x0=[0.1,0.1];fsolve(@fun,x0,optimset('fsolve')) 注: ...为续行符 m文件必须以function为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。

Matlab求解线性方程组 AX=B或XA=B 在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符“/”和“\”。如: X=A\B表示求矩阵方程AX=B的解; X=B/A表示矩阵方程XA=B的解。 对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理。 如果矩阵A不是方阵,其维数是m×n,则有: m=n 恰定方程,求解精确解; m>n 超定方程,寻求最小二乘解; m

数值分析分章复习(第七章非线性方程求根).docx

第七章非线性方程求根 要点:(1)迭代公式局部收敛性及收敛性判断 (2)迭代公式收敛阶概念 (3)Newton迭代公式及收敛性定理 复习题: 1、建立一个迭代公式计算数d = $5 + 7^5 +…,要求分析所建迭代公式的收敛性£+】 =j5 + £ 解:迭代式为: 兀()=5 数d应是函数0(x)=厶+ 5的不动点(即满足(p(a) = a ) 注意到(1)当兀引0,5]时,恒有0(x) w [0,5] (2)当兀引0,5]时,恒有(p\x) = — . <-<\ 2Vx+5 2 依据不动点迭代法收敛定理,知该迭代公式收敛到Q 2、対于方程『—兀=2, (1)证明在区间[-1.9, -1]内有唯一实根 (2)讨论迭代格式二“一2的收敛性如何? (3)写岀求解该实根的牛顿迭代公式 解:(1) iE/(x) = e A-x-2 显然/(-1.9) = 0.0496 > 0, /(-I) = -0.6321 < 0 当兀0[—1.9,一1]吋,恒有/'(力二/一1<0 可见/(兀)在区间[-1.9,-1]内有且仅有一个零点 即方程在区间[-1.9,-1]内有R仅冇一个实根 (2)取(p(x) = e x-2 容易验证:(I)当xe[-1.9,-l]时,恒有0(兀)引一1.9,一1], (II)当兀引一1.9,一1]时,恒有0(x)二/vl 依据不动点迭代法收敛定理,知该迭代公式收敛

(3) Mf(x) = e x-x-2

即:<£+】=£ 严一1 兀o = —1.9 3、为求x3-x2-l = 0在1.5附近的一个根,现将方程改写成等价形式,且建立相应的迭代公式:(1) x = l + (2)兀=(1 + /)二试分析每一种迭代的收敛性 解:记f(x) = x3-x2-l (1)迭代式为£+1=1+丄,这里记0(兀)=1+丄 £厂 注意到/(1.3)/(1.5)<1,并且f\x) = 3x2-2x = x(3x-2) > 0, XG [1.3,1.5] 所以区间[1.3,1.5]为冇根区间 2 /([1.3,1.5])匸[1.3,1.5],并且当xw[l?3,l?5]时,恒有10 ⑴ 15青<1 依据不动点 迭代法收敛定理,知该迭代公式收敛 1 2 (2)迭代式为兀汁严(1 +尤)匚这里0(兀) = (1 +严)3 同(1)屮讨论,得结论:该迭代公式收敛 4、对于方程xe x-l = O在0.5附近的根。 (1)选取一个不动点迭代公式,判别其收敛性,并指出收敛阶。 (2)给出求解该实根的牛顿迭代公式 解:⑴xe x -1=0《9 x = — e x f Y = p~Xfl 构造迭代式:\ n+i,即収迭代函数(p(x) 十 ko 首先,容易验证区间[0.1,1]是方程的一个有根区间 ^([0.1,1]) c [0.1,1],并且当XG [0.1,1]时,恒有I(p\x) \< e A}A < 1 依据不动点迭代法收敛定理,知该迭代公式收敛 设XG [0.1,1]是其根的精确值,

非线性方程求根方法

第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]

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

西华数学与计算机学院上机实践报告 课程名称:计算方法C年级:2011级上机实践成绩: 指导教师:严常龙姓名: 上机实践名称:非线性方程求根问题学号:上机实践日期:2012.12.10 上机实践编号:3上机实践时间: 一、目的 1.通过本实验的编程练习,加深对非线性方程求根方法之二分法、简单迭代法、、牛顿迭代法等的构造过程的理解; 2.能将各种方法的算法描述正确地改编为程序并上机实现; 3.比较各种方法在求解同一非线性方程根时,在收敛情况上的差异。 二、内容与设计思想 自选求根问题,分别用二分法、简单迭代法、埃特金加速收敛法和牛顿迭代法求解其根,然后完成编程作业(注意把同一求根问题的几种不同方法放在一个程序之内)。以下求根问题供参考和选择,也可自行选择其他求根问题: 自拟题目:用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]内的根。方程f(x)=2x3-5x2-19x+42=0在x=3.0附近有根,用牛顿迭代法求其根。用简单迭代法求方程f(x)=x3+2x2+10x-20=0在区间[1 , 1.5]上的根。 三、使用环境 操作系统:Windows 7 软件环境:VC++ 6.0 四、核心代码及调试过程 #include #include #define N 50 #define EPS 0.000000001 double f(double x) { return(x*x*x-2*x-5);//f(x)=x3-2x-5 } double f2(double x) { return(2*x*x*x-5*x*x-19*x+42);//f(x)=2x3-5x2-19x+42 } double f3(double x) { return(6*x*x-10*x-19); } double f4(double x) {

相关文档 最新文档