




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第三组30号*连续建模与最优化连续建模与最优化方法专题方法专题28.1-8.2学习目标学习目标掌握常见的连续知识点和连续建模技术;掌握数据插值和拟合的思想和方法;掌握最优化方法及模型求解决技巧;掌握数学软件(matlab)中关于连续题型求解方法和编程技巧;掌握数学软件(matlab)中关于优化化问题的求解方法和编程技巧。3*一、一、数据插值和拟合的思数据插值和拟合的思想和方法想和方法4在工程实践与科学实验中,常常需要从一组试验数据之中找到自变量与因变量之间的关系,一般可用一个近似函数表示。函数产生的办法因观测数据的要求不同而异,数据插值与拟合是两种常用的方法。 MATLAB中的插值函数 拉
2、格朗日插值法 利用均差的牛顿插值法 利用差分的牛顿插值法 Hermite插值 多项式曲线拟合最小二乘拟合52.1 MATLAB中一维插值有多种算法,由interp1函数中的method指定。 MATLAB中一维插值的各种算法如表所示。6分段线性插值临近插值球面插值三次多项式插值x=0:2*pi;y=sin(x);x1=0:0.5:2*pi;y1=interp1(x,y,x1);plot(x,y,o,x1,y1) x=0:2*pi;y=sin(x);x1=0:0.5:2*pi;y1=interp1(x,y,x1,nearest);plot(x,y,o,x1,y1) x=0:2*pi;y=sin(
3、x);x1=0:0.5:2*pi;y1=interp1(x,y,x1,spline);plot(x,y,o,x1,y1) x=0:2*pi;y=sin(x);x1=0:0.5:2*pi;y1=interp1(x,y,x1,cubic);plot(x,y,o,x1,y1) 7分段线性插值临近插值球面插值三次多项式插值82.2拉格朗日插值法拉格朗日插值法在MATLAB中编程实现拉格朗日插值法函数为:Language。功能:求已知数据点的拉格朗日多项式;调用格式:f= Language(x,y)或f= Language(x,y,x0)。 其中,x为已知数据点的x 坐标向量;y为已知数据点的y 坐标向
4、量;x0为插值点的x坐标;f为求得的拉格朗日多项式或x0处的插值。 function f = Language(x,y,x0)%求已知数据点的拉格朗日多项式%已知数据点的x 坐标向量:x%已知数据点的y 坐标向量:y%为插值点的x坐标:x0%求得的拉格朗日多项式或x0处的插值:fsyms t;if(length(x) = length(y) n = length(x); else disp(x和y的维数不相等!); return;end %检错f = 0.0;for(i = 1:n) l = y(i); for(j = 1:i-1) l = l*(t-x(j)/(x(i)-x(j); end;
5、 for(j = i+1:n) l = l*(t-x(j)/(x(i)-x(j); %计算拉格朗日基函数 end; f = f + l; %计算拉格朗日插值函数 simplify(f); %化简 if(i=n) if(nargin = 3) f = subs(f,t,x0); %计算插值点的函数值 else f = collect(f); %将插值多项式展开 f = vpa(f,6); %将插值多项式的系数化成6位精度的小数 end endend9根据下表的数据点求出其拉格朗日插值多项式,并计算当x=1.6时y的值。解: x=1 1.2 1.8 2.5 4; y=0.8415 0.9320 0
6、.9738 0.5985 -0.7568; f=language(x,y)f = 1.05427*t-.145485e-1*t2-.204917*t3+.328112e-1*t4-.261189e-1 f=language(x,y,1.6)f = 0.999210利用均差的牛顿插值法利用均差的牛顿插值法)(0 xf)(1xf)(2xf)(3xf)(nxf,10 xxf,20 xxf,30 xxf,0nxxf,210 xxxf,310 xxxf,10nxxxf,3210 xxxxf,210nxxxxf,10nxxxf11在MATLAB中编程实现利用均差牛顿插值法函数为:Newton。功能:求已知
7、数据点的均差形式的牛顿插值多项式;调用格式:f= Newton(x,y)或f= Newton(x,y,x0)。其中,x为已知数据点的x 坐标向量;y为已知数据点的y 坐标向量;x0为插值点的x坐标;f为求得的牛顿插值法多项式或x0处的插值。function f = Newton(x,y,x0)%求已知数据点的均差形式牛顿插值多项式%已知数据点的x 坐标向量:x%已知数据点的y 坐标向量:y%为插值点的x坐标:x0%求得的均差形式牛顿插值多项式或x0处的插值:fsyms t;if(length(x) = length(y) n = length(x); c(1:n) = 0.0;else dis
8、p(x和y的维数不相等!); return;endf = y(1);y1 = 0;l = 1; for(i=1:n-1) for(j=i+1:n) y1(j) = (y(j)-y(i)/(x(j)-x(i); end c(i) = y1(i+1); l = l*(t-x(i); f = f + c(i)*l; simplify(f); y = y1; if(i=n-1) if(nargin = 3) f = subs(f,t,x0); else f = collect(f); %将插值多项式展开 f = vpa(f, 6); end endend12解: x=1 1.2 1.8 2.5 4;
9、y=1 1.44 3.24 6.25 16; f=Newton(x,y)f = .182711e-14-.482154e-14*t+1.00000*t2-.169177e-14*t3+.211471e-15*t4 f=Newton(x,y,2.0)f = 4根据下表的数据点求出其均差形式牛顿插值多项式,并计算当x=2.0时y的值。13利用差分的牛顿插值法利用差分的牛顿插值法差分分为向前差分、后向差分和中心差分三种在MATLAB中编程实现向前牛顿插值法函数为:Newtonforward。功能:求已知数据点的向前牛顿插值法多项式;调用格式:f= Newtonforward(x,y)或f= Newt
10、onforward (x,y,x0)。 其中,x为已知数据点的x 坐标向量;y为已知数据点的y 坐标向量;x0为插值点的x坐标;f为求得的向前牛顿插值法多项式或x0处的插值。function f = Newtonforward(x,y,x0)%求已知数据点的向前差分牛顿插值多项式%已知数据点的x 坐标向量:x%已知数据点的y 坐标向量:y%为插值点的x坐标:x0%求得的向前差分牛顿插值多项式或x0处的插值:fsyms t;if(length(x) = length(y) n = length(x); c(1:n) = 0.0;else disp(x和y的维数不相等!); return;endf
11、 = y(1);y1 = 0;xx =linspace(x(1),x(n),(x(2)-x(1);if(xx = x) disp(节点之间不是等距的!); return;endfor(i=1:n-1) for(j=1:n-i) y1(j) = y(j+1)-y(j); end c(i) = y1(1); l = t; for(k=1:i-1) l = l*(t-k); end; f = f + c(i)*l/factorial(i); simplify(f); y = y1; if(i=n-1) if(nargin = 3) f = subs(f,t,(x0-x(1)/(x(2)-x(1);
12、else f = collect(f); f = vpa(f, 6); end endend14在MATLAB中编程实现向后牛顿插值法函数为:Newtonback。功能:求已知数据点的向前牛顿插值法多项式;调用格式:f= Newtonback (x,y)或 f = Newtonback (x,y,x0)。 其中,x为已知数据点的x 坐标向量; y为已知数据点的y 坐标向量; x0为插值点的x坐标; f为求得的向前牛顿插值法多项式或x0处的插值。function f = Newtonback(x,y,x0)%求已知数据点的向后差分牛顿插值多项式%已知数据点的x 坐标向量:x%已知数据点的y 坐标
13、向量:y%为插值点的x坐标:x0%求得的向前差分牛顿插值多项式或x0处的插值:fsyms t;if(length(x) = length(y) n = length(x); c(1:n) = 0.0;else disp(x和y的维数不相等!); return;endf = y(n);y1 = 0;xx =linspace(x(1),x(n),(x(2)-x(1);if(xx = x) disp(节点之间不是等距的!); return;endfor(i=1:n-1) for(j=i+1:n) y1(j) = y(j)-y(j-1); end c(i) = y1(n); l = t; for(k=
14、1:i-1) l = l*(t+k); end; f = f + c(i)*l/factorial(i); simplify(f); y = y1;if(i=n-1) if(nargin = 3) f = subs(f,t,(x0-x(n)/(x(2)-x(1); else f = collect(f); f = vpa(f, 6); end endend15根据下表的数据点求出其差分形式的牛顿插值多项式,并计算当x=1.55时y的值。根据下表的数据点求出其差分形式的牛顿插值多项式,并计算当x=1.55时y的值。解: x=1 1.2 1.4 1.6 1.8 ; y=0.8415 0.93200
15、.9854 0.9996 0.9738; f=Newtonforward(x,y) f = .841500+.108025*t-.169042e-1*t2-.675000e-3*t3+.541667e-4*t4 f=Newtonforward(x,y,1.55)f = 0.9998f=Newtonback(x,y) f =.973800-.457417e-1*t-.198042e-1*t2+.191667e-3*t3+.541667e-4*t4 f=Newtonback(x,y,1.55)f =0.999816Hermite插值插值在在MATLABMATLAB中编程实现中编程实现Hermite
16、Hermite插值法插值法函数为:函数为: HermiteHermite。功能:求已知数据点的功能:求已知数据点的HermiteHermite插值法多项式;插值法多项式;调用格式:调用格式:f=f= HermiteHermite (x,y,y_1)(x,y,y_1)或或 f =f = HermiteHermite (x,y, y_1,x0)(x,y, y_1,x0)。 其中,其中,x x为已知数据点的为已知数据点的x x 坐标向量;坐标向量; y y为已知数据点的为已知数据点的y y 坐标向量;坐标向量; y_1y_1为已知数据点导数向量;为已知数据点导数向量; x0 x0为插值点的为插值点的
17、x x坐标;坐标; f f为求得的为求得的HermiteHermite插值法多项式或插值法多项式或x0 x0处的插值。处的插值。function f = Hermite(x,y,y_1,x0)%求已知数据点的向后差分牛顿插值多项式%已知数据点的x 坐标向量:x%已知数据点的y 坐标向量:y%已知数据点的导数向量:y_1%求得的Hermite插值多项式或x0处的插值:fsyms t;f = 0.0;if(length(x) = length(y) if(length(y) = length(y_1) n = length(x); else disp(y和y的导数的维数不相等!); return;
18、 endelse disp(x和y的维数不相等!); return;endfor i=1:n h = 1.0; a = 0.0; for j=1:n if( j = i) h = h*(t-x(j)2/(x(i)-x(j)2); a = a + 1/(x(i)-x(j); end end f = f + h*(x(i)-t)*(2*a*y(i)-y_1(i)+y(i); if(i=n) if(nargin = 4) f = subs(f,t,x0); else f = vpa(f,6); end endend17根据下表的数据点求出其Hermite插值多项式,并计算当x=1.144时y的值。解
19、: x=1:0.2:1.8; y=1 1.0954 1.1832 1.2649 1.3416; y_1=0.5 0.4564 0.4226 0.3953 0.3727; f=Hermite(x,y,y_1) f = 678.168*(t-1.20000)2*(t-1.40000)2*(t-1.60000)2*(t-1.80000)2*(-20.3333+21.3333*t)+10850.7*(t-1.)2*(t-1.40000)2*(t-1.60000)2*(t-1.80000)2*(-10.4063+9.58473*t)+24414.1*(t-1.)2*(t-1.20000)2*(t-1.6
20、0000)2*(t-1.80000)2*(.591560+.422600*t)+10850.7*(t-1.)2*(t-1.20000)2*(t-1.40000)2*(t-1.80000)2*(17.4978-10.1455*t)+678.168*(t-1.)2*(t-1.20000)2*(t-1.40000)2*(t-1.60000)2*(50.9807-27.5773*t) f=Hermite(x,y,y_1,1.44)f = 1.200018多项式曲线拟合多项式曲线拟合在MATLAB中编程实现多项式曲线拟合函数为: multifit。功能:求已知数据点的多项式曲线拟合插值法多项式;调用格式
21、:A= multifit (x,y,m) 。 其中,x为已知数据点的x 坐标向量; y为已知数据点的y 坐标向量; m为拟合多项式的次数; A为拟合多项式的系数向量。function A=multifit(X,Y,m)%离散数据点的多项式曲线拟合%试验数据点x坐标向量:x%试验数据点y坐标向量:y%拟合多项式的次数:m%A-输出的拟合多项式的系数N=length(X);M=length(Y);if(N = M) disp(数据点坐标不匹配!); return;endc(1:(2*m+1)=0;b(1:(m+1)=0;for j=1:(2*m+1) %求出c和b for k=1:N c(j)=c
22、(j)+X(k)(j-1); if(j x=1:3; y=2 5 10; A=multifit(x,y,2)A = 0.1282 0.3235 0.8718即拟合的多项式为p= 0.1282 + 0.3235 x + 0.8718 x2。20最小二乘拟合最小二乘拟合最小二乘法拟合在科学实验的统计方法中经常使用。它的具体操作过程是从一组实验数据(xi,yi)中拟合出函数关系y=f(x),拟合的标准是使(f(xi)-yi)的平方取极小值。在MATLAB中可以使用polyfit函数对数据进行最小二乘法拟合,它的基本调用格式为: p= polyfit(X,Y,N) 表示用N次多项式拟合数据点(xi,y
23、i)。解:x=1:0.2:1.8; y=1 1.09541.18321.26491.3416; p=polyfit(x,y,4)p = -0.0104 0.0854 -0.3121 0.9086 0.3285即拟合的多项式为p= -0.0104 + 0.0854x -0.3121x2+ 0.9086 x3+ 0.3285x4。用四次多项式拟合下表中所列的数据点:21*二、二、最优化专题最优化专题22常见的几种最优化方法1、梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必
24、是最快的。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是“最速下降法”。最速下降法越接近目标值,步长越小,前进越慢。梯度下降法的缺点:(1)靠近极小值时收敛速度减慢,如下图所示;(2)直线搜索时可能会产生一些问题;(3)可能会“之字形”地下降。23从上图可以看出,梯度下降法在接近最优解的区域收敛速度明显变慢,利用梯度下降法求解需要很多次的迭代。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。比如对一个线性回归(Linear Logistics)模型,假设下面的h(x)是要拟合的函数,J(
25、theta)为损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了。其中m是训练集的样本个数,n是特征的个数。njjjxh0)(mixhyJiim12)()(2124*2、牛顿法(Newtons method)牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿法最大的特点就在于它的收敛速度很快。具体步骤:首先,选择一个接近函数f(x)零点的x0,计算相应的f(x0)和切线斜率f (x0)(这里f 表示函数f 的导数)。然后我们计算穿过点(x0, f (x0)并且斜率
26、为f(x0)的直线和x轴的交点的x坐标,也就是求如下方程的解:我们将新求得的点的x坐标命名为x1,通常x1会比x0更接近方程f(x) = 0的解。因此我们现在可以利用x1开始下一轮迭代。迭代公式可化简为如下所示: 已经证明,如果f 是连续的,并且待求的零点x是孤立的,那么在零点x周围存在一个区域,只要初始值x0位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果f (x)不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。25*2.1拟牛顿法(Quasi-Newton Methods)拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hess
27、ian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。具体步骤:拟牛顿法的基本思想如下。首先构造目标函数在当前迭代xk的二次模型:26这里Bk是一个对称正定矩阵,于是我们取这个二次模型的最优解作为搜索方向,并且得到新的迭代点:其中我们要
28、求步长ak满足Wolfe条件。这样的迭代与牛顿法类似,区别就在于用近似的Hesse矩阵Bk代替真实的Hesse矩阵。所以拟牛顿法最关键的地方就是每一步迭代中矩阵Bk的更新。现在假设得到一个新的迭代xk+1,并得到一个新的二次模型:我们尽可能地利用上一步的信息来选取Bk。具体地,我们要求从而得到这个公式被称为割线方程。常用的拟牛顿法有DFP算法和BFGS算法。27*3、共轭梯度法共轭梯度法共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之
29、一,也是解大型非线性最优化最有效的算法之一。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。28* MATLAB求解及编程技巧求解及编程技巧1 1、优化工具箱及最优化问题介绍、优化工具箱及最优化问题介绍1.11.1优化工具箱常用函数优化工具箱常用函数(1)Optimset函数:创建和编辑参数结构,其用法如下: options = optimset(param1,value1, param2,value2. )的作用是创建一个名为options的优化选项参数,其中指定的参数具有指定值。所有未指定的参数都设置为空矩阵(将参数设置为
30、表示当options传递给优化函数时给参数赋默认值)。赋值时只要输入参数前面的字母就可以了。 optimset函数没有输入/输出变量时,将显示一张完整的带有有效值的参数列表。 options = optimset的作用是创建一个选项结构options, 其中所有的元素被设置为 options = optimset(optimfun)的 作用是创建一个含有所有参数名和与优化函数optimfun相关的带有默认值的选项结构options. options = optimset(oldoptsparam1,value1.)的作用是创建一- 个oldopts的备份,用指定的数值修改参数。 options
31、 = optimset(oldopts,newopts) 的作用是将已经存在的选项结构oldopts与新的选项结构newopts进行合并。newopts 参数中的所有元素将覆盖oldopts参数中的所有对应元素。29(2)Optimget函数:获得options优化参数,其用法如下 val = optimget(options,param):返回指定的参数param的值。 val = optimget(options,param,default);:返回指定的参数param的值,如果该值没有定义则返回默认值。301、最优化问题求解单变量最优化问题根据目标函数是否需要求导分为直接法和间接法,直接法不需要对目标函数求导,间接法需要。下面介绍有关函数:fminbnd:找到固定区间内单变量函数的最小值。其语法与描述如下:x = fminbnd(fun,x1,x2):返回区间(xl,x2)上fun参数描述的标量函数的最小值x。Fun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校辅导员发言稿
- 冷库及设备租赁合同协议
- 2025年海洋能利用设备项目申请报告
- 2025年1,6-己二醇项目规划申请报告模板
- 全面依法治国课程课件
- 2025年新闻处理项目申请报告
- 护理垫行业知识培训内容课件
- 光学重排本赵凯华课件
- 新学期寄语学生发言稿
- 光学产品基础知识培训课件
- 医院综合门诊部综合管理体系建设
- 2025至2030年中国SCADA行业市场运行现状及投资规划建议报告
- 2025年中医师承出师考试题库
- 2025年宜昌市猇亭区招聘化工园区专职工作人员(6人)笔试备考试题及答案详解(夺冠)
- uom无人机考试题库及答案2025
- 预防接种基础知识课件
- 护栏生产及安装方案(3篇)
- 厂区参观流程规范
- 污水厂培训课件
- 科协单位涉密管理制度
- 夏季安全生产试题及答案
评论
0/150
提交评论