MATLAB数值积分与拟合.ppt

上传人:tia****nde 文档编号:12707165 上传时间:2020-05-14 格式:PPT 页数:32 大小:257.50KB
返回 下载 相关 举报
MATLAB数值积分与拟合.ppt_第1页
第1页 / 共32页
MATLAB数值积分与拟合.ppt_第2页
第2页 / 共32页
MATLAB数值积分与拟合.ppt_第3页
第3页 / 共32页
点击查看更多>>
资源描述
数值积分,数值积分原理:,原函数不存在,采用数值积分:,函数: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函数的近似值。xi0.561600.562800.564010.56521Yi0.827410.826590.825770.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.82650.82680.8231plot(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.82670.82620.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.82650.82680.8231,拟合问题,已知热敏电阻数据:温度t(0C)20.532.751.073.095.7电阻R()7658268739421032,求600C时的电阻R。,设R=at+ba,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:1000cdata=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.mfunctionf=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.00430.00510.00560.00590.00610.00620.00620.00630.00630.0063x=0.0063-0.00340.2542,4)结论:a=0.0063,b=-0.0034,k=0.2542,1)编写M-文件curvefun2.mfunctionf=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是已知参数,故应将cdatatdata的值写在curvefun2.m中,解法2用命令lsqnonlin,x=(a,b,k),3)运算结果为f=1.0e-003*(0.2322-0.1243-0.2495-0.2413-0.1668-0.07240.02410.11590.20300.2792x=0.0063-0.00340.2542,可以看出,两个命令的计算结果是相同的。,4)结论:即拟合得a=0.0063b=-0.0034k=0.2542,谢谢,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!