- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例3 求函数y=xsin(x2-x-1)在(-2, -0.1)内的 零点 >> fun=inline('x*sin(x^2-x-1)','x') >> fzero(fun,[-2 -0.1]) >> fzero(fun,[-2,-1.2]), fzero(fun,[-1.2,-0.1]) >> fzero(fun,-1.6), fzero(fun,-0.6)
MATLAB中一个多项式用系数降幂排 列向量来表示。
例1.求多项式x3 + 2 x2 - 5的根 >> p=[1 2 0 -5]; x=roots(p) , polyval(p,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 M文件eg4_2.m1]上的极小值点 及极小值.
(2)当a=2时,求函数y=(x+a)e|x+a|在[-a-1 a+1] 上的极小值.
(3) 求二元函数f(x,y)= 100(y-x2)2-(1-x)2的 极小值。
(1) >> fun1=inline('x.^2+2*x+1','x') fun = Inline function: fun1(x) = x.^2+2*x+1 >> [x,y]=fminbnd(fun1,-1,1) x= -1 y= 0
4.2 函数零点MATLAB指令
x=fzero(Fun, x0) 返回一元函数Fun的 一个零点,其中Fun为函数句柄、inline函数或 匿名函数。x0为标量时, 返回函数在x0附近 的零点;x0为向量[a, b]时, 返回在[a,b]中的 零点
[x,f,h]=fsolve(Fun, x0) x: 返回多元函数Fun在x0附近的一个零 点,其中x0为迭代初值向量; f: 返回Fun在x的函数值, 应该接近0; h: 返回值如果大于0,说明计算结果可 靠,否则计算结果不可靠。
的调用格式
x= -3 y= -2.7183
• (3) • >> fun3=inline('100*(v(2)-v(1)^2)^2+(1-v(1))^2','v') fun3 = Inline function: fun3(v) = 100*(v(2)-v(1)^2)^2+(1-v(1))^2 • >> [v,fv]=fminsearch(fun3,[1 1]) v= 1 1 fv = 0
4.1 预备知识: 最小二乘拟合 %考虑负指数函数,Matlab程序
4.1 预备知识:最小二乘拟合
13.4 13.3 13.2 13.1 13 12.9 12.8 12.7 12.6 12.5 12.4 1970 1980 1990 2000 2010 2020 2030 2040 2050
4.1 预备知识:最小二乘拟合
>> [x,f,h]=fsolve(fun,-1.6) >> [x,f,h]=fsolve(fun,-0.6)
例4 求方程组在原点附近的解 1 x 4x y e 1 10 x 4 y 1 x 2 0 8 使用函数句柄
xx(1)
y x(2)
4.1 预备知识:最小二乘拟合
问题:估计什么时候突破12秒50?
13.3 13.25 13.2 13.15 13.1 13.05 13 12.95 12.9 12.85 1970 1975 1980 1985 1990 1995 2000 2005 2010
• clear;close all; data=[13.24 13.21 13.16 13.00 12.93 12.92 12.91 12.88 12.87]; year=[1972 1977 1979 1979 1981 1989 1993 2006 2008]; plot(year,data,'o'); y=data;x=year-1972; fun=@(c,x)c(1)*exp(-c(2)*x); %拟合方程y=a*exp(b*x) c=lsqcurvefit(fun,[13,(13.24-12.87)/36],x,y)%结果 c(1)=13.1539 ,c(2)=0.0007 fun2=@(x)c(1)*exp(-c(2)*x)-12.5; x2=fsolve(fun2,50)%结果x2=71.4564,约71年以后,即2043年 xx=0:75; yy=fun(c,xx); figure; plot(year,data,'o',xx+1972,yy);grid on;
MATLAB数学实验
第四章 函数和方程
第四章 函数和方程
4.1 预备知识:零点、极值和最小二乘法 4.2 函数零点、极值和最小二乘拟合的 MATLAB指令 4.3 计算实验:迭代法 4.4 建模实验:购房贷款的利率
4.1 预备知识:零点
非线性方程 f (x) = 0 • 若对于数有f () = 0, 则称为方程的解或根,也称为 函数f (x)的零点 • 若f () = 0, f ’()0 则称为单根。 • 若有k >1, f () = f ’() = …= f (k-1)() = 0,但 f (k)()0 , 称为k重根 • 非线性方程求解通常用数值方法求近似解 非线性方程(组)
• 假设已知经验公式y=f(c,x)(c为参数, x为自变量), 要求根据 一批有误差的数据(xi,yi), i=0,1,…,n, 确定参数c.这样的问 题称为数据拟合。 • 最小二乘法就是求c使得均方误差最小化 Q(c)=
2 ( y f ( c , x )) i i i 0 n
• 当f关于c是线性函数,问题转化为一个线性方程组求解,且 其解存在唯一。 • 如果f关于c是非线性函数,问题转化为函数极值问题
4.2 函数零点MATLAB指令
• 多项式
y=polyval(p,x) 求得多项式p在x处的值y,x可以是一个 或多个点 p3=conv(p1,p2) 返回多项式p1和p2的乘积 [p3,r]=deconv(p1,p2) p3返回多项式p1除以p2的商,r返 回余项 x=roots(p) 求得多项式p的所有复根. p=polyfit(x,y,k)用k次多项式拟合向量数据(x, y),返回多 项式的降幂系数
• 假设已知经验公式y=f(c,x)(c为参数, x为自变量), 要求根据 一批有误差的数据(xi,yi), i=0,1,…,n, 确定参数c.这样的问 题称为数据拟合。 • 最小二乘法就是求c使得均方误差最小化 Q(c)=
2 ( y f ( c , x )) i i i 0 n
• 当f关于c是线性函数,问题转化为一个线性方程组求解。 • 如果f关于c是非线性函数,问题转化为函数极值问题
f (x) = 0, x=(x1, x2, …, xn), f=(f1, f2, …, fm)
4.1 预备知识:极值
设x为标量或向量,y=f(x)是xD上的标量值函数。
如果对于包含x=a的某个邻域 ,有 f(a)f(x) (f(a)f(x))对任意x成立, 则称a为f(x)的一个局 部极小(大)值点。 如果对任意xD,有f(a)f(x)(f(a)f(x))成立, 则称a为f(x)在区域D上的一个全局极小(大)值点。
function f=eg4_4fun(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(@eg4_4fun,[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');
返回向量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均为向量。
注: (1) 在上述命令中,fun可以用内联函数, 匿名函数或编写M函数文件。 (2) 在使用fsolve, fminsearch等指令时, 多 变量必须合写成一个向量变量,如用v(1), v(2),…。 (3) 如何求解函数的极大值? (4) 使用帮助文件学习fminunc的使用.
4.2 最小二乘拟合MATLAB指令
(2) >> clear >> fun2=inline('(x+a).*exp(abs(x+a))','x','a') fun = Inline function: fun2(x,a) = (x+a).*exp(abs(x+a)) >> a=2; >> [x,y]=fminbnd(@(x)fun2(x,a),-a-1,a+1) %注意含参数形式
>>[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])