matlab(第四章 函数和方程)

上传人:野鹰 文档编号:46524867 上传时间:2018-06-27 格式:PPT 页数:62 大小:511KB
返回 下载 相关 举报
matlab(第四章 函数和方程)_第1页
第1页 / 共62页
matlab(第四章 函数和方程)_第2页
第2页 / 共62页
matlab(第四章 函数和方程)_第3页
第3页 / 共62页
matlab(第四章 函数和方程)_第4页
第4页 / 共62页
matlab(第四章 函数和方程)_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《matlab(第四章 函数和方程)》由会员分享,可在线阅读,更多相关《matlab(第四章 函数和方程)(62页珍藏版)》请在金锄头文库上搜索。

1、MATLAB数学实验第四章 函数和方程主要内容lMATLAB指令非线性方程(组)求解函数极值 x=roots(p) , polyval(p,x) 用MATLAB求解 clear;x= ; y= ; p=polyfit(x,y,2) %拟合 xi=-0.2:0.01:0.3 ; yi=ployval(p,xi); plot(x,y,o,xi,yi) %拟合效果Fun=inline(funstr,var) 定义一个Inline函数,其中funstr是函数的表达式, var是变量名Fun=Mfun 定义一个函数句柄,这里 Mfun是函数的M文件表达方式Fun=(var)funstr 定义匿名函数,其

2、中var 是变量名, funstr是函数的表达式 4.2 非线性函数的MATLAB表达x=fzero(Fun, x0) 返回一元函数Fun的一个零点,其中Fun为函数句柄、内嵌函数或字符串表达方式。x0为标量时,返回函数在x0附近的零点;x0为向量a, b时, 返回在a,b中的零点 注意:要求区间两端的函数值异号4.2 函数零点MATLAB指令例 求f(x)=x-10x+2=0在x0=0.5附近的根。步骤如下: (1) 建立函数文件funx.m。function fx=funx(x)fx=x-10.x+2; (2) 调用fzero函数求根。z=fzero(funx,0.5)z =0.3758x

3、,f,h=fsolve(Fun, x0) x返回一元或多元函数Fun在x0附近的一个零点,其中x0为迭代初值; f返回Fun在x的函数值, 应该接近0; h返回值如果大于0,说明计算结果可靠,否则计算结果不可靠。 说明: fsolve也可以用于多项式方程(组),但计 算量明显比roots命令大;- 该命令用最小二乘法解非线性方程( 组)的数值解,此种方法需要尝试输入解的 初始值,即使程序中的迭代序列收敛,也不 一定收敛到方程(组)的根。 fzero只能求零点附近变号的根 fzero和fsolve只能求实根 roots多项式求根 (复根)x=-1.6和0.6附近各有一个零点,分两个小区间分别求解

4、 方法一: fzero(fun,-2 -1.2) , fzero(fun,1.2, -0.1) 方法二: fzero(fun,-1.6), fzero(fun,-0.6) 方法三:x,f,h=fsolve(fun, -1.6),x,f,h=fsolve(fun, -0.6), 例3 求函数y=xsin(x2-x-1)在(-2, -0.1)内的 零点 fun=inline(x*sin(x2-x-1),x) fzero(fun,-2 -0.1) 【失效】例4 求方程组在原点附近的解方法一:函数句柄方式求解 方法二:inline函数或匿名函数求 解方法一:函数句柄方式求解 %egfun.m func

5、tion f=egfun(x) f(1)=4*x(1)-x(2)+exp(x(1)/10-1; f(2)=-x(1)+4*x(2)+x(1)2/8; x,f,h=fsolve( egfun,0,0)方法二:inline函数或匿名函数求解 fun=inline(4*x(1)-x(2)+exp(x(1)/10-1,- x(1)+4*x(2)+x(1)2/8,x); x,f,h=fsolve(fun,0,0) fun=(x)4*x(1)-x(2)+exp(x(1)/10-1,- x(1)+4*x(2)+x(1)2/8; x,f,h=fsolve(fun,0,0)min(y) 返回向量y的最小值 ma

6、x(y) 返回向量y的最大值x,f=fminbnd(fun,a,b) x返回一元函数y=f(x)在a,b内的局部极小值点,f返回局部极小值fun为函数句柄或inline。 x,f=fminsearch(fun,x0) x返回多元函数y=f(x)在初始值x0附近的局部极小值点,f返回局部极小值.x, x0均为向量。4.2 函数极值MATLAB指令注意: MATLAB没有专门提供求函数最(极)大值的函 数,但只要注意到f(x)在区间(a,b)上的最(极)大 值M,则-f(x)在(a,b)的最(极)小值为-M。 在使用fsolve, fminsearch等指令时,多变量 必须合写成一个向量变量,如用

7、x(1), x(2),。 例3 求函数y=xsin(x2-x-1)极小值点 x=-1.6:0.01:-1;y=x.*sin(x.2-x-1); m,k=min(y) x(k) 【较高精度】 fun=inline(x*sin(x2-x-1),x); x,f=fminbnd(fun,-1.6,-1) x,f=fminsearch(fun,-1)例 5 .求二元函数f(x,y)= 5-x4-y4+4xy 在原点附近的极大值。fun=inline(x(1)4+x(2)4- 4*x(1)*x(2)-5); x,g=fminsearch(fun,0,0)例 求f(x)=x3-2x-5在0,5内的最小值点。

8、(1) 建立函数文件mymin.m。function fx=mymin(x)fx=x.3-2*x-5;(2) 调用fmin函数求最小值点。x=fminsearch(mymin,0,5)x=0.81654.2 非线性最小二乘拟合 假设已知经验公式y=f(c,x)(c和x均可为向量), 要求根据一 批有误差的数据(xi,yi), i=0,1,n, 确定参数c.这样的问题称为数据拟合。 最小二乘法就是求c使得均方误差最小化Q(c)= 当f关于c是线性函数,问题转化为一个线性方程组求解,且 其解存在唯一。 如果f关于c是非线性函数,问题转化为函数极值问题c= lsqnonlin (fun,c0) 使用

9、迭代法搜索最优参数c. 其中fun是以参数c(可以是向量)为自变量的函数,表示误差向量y-f(c,x) (x, y为数据向量),c0为参数c的近似值,作为迭代初值c=lsqcurvefit(fun2,c0, x, y) 从外部输入数据,这里fun2为两变量函数 f(c, x) 例2.用2次多项式拟合下列数据.x 0.1 0.2 0.15 0 -0.2 0.3 y 0.95 0.84 0.86 1.06 1.50 0.72 方法一: function e=fitf(c) x=0.1 0.2 0.15 0 -0.2 0.3; y=0.95 0.84 0.86 1.06 1.50 0.72; e=y

10、-(c(1)*x.2+c(2)*x+c(3);c=lsqnonlin(fitf,0,0,0)例4.2方法二:lsqcurvefit fun2=inline(c(1)*x.2+c(2)*x+c(3),c,x) x=0.1 0.2 0.15 0 -0.2 0.3; y=0.95 0.84 0.86 1.06 1.50 0.72; c=lsqcurvefit(fun2,0,0,0,x,y) 注意:最小二乘法能找到符合经验公式的最佳曲 线,但该经验公式是否有效,还需要事后检验。 一般可以从图像上作出判断,定量的方法是计算 残差平方和,再进行统计检验。【chap9】4.3 计算实验:迭代法基本思想构造不

11、动点方程,以求得近似根。当给定初值x0 后, 由迭代格式可求得数列xk。此数列可能收敛,也可能不收敛。如果xk收敛于 x*,则它就是方程的根。因为:即由方程f(x)=0变换为其等价形式x=(x), 然后建立迭代格式,4.3 计算实验:迭代法 1. 迭代法(1)不动点迭代法:按上述方法构造迭代格式来求解方程的方法称为简单迭代法或逐次迭代法。基本概念基本概念实际计算中当然不可能也没必要无穷多步地做下 去, 对预先给定的精度要求,只要某个k满足即可结束计算并取 当然,迭代函数 的构造方法是多种多样的 。例 用迭代法求方程将方程改写成如下两种等价形式 相应地可得到两个迭代公式迭代法是否成功取决于下面3

12、个因素 : x=(x)与f(x)=0是否同解 初值x0选取是否合适(一般要与真解靠近 ) 最关键的是迭代序列是否收敛迭代法收敛的条件对方程f(x)=0可以构造不同的迭代公式, 但迭代公式并非总是收敛。那么,当迭代函数 满足什 么条件时,相应的迭代公式才收敛呢?即使迭 代收敛时,我们也不可能迭代很多次,而是迭 代有限次后就停止,这就需要估计迭代值的误 差,以便适时终止迭代 定理迭代法收敛的条件定理压缩映象原理的应用用迭代法可逐步精确方程 根的近似值,但必须要找到 的等价方程 ,如果 选得不合适,不仅影响收敛速度,而且有可能造成迭代格式发散。能否找到一种迭代方法,既结构简单,收敛速度快,又不存在发

13、散的问题。这就是本节要介绍的牛顿迭代法牛顿迭代法的基本思想牛顿迭代法一种重要和常用的迭代法, 它的基本思想是将非线性函数f(x)逐步线性化, 从而将非线性方程f(x)=0近似地转化为线性方程求解。牛顿迭代法对于方程 ,设其近似根为 , 函数f(x)可在附近作泰勒展开 忽略高次项,用其线性部分作为函数f(x)的近似, 设 的根 ,则有 ,即 将右端取为 ,即 是比 更接近于 的近似值 这就是著名的牛顿迭代公式牛顿迭代法的几何解释方程f(x)=0的根x*是曲线y=f(x)与x轴交点的横坐标,设xk是根x*的某个近似值,过曲线y=f(x)的横坐标为 xk的点Pk=(xk, f (xk)引切线交x轴于

14、xk+1 , 并将其作为x*新的近似值,重复上述过程,可见一次次用切线方程来求解方程f(x)=0的根,所以亦称为牛顿切线法。牛顿法评价 q 牛顿的优点牛顿法是目前求解非线性方程 (组) 的主要方法收敛速度较快,特别是当迭代点充分靠近精确解时。q 牛顿的缺点 l 对重根收敛速度较慢l 对初值的选取很敏感,要求初值相当接近真解先用其它算法获取一个近似解,然后使用牛顿法l 需要求导数!例6 求方程 x 2 - 3 x + e x = 2 的正根 (要求精度 = 10 -6)解 令f (x) = x 2 - 3 x + e x - 2, f(0)=-1, 当x 2, f (x) 0, f (x) 0即

15、f (x)单调上升,所以根在0,2内。先用图解法找初值, 再用牛顿法程序newton.m求解。 fun=inline(x2-3*x+exp(x)- 2);fplot(fun,0,2);grid on; dfun=inline(2*x-3+exp(x);format long; newton(fun,dfun,1.5,1e-6),format short format long;fzero(inline(x2-3*x+exp(x)- 2),1.5),format short%M函数newton.m function x=newton(fname,dfname,x0,e) if nargine x0=x;x=x0- feval(fname,x0)/feval(dfname,x0); end2线性化拟合 线性最小二乘拟合可直接用求解超定线

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号