MATLAB数值积分与拟合.ppt_第1页
MATLAB数值积分与拟合.ppt_第2页
MATLAB数值积分与拟合.ppt_第3页
MATLAB数值积分与拟合.ppt_第4页
MATLAB数值积分与拟合.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数值积分,数值积分原理:,原函数不存在,采用数值积分:,函数: quad 功能: 数值定积分, Quad : 自适应Simpleson积分法。 格式 q = quad(fun,a,b) %近似地从a到b计算函数fun的数值积分,误差为10-6。若给fun输入向量x,应返回向量y,即fun是一单值函数。 q = quad(fun,a,b,tol) %用指定的绝对误差tol代替缺省误差。tol越大,函数计算的次数越少,速度越快,但结果精度变小。,程序: fun = inline(3*x.2./(x.3-2*x.2+3); Q1 = quad(fun,0,2) 计算结果为: Q1 = 3.7224,例1. 计算0,2上如下函数的积分,梯形法数值积分,T = trapz(Y) %用等距梯形法近似计算Y的积分。若Y是一向量,则trapz(Y)为Y的积分;若Y是一矩阵,则trapz(Y)为Y的每一列的积分;若Y是一多维阵列,则trapz(Y)沿着Y的第一个非单元集的方向进行计算。 T = trapz(X,Y) %用梯形法计算Y在X点上的积分。若X为一列向量,Y为矩阵,且size(Y,1) = length(X),则trapz(X,Y)通过Y的第一个非单元集方向进行计算。 T = trapz(,dim) %沿着dim指定的方向对Y进行积分。若参量中包含X,则应有length(X)=size(Y,dim)。,例2. 用梯形公式计算-1,1上1/(1+25*X2)的积分。 X = -1:.1:1; Y = 1./(1+25*X.2); T = trapz(X,Y) 计算结果为: T = 0.5492,二元函数重积分的数值计算,1.矩形区域上的二重积分的数值计算 格式 q = dblquad(fun,xmin,xmax,ymin,ymax) 调用函数quad在区域xmin,xmax, ymin,ymax上计算二元函数z=f(x,y)的二重积分。输入向量x,标量y,则f(x,y)必须返回一用于积分的向量。 q = dblquad(fun,xmin,xmax,ymin,ymax,tol) %用指定的精度tol代替缺省精度10-6,再进行计算。 q = dblquad(fun,xmin,xmax,ymin, ymax, tol, method) %用指定的算法method代替缺省算法quad。method的取值有quadl或用户指定的、与命令quad与quadl有相同调用次序的函数句柄。,例如: fun = inline(y./sin(x)+x.*exp(y); Q = dblquad(fun,1,3,5,7) 输出结果: Q = 3.8319e+003,插值与拟合,Matlab中Lagrange 插值函数命令: Lagrange(x,y,x0),例1:已知数据如下表,试用Lagrange插值多项式求x分别为0.5626,0.5635,0.5645函数的近似值。 xi 0.56160 0.56280 0.56401 0.56521 Yi 0.82741 0.82659 0.82577 0.81495 在命令窗口输入如下执行命令: x=0.56160;0.56280;0.56401;0.56521; y=0.82741;0.82659;0.82577;0.81495; x0=0.5626;0.5635;0.5645; y0=lagrang(x,y,x0) Y0=0.8265 0.8268 0.8231 plot(x,y,o,x0,y0,k*),2.分段三次埃尔米特插值 Matlab 中所用命令 pchip(x,y,x0),x=0.56160;0.56280;0.56401;0.56521; y=0.82741;0.82659;0.82577;0.81495; x0=0.5626;0.5635;0.5645; y0=pchip(x,y,x0) Y0=0.8267 0.8262 0.8232,2.分段三次埃尔米特插值 Matlab 中所用命令 pchip(x,y,x0),x=0.56160;0.56280;0.56401;0.56521; y=0.82741;0.82659;0.82577;0.81495; x0=0.5626;0.5635;0.5645; y0=spline(x,y,x0) Y0=0.8265 0.8268 0.8231,拟 合 问 题,已知热敏电阻数据: 温度t(0C) 20.5 32.7 51.0 73.0 95.7 电阻R() 765 826 873 942 1032,求600C时的电阻R。,设 R=at+b a,b为待定系数,曲 线 拟 合 问 题 的 提 法,已知一组(二维)数据,即平面上 n个点(xi,yi) i=1,n, 寻求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所有数据点最为接近,即曲线拟合得最好。,y=f(x),i 为点(xi,yi) 与曲线 y=f(x) 的距离,拟合与插值的关系,说明: 函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上完全不同。,实例:下面数据是某次实验所得,希望得到x和 f之间的关系?,问题:给定一批数据点,需确定满足特定要求的曲线或曲面,解决方案:,若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,就是数据拟合,又称曲线拟合或曲面拟合。,若要求所求曲线(面)通过所给所有数据点,就是插值问题;,曲线拟合问题最常用的解法线性最小二乘法的基本思路,第一步:先选定一组函数 r1(x), r2(x), rm(x), mn, 令 f(x)=a1r1(x)+a2r2(x)+ +amrm(x) (1) 其中 a1,a2, am 为待定系数。,第二步: 确定a1,a2, am 的准则(最小二乘准则): 使n个点(xi,yi) 与曲线 y=f(x) 的距离i 的平方和最小 。,记,问题归结为,求 a1,a2, am 使 J(a1,a2, am) 最小。,线性最小二乘法的求解:预备知识,超定方程组:方程个数大于未知量个数的方程组,超定方程一般是不存在解的矛盾方程组。,如果有向量a使得 达到最小, 则称a为上述超定方程的最小二乘解。,线性最小二乘法的求解,定理:当RTR可逆时,超定方程组(3)存在最小二乘解, 且即为方程组 RTRa=RTy -正则(正规)方程组 的解:a=(RTR)-1RTy,所以,曲线拟合的最小二乘法要解决的问题,实际上就是求以下超定方程组的最小二乘解的问题。,线性最小二乘拟合 f(x)=a1r1(x)+ +amrm(x)中函数r1(x), rm(x)的选取,1. 通过机理分析建立数学模型来确定 f(x);,2. 将数据 (xi,yi) i=1, n 作图,通过直观判断确定 f(x):,线性最小二乘拟合,1. 作多项式f(x)=a1xm+ +amx+am+1拟合,可利用已有程序:,a=polyfit(x,y,m),2.对超定方程组,3.多项式在x处的值y的计算命令:y=polyval(a,x),例 对下面一组数据作二次多项式拟合,1)输入命令: x=0:0.1:1; y=-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2; R=(x.2), x, ones(11,1); A=Ry,解法1解超定方程的方法,2)计算结果: = -9.8108, 20.1293, -0.0317,2)计算结果: = -9.8108, 20.1293, -0.0317,解法2用多项式拟合的命令,MATLAB(zxec2),1)输入命令: x=0:0.1:1; y=-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2; A=polyfit(x,y,2) z=polyval(A,x); plot(x,y,k+,x,z,r) %作出数据点和拟合曲线的图形,1. lsqcurvefit 已知数据点:xdata=(xdata1,xdata2,xdatan) ydata=(ydata1,ydata2,ydatan),用MATLAB作非线性最小二乘拟合,两个求非线性最小二乘拟合的函数: lsqcurvefit、lsqnonlin。 相同点和不同点:两个命令都要先建立M-文件fun.m,定义函数f(x) 。,lsqcurvefit用以求含参量x(向量)的向量值函数 F(x,xdata)=(F(x,xdata1),F(x,xdatan)T 中的参变量x(向量),使得,x = lsqcurvefit (fun,x0,xdata,ydata);,lsqnonlin用以求含参量x(向量)的向量值函数 f(x)=(f1(x),f2(x),fn(x)T 中的参量x,使得 最小。 其中 fi(x)=f(x,xdatai,ydatai) =F(x,xdatai)-ydatai,2. lsqnonlin,已知数据点: xdata=(xdata1,xdata2,xdatan) ydata=(ydata1,ydata2,ydatan),x= lsqnonlin (fun,x0);,例2 用下面一组数据拟合 中的参数a,b,k,该问题即解最优化问题:,F(x,tdata)= ,x=(a,b,k),解法1. 用命令lsqcurvefit,2)输入命令 tdata=100:100:1000 cdata=1e-3*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39, 6.50,6.59; x0=0.2,0.05,0.05; x=lsqcurvefit (curvefun1,x0,tdata,cdata) f= curvefun1(x,tdata),1)编写M-文件 curvefun1.m function f=curvefun1(x,tdata) f=x(1)+x(2)*exp(-0.02*x(3)*tdata) %其中 x(1)=a; x(2)=b;x(3)=k;,3)运算结果: f =0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0.0063 0.0063 x =0.0063 -0.0034 0.2542,4)结论:a=0.0063, b=-0.0034, k=0.2542,1)编写M-文件 curvefun2.m function f=curvefun2(x) tdata=100:100:1000; cdata=1e-03*4.54,4.99,5.35,5.65,5.90, 6.10,6.26,6.39,6.50,6.59; f=x(1)+x(2)*exp(-0.02*x(3)*tdata)- cdata,2)输入命令: x0=0.2,0.05,0.05; x=lsqnonlin(curvefun2,x0) f= curvefun2(x),函数curvefun2的自变量是x,cdata和tdata是已知参

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论