资源预览内容
第1页 / 共133页
第2页 / 共133页
第3页 / 共133页
第4页 / 共133页
第5页 / 共133页
第6页 / 共133页
第7页 / 共133页
第8页 / 共133页
第9页 / 共133页
第10页 / 共133页
亲,该文档总共133页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第八章第八章 插值与拟合建模插值与拟合建模 重庆邮电大学重庆邮电大学 数理学院数理学院沈世云沈世云页灼宦聊朔船兼淆普缺仕穗初脆羽筛显芒拧伴畅匈酚星眩爆盟既貌脚归蔑数模插值与拟合建模数模插值与拟合建模一一.插值插值主要内容主要内容2、掌握用数学软件包求解插值问题。、掌握用数学软件包求解插值问题。1、了解插值的基本内容。、了解插值的基本内容。11一维插值一维插值22二维插值二维插值33实验作业实验作业求奸洪猎棚匙嫂钦充羊涎土功牧塑趴赛熬袱郸窍沁惧掀顷谎咱抱迭糯邯遇数模插值与拟合建模数模插值与拟合建模拉格朗日插值拉格朗日插值分段线性插值分段线性插值三次样条插值三次样条插值一一 维维 插插 值值一、一、插值的定义插值的定义二、插值的方法二、插值的方法三、用三、用Matlab解插值问题解插值问题返回返回昏粥郴溅齐唤诈孜滑熙剑魁争贩涅型揉举潍季炼汁芥丹注窄近乒君铜唱欺数模插值与拟合建模数模插值与拟合建模返回返回二维插值二维插值一、一、二维插值定义二维插值定义二、二、网格节点插值法网格节点插值法三、三、用用MatlabMatlab解插值问题解插值问题最邻近插值最邻近插值分片线性插值分片线性插值双线性插值双线性插值网格节点数据的插值网格节点数据的插值散点数据的插值散点数据的插值组斯棠伪鲜芦彻食挟刮班递传归静估世兑搀桔鸿锦奶藩接靳舀染胜囤谍馅数模插值与拟合建模数模插值与拟合建模一维插值的定义一维插值的定义已知已知 n+1个节点个节点其中其中互不相同,不妨设互不相同,不妨设求任一插值点求任一插值点处的插值处的插值节点可视为由节点可视为由产生产生,,表达式复杂表达式复杂,,或无封闭形式或无封闭形式,,或未知或未知.。脯伶喘跌雄腹椒递援溜壹秘宛眩弯没皱伺笆撞科炊依兹孕塔披枉神昂猾釜数模插值与拟合建模数模插值与拟合建模 构造一个构造一个(相对简单的相对简单的)函数函数通过全部节点通过全部节点, 即即再用再用计算插值,即计算插值,即返回返回爹假沛赏斗撂犯膛仪吹毕威族桶龄曰贰厨泵影哟呀幕团帝荔坐齿妇乳资鄙数模插值与拟合建模数模插值与拟合建模2.3 拉格朗日插值拉格朗日插值1、线性插值假设已知在区间上的两个结点和它们的函数值 求一个一次多项式,使得多项式在结点上满足条件 这种插值方法称为线性插值方法(也称两点插值)。 可以求出: 财赖屑腋皿身兑铁固拈陨贿旅塌伐醋尺昼捻爆舟巳讨茄涤猾绰份崇问洒笔数模插值与拟合建模数模插值与拟合建模分段线性插值分段线性插值计算量与n无关;n越大,误差越小.xjxj-1xj+1x0xnxoy原拳滤悍夷讹凋刷缉肇蛆增蛔卿凛历埠抱龚内际隆兆羌咱目消嘻搞音以械数模插值与拟合建模数模插值与拟合建模2、抛物插值已知在区间上的三个结点和它们的函数值 求一个次数不超过2的多项式,使得它在结点上满足条件这种插值方法称为抛物线插值法, 可求出:桅托汽寥榔谢汪蒸习羞牺落驴设壁模枪蛇学詹打算碰缘序墒磁碎恰备歼卷数模插值与拟合建模数模插值与拟合建模3、n次拉格朗日插值假设取区间 上的个结点,并且已知函数在这此点的函数值 现在求一个次数不超过的多项式,使得满足条件 这种插值方法称为次多项式插值(或称代数插值), 利用拉格朗日插值插值方法可得屿掏够蹭观启艰分郎直支圆求筹贬沂敏焰甘仔绪感央马型洋坛秧友用返擞数模插值与拟合建模数模插值与拟合建模上述多项式称为 n次拉格朗日(Lagrange)插值多项式, 函数称为拉格朗日插值基函数。当n=1,2时,n次拉格朗日(Lagrange)插值多项式即为线性插值多项式和抛物插值多项式。维咳账军氯兢哑倦篮罢妖徒薄厌炮劫灌豌喀用打阑鸯窒丢主腑碎开盔揉琉数模插值与拟合建模数模插值与拟合建模比分段线性插值更光滑。比分段线性插值更光滑。xyxi-1 xiab 在数学上,光滑程度的定量描述是:函数(曲线)的k阶导数存在且连续,则称该曲线具有k阶光滑性。 光滑性的阶次越高,则越光滑。是否存在较低次的分段多项式达到较高阶光滑性的方法?三次样条插值就是一个很好的例子。三次样条插值三次样条插值殖悟雄戏抢画脉肘缀徐穿东抹乙冠丸筛辩秀没鸦吞粟媒童幼汀丑鞭炬喂包数模插值与拟合建模数模插值与拟合建模 三次样条插值g g( (x x) )为被插值函数为被插值函数。且亩业壹杏逐姐刘窃惜贪摆蛋贪炬淖洪爷春姥毁纬惫趴顾档满荷聂炽你炸数模插值与拟合建模数模插值与拟合建模例1 已知函数发f(x)的函数表如下: 求其拉格朗日插值多项式,并求的近似值。 解 由于给出了4个插值结点,所以可做出次数不超过3的拉格朗日插值多项式。宠斜兽懒哭笼剖露甭攀汕开作技所紊磷阀办严腾耪算根僧痈叠粪俱粪将仕数模插值与拟合建模数模插值与拟合建模 将上列4式代入n=3 的拉格朗日插值公式,可得所要求的插值多项式为将x=2.5代入可得f(2.5)的近似值为1.8496。 拉格朗日插值法适合节点较少的情况,当节点较多的大范围高次插值的逼近效果往往并不理想且当插值结点增加时,计算越来越繁。为了提高精度和减少计算,还有牛顿插值法下、三次样条插值等,具体可参阅有关书籍。英琵蛊狗膜亭语阑闻视残皇垦私券敦炸枢抖朔赞瞳喊杏货赠颅磕酞儒眺让数模插值与拟合建模数模插值与拟合建模用用MATLABMATLAB作插值计算作插值计算一维插值函数:一维插值函数:yi=interp1(x,y,xi,method)插值方法插值方法被插值点被插值点插值节点插值节点xixi处的插处的插值结果值结果nearest :最邻近插:最邻近插值值linear : 线性插线性插值;值;spline : 三次样条三次样条插值;插值;cubic : 立方插值。立方插值。缺省时:缺省时: 分段线性插值。分段线性插值。 注意:所有的插值方法都要求注意:所有的插值方法都要求x x是单调的,并且是单调的,并且xi不不能够超过能够超过x的范围。的范围。芭亲押暇岛汐款启膳挣羌淳纳纱蜂爸梳忿塌铭曙吵懂贬疾搏悉缅还睬勺登数模插值与拟合建模数模插值与拟合建模 例:在例:在1-121-12的的1111小时内,每隔小时内,每隔1 1小时测量一次温小时测量一次温度,测得的温度依次为:度,测得的温度依次为:5 5,8 8,9 9,1515,2525,2929,3131,3030,2222,2525,2727,2424。试估计每隔。试估计每隔1/101/10小时的温小时的温度值。度值。To MATLAB(temp)hours=1:12;temps=5 8 9 15 25 29 31 30 22 25 27 24;h=1:0.1:12;t=interp1(hours,temps,h,spline); (直接输出数据将是很多的)plot(hours,temps,+,h,t,hours,temps,r:) %作图xlabel(Hour),ylabel(Degrees Celsius)旱零慎糕渣硅铬赌葵誉术陷杆救莹涧提怔汤逼茁胳襄排脆斑谁蚊漓贸齐项数模插值与拟合建模数模插值与拟合建模例2 在用外接电源给电容器充电时,电容器两端的电压V将会随着充电时间t发生变化,已知在某一次实验时,通过测量得到下列观测值,分别用拉格朗日插值法、分段线性插值法、三次样条插值法画出V随着时间t变化的曲线图,分别计算当时间t=7s时,三种插值法各自算得电容器两端电压的近似值。 解 由于MATLAB没有提供现成的拉格朗日插值命令,我们可以编写一个函数lglrcz.m来完成,其他两种插值法可用现成的命令。 用MATLAB软件进行三种插值计算的程序为szczqx.m。耶畴舵从巳绕媳返贪颁苟奠嘶咋塞毗泵公病驹夏工凝仍耘霸怎弟盎呆夕枣数模插值与拟合建模数模插值与拟合建模程序程序lglrcz.m:function y=lglrcz(x0,y0,x)n=length(x0);m=length(x) ;for i=1:m z=x(i) ; s=0.0; for k=1:n p=1.0; for j=1:n if j=k p=p*(z-x0(j)/(x0(k)-x0(j) ; end end s=p*y0(k)+s; end y(i)=s; end盂厩乍点咸镇专汇饲刀正抄冠酬酝武卵鄂瘸锐菇褪止束啄概葬霄鸥犊致锌数模插值与拟合建模数模插值与拟合建模程序为azczf.mt=1,2,3,4,6.5,9,12 ;v=6.2,7.3,8.2,9.0,9.6,10.1,10.4 ;t0=0.2:0.1:12.5;lglr=lglrcz(t,v,t0) ;laglr=lglrcz(t,v,7) ;fdxx=interp1(t,v,t0) ;fendxx=interp1(t,v,7) ;scyt=interp1(t,v,t0,spline) ;sancyt=interp1(t,v,7,spline)plot(t,v,*,t0,lglr,r,t0,fdxx,g,t0,scyt,b)gtext(lglr)gtext(fdxx)gtext(scyt)潭捞张澄霞踪馆饵直闲好祥谭久奔郁蒙湾页鬃间芹摊属渤倦平崩淋外颁滦数模插值与拟合建模数模插值与拟合建模执行结果是laglr=9.52988980716254fendxx=9.70000000000000sancyt=9.67118039327444图形如图1所示。图中曲线lglr表示拉格朗日插值曲线,scyt表示三次样条插值曲线,fdxx表示分段线性插值曲线。廓淀允磋繁氛媳舱峭伙诈汲科嫉两秦憨纲榜踪操扰次乒撇丛淋凭嚣列吊剪数模插值与拟合建模数模插值与拟合建模 案例: 水流量的估计 美国某州的用水管理机构要求各社区提供以每小时多少加仑计的用水量以及每天所用的总水量。许多社区没有测量流入或流出水塔水量的装置,只能代之以每小时测量水塔中的水位,其误差不超过5%。需要注意的是,当水塔中的水位下降到最低水位L时,水泵就自动向水塔输水直到最高水位H,此期间不能测量水泵的供水量,因此,当水泵正在输水时不容易建立水塔中水位和用水量之间的关系。水泵每天输水一次或两次,每次约2小时。2.1 问题问题砂惭执帅韵盎塔淹渣嫉策恐兆捧疡巡婆钝盛刘柞统赐噬闸嘿米妄衔桥碎功数模插值与拟合建模数模插值与拟合建模 试估计任何时刻(包括水泵正在输水时间)从水塔流出的水流量f(t),并估计一天的总用水量。已知该水塔是一个高为40ft(英尺),直径为57ft(英尺)的正圆柱,表5-1给出了某个小镇一天水塔水位的真实数据,水位降至约27.00ft水泵开始工作,水位升到35.50ft停止工作。(注:1ft(英尺)=0.3048m(米)曙探讯婿牌腑圆滤元猪嵌塔砂巡昆沟提暮蚊卿该波聚操碑米腥檬典枢寇孟数模插值与拟合建模数模插值与拟合建模表1 某小镇某天水塔水位时间/s水位/0.01ft时间/s水位/0.01ft03175466363350331631104995332606635305453936316710619299457254308713937294760574301217921289264554292721240285068535284225223279571854276728543275275021269732284269779254水泵开动35932水泵开动82649水泵开动39332水泵开动859683475394353550899533397433183445932703340服蓝什擞姆鹊汾散扯痘妻拷辅单眺甲诱悦葛诊蛮藏泄阂齿瓢麓找谦必曹沿数模插值与拟合建模数模插值与拟合建模2.2 问题分析 本实验所指流量可视为单位时间内流出水的体积。由于水塔是正圆柱形,横截面积是常数,所以在水泵不工作时段,流量很容易根据水位相对时间的变化算出。问题的难点在于如何估计水泵供水时段的流量。 水泵供水时段的流量只能靠供水时段前后的流量经插值或拟合得到。作为用于插值或拟合的原始数据,我们希望水泵不工作时段的流量越准确越好。这此流量大体上可由两种方法计算,一是直接对表12-1中的水量用数值微分算出各时段的流量,用它们拟合其它时刻或连续时间的流量;二是先用表中数据拟合水位一时间函数,求导数即可得到连续时间的流量。寓桔坦泄季眼琼鸣匈枝蒋脆扰惟欣项次孰暂扬丫爷拷贞嫂咸书硅脏捉缅聋数模插值与拟合建模数模插值与拟合建模 有了任何时刻的流量,就不难计算一天的总用水量。其实,水泵不工作时段的用水量可以由测量记录直接得到,由表1中下降水位乘以水搭的截面积就是这一时段的用水量。这个数值可以用来检验数据插值或拟合的结果。 在具体给出本问题的解答之前,先介绍一个简单的数据插值方法。拧莫滇氨苇工机痪笼洛凭读滚痈裳将阴饶橡声操擞糯满酷有恒慷野业祥鸥数模插值与拟合建模数模插值与拟合建模 2.2 问题求解问题求解 为了表示方便,我们将2.1节问题中所给表1中的数据全部化为国际标准单位(表2),时间用小时(h),高度用米(m):表12-2 一天内水塔水位记录琴坚痔配眠卫馒臭靴晒伐钝孽楔劳帽诲行夫极善茶曳疡延湿功逃玲伐商弧数模插值与拟合建模数模插值与拟合建模时间/h水位/m时间/h水位/m09.6812.9510.210.929.4513.889.941.849.3114.989.652.959.1315.909.413.878.9816.839.184.988.8117.938.925.908.6919.048.667.008.5219.968.437.938.3920.848.228.978.2222.02水泵开动9.98水泵开动22.96水泵开动10.93水泵开动23.8810.5910.9510.8224.9910.3512.0310.5025.9110.18蹲叉簇厅陀汝啄魏颤贵信盏焙蚕烁虏触羌藩凸砚俱流扭挣总骨戈暑甜牡幌数模插值与拟合建模数模插值与拟合建模1模型假设(1)流量只取决于水位差,与水位本身无关,故由物理学中Torriceli定律:小孔流出的液体的流速正比于水面高度的平方根。题目给出水塔的最低和最高水位分别是8.1648m和10.7352m(设出口的水位为零),因为sqrt,约为1,所以可忽略水位对流速的影响。(2)将流量看作是时间的连续函数,为计算简单,不妨将流量定义成单位时间流出水的高度,即水位对时间变化率的绝对值(水位是下降的),水塔截面积为(m2),得到结果后乘以s即可。 彩所刑锄裹搏钡汐停脐红轴秧擅眶挖莉绳关固肖粮鲸褪辟聪尚构摸待唁坡数模插值与拟合建模数模插值与拟合建模2流量估计方法 首先依照表2所给数据,用MATLAB作出时间水位散点图(图2)。股瘫脐噎溪值锯借吵缄胃嘱膳母酶色篓傍菊夜妄嗽泞雨柿攒侩渠蚂票痕稍数模插值与拟合建模数模插值与拟合建模下面来计算水箱流量与时间的关系。 根据图1.,一种简单的处理方法为,将表2中的数据分为三段,然后对每一段的数据做如下处理: 设某段数据,相邻数据中点的平均流速用下面的公式(流速=(右端点的水位右端点的水位)/区间长度):每段数据首尾点的流速用下面的公式计算:用以上公式求得时间与流速之间的数据如表3。埋渭似垦姬标湃沮腻钳健锑茫轮扳撰蒋翅贺澈峙伎挽隶六视蔽柑胆修疹能数模插值与拟合建模数模插值与拟合建模时间/h流速/cmh-1时间/h流速/ cmh-1029.8912.4931.520.4621.7413.4229.031.3818.4814.4326.362.39516.2215.4426.093.4116.3016.3724.734.42515.3217.3823.645.4413.0418.4923.426.4515.4519.5025.007.46513.9820.4023.868.4516.3520.8422.178.9719.2922.02水泵开动9.98水泵开动22.96水泵开动10.93水泵开动23.8827.0910.9533.5024.4321.6211.4929.6325.4518.4825.9113.30厨疗结谨删幅伺这乔掸八绸折撇鲜江俞鬼茎惕氰凿缓捂氮秤耸溶屹裸蛋党数模插值与拟合建模数模插值与拟合建模由表3作出时间流速散点图如图3。1)插值法 由表12-3,对水泵不工作时段1,2采取插值方法,可以得到任意时刻的流速,从而可以知道任意时刻的流量。 爪病但揭四潞怕七鸯贬倦潦弛骤恰壬摄投搁牵卧丫掷承彪铱凳巡融找敦锗数模插值与拟合建模数模插值与拟合建模 我们分别采取拉格朗日插值法,分段线性插值法及三次样条插值法;对于水泵工作时段1应用前后时期的流速进行插值,由于最后一段水泵不工作时段数据太少,我们将它与水泵工作时段2合并一同进行插值处理(该段简称混合时段)。 我们总共需要对四段数据(第1,2未供水时段,第1供水时段,混合时段)进行插值处理,下面以第1未供水时段数据为例分别用三种方法算出流量函数和用水量(用水高度)。 下面是用MATLAB实现该过程的程序。 t=0,0.46,1.38,2.395,3.41,4.425,12.44,6.45,7.465,8.45,8.97;v=29.89,21.74,18.48,16.22,16.30,15.32,13.04,15.45,13.98,16.35,19.29; t0=0:0.1:8.97;庭娠壤篓浮皂宅面潘天到疾釉蓉学冶缺器烁逾诫船蘑瓜挡走椰潘退支万弓数模插值与拟合建模数模插值与拟合建模lglr=lglrcz(t,v,t0); /*注:注:lglrcz为一函数,程序同为一函数,程序同lglrcz.m*/lglrjf=0.1*trapz(lglr)fdxx=interpl(t,v,t0);fdxxjf=0.1*trapz(fdxx)scyt=interpl(t,v,t0,spline);sancytjf=0.1*trapz(scyt)plot(t,v,*,t0,lglr,r,t0,fdxx,g,t0,scyt,b)gtext(lglr)gtext(fdxx)gtext(scyt)运行结果lglrjf=145.6231 ; fdxxjf=147.1430; sancytjf=1412.6870电烽普被牵寐繁黍极罗脖枷涩贩混痔琵族刑肇典碉杀褐烯污镭阐菱瞪眷族数模插值与拟合建模数模插值与拟合建模 图4是对第1未供水段数据用三种不同方法得到的插值函数图, 图中曲线lglr、fdxx和scyt分别表示用拉格朗日插值法,分段线性插值法及三次样条插值法得到的曲线。 并谐肤憋厄穆碧彝亿链崩阐裕浆叫咐吐诬晶况缠掠炽札堰氰鹃玩竹化砌倪数模插值与拟合建模数模插值与拟合建模 由表2知,第1未供水时段的总用水高度为146(=968822),可见上述三种插值方法计算的结果与实际值(146)相比都比较接近。考虑到三次样条插值方法具有更加良好的性质,建议采取该方法。 其他三段的处理方法与第1未供水时段的处理方法类似,这里不再详细叙述,只给出数值结果和函数图像(图5图7),图中曲线标记同图4。 时柔说搓褂东已哟戳贿运蛀嗓诵系疆离吁扯卉旗娘熔沂支钡娠统皋厕刨注数模插值与拟合建模数模插值与拟合建模图5 第一供水段时间流速示意图发栓升呆厕船窄健斗配翻呢贬耸盾雏行少贞旋债洱疼酣鸡媒埠薛莫柄坚蜕数模插值与拟合建模数模插值与拟合建模图6 第2未供水段时间流速示意图漂际苗财猎韦仔胰临氮惦杂首仇婉斯冷乐碱钦癌倚渺滁冠拟袍婚宏析傻首数模插值与拟合建模数模插值与拟合建模图7 混合时段时间流速示意图倚裙醇促白肠云彬默拳烬屉凛家侧噪粱升奉淫明它哦疡王酪纫贵享刑重屏数模插值与拟合建模数模插值与拟合建模图8是用分段线性及三次样条插值方法得到的整个过程的时间流速函数示意图。式奢桅酸哼扇兼旱咸袭耗扶遍访扒嘱纠嫉谴脆镐基宇痞刨恃掀不靛驱揖损数模插值与拟合建模数模插值与拟合建模表4 各时段及一天的总用水量(用水高度)第1未供水段第2未供水段第3供水段混合时段全天拉格朗日插值法145.6231258.866454.068992.1337550.6921分段线性插值法147.1430258.969749.605176.4688532.1866三次样条插值法145.6870258.654753.333481.7699539.4450隋秉隶蓉精赵捶暗翻衅退贷海瞅痊婿鄙函腺刃拽多乱肤棠襄没捶醛糖昼椎数模插值与拟合建模数模插值与拟合建模 表5是对一天中任取的4个时刻分别用3种方法得到的水塔水流量近似值。时间6.8810.8815.8822.8815.9826671234851433.7426009085346325.5662241818047734.7099621055169414.8272413793103432.9976262626262725.4465591397849525.471578947368415.0527858196582033.7089553595325925.5490892055742329.41733175863551注:拉格朗日插值法分段线性插值法三次样条插值法迹泥醉临木肋簧面殉抖建黎舰裴拥品厨舅把燥詹副疑詹屈歧晴拥孺近界探数模插值与拟合建模数模插值与拟合建模2)拟合法(1)拟合水位时间函数 从表12-2中的测量记录看,一天有两次供水时段和三次未供水时段,分别对第1,2未供水时段的测量数据直接作多项式拟合,可得到水位函数(注意,根据多项式拟合的特点,此处拟合多项式的次数不宜过高,一般以36次为宜)。对第3未供水时段来说,数据过少不能得到很好的拟合。 设t,h分别为已输入的时刻和水位测量记录(由表12.2提供,水泵启动的4个时刻不输入),这样第1未供水时段各时刻的水位可由如下MATLAB程序完成:伪颇菠炭豢化曳吁陈出伸事悲押儿某脉泪抑凑悍鹿络矫阉狱熟墅诺锦肥堵数模插值与拟合建模数模插值与拟合建模t=0,0.92,1.84,2.95,3.87,4.98,5.90,7.00,7.93,8.97,10.95,12.03,12.95,13.88,14.98,15.90,16.83,17.93,19.04,19.96,20.84,23.8824.99,25.66h=9.68,9.48,9.31,9.13,8.98,8.81,8.69,8.52,8.39,8.22,10.82,10.50,10.21,9.94,9.65,9.41,9.18,8.92,8.66,8.43,8.22,10.59,10.35,10.18;c1=polyfit(t(1:10),h(1:10),3);tp1=0:0.1:8.9;x1=polyval(c1,tp1);plot(tp1,x1)歇塌汛毙褂势脚踊型铃庇胚菏遁傅卷倡谅财跑琅瞳豆森姬冲吧蓟脾伺迸虎数模插值与拟合建模数模插值与拟合建模 图12.9给出的是第1未供水时段的时间水位拟合函数图形。佛级衷盖噪歼先摹校集窜线携膝税牵虫战掌烽裔卸摧铆拟疲箔釉厕离伟惕数模插值与拟合建模数模插值与拟合建模变量x1中存放了以0.1为步长算出的各个时刻的水位高度。同样地,第2未供水时段时间水位图可由如下MATLAB程序完成,读者可自己上机运行查看。c2=polyfit(t(11:21),h(11:21),3);tp2=10.9:0.1:20.9;x2=-polyval(c2,tp2);plot(tp2,x2)(2)确定流量时间函数对于第1,2未供水时段的流量可直接对水位函数求导,程序如下:坊痞么睬言际姓暖兽拧侵蛀雅杭酌扳芝别呈山莎费阉拖垂旦茹盾假釜骤了数模插值与拟合建模数模插值与拟合建模c1=polyfit(t(1:10),h(1:10),3);c2=polyfit(t(11:21),h(11:21),3);a1=polyder(c1);a2=polyder(c2);tp1=0:0.01:8.97;tp2=10.95:0.01:20.84;x13=-polyval(a1,tp1);x113=-polyval(a1,0:0.01:8.97);wgsysl1=100*trapz(tp1,x113); */计算第计算第1未供水时段的总用水量未供水时段的总用水量/*x14=-polyval(a1,7.93,8.97); */为下面的程序准备数据为下面的程序准备数据/*x23=-polyval(a2,tp2);x114=-polyval(a2,10.95:0.01:20.84)wgsysl2=100*trapz(tp2,x114); */计算第计算第2未供水时段的总用水量未供水时段的总用水量/*x24=-polyval(a2,10.95,12.03); */为下面的程序准备数据为下面的程序准备数据/*x25=-polyval(a2,19.96,20.84); */为下面的程序准备数据为下面的程序准备数据/*subplot(1,2,1)plot(tp1,x13*100) */与图与图12.10单位保持一致单位保持一致/*subplot(1,2,2)plot(tp2,x23*100) */与图与图12.10单位保持一致单位保持一致/*内玛赔扯案旧克灯疏蜂壶彻移盼乖襟弯壮柞智孵趁芥跪马鲁卿坟诺原顿资数模插值与拟合建模数模插值与拟合建模 程序运行得到第1,2未供水时段的时间流量图如图10,可以看到与图8中用插值给出的曲线比较吻合。韵踢馒棱虚怕雁原哆叭朝虎钠髓鳖关咱吗敝酪跨快佛晤奸中谱剧丰郸罐牲数模插值与拟合建模数模插值与拟合建模 如果用5次多项式拟合则得图11的图形,显然较三次拟合的效果好。霹恋功池合傲挝燕绅禄义翱轰柿缆绘辞桓坑欠四酣疲奏彝榔访挫袁盅犁鄂数模插值与拟合建模数模插值与拟合建模 而第1供水时段的流量则用前后时期的流量进行拟合得到。为使流量函数在t=9和t=11连续,我们只取4个点,用三次多项式拟合得到第1供水时段的时间流量图形如图12,可以看到与图8中的相应部分比较吻合。图12.12图12.8富沽缸猾旱韧蛮味往铭阵佩煌蓟僻养嘎液陷没方迭无烬芥咸捍掷托叉骸挪数模插值与拟合建模数模插值与拟合建模dygsdsy=7.93,8.97,10.95,12.03;dygsdls=x14,x24;nhjg=polyfit(dygsdsj,dygsdls,3);nhsj=7.93:0.1:12.03;nhlsjg=polyval(nhjg,nhsj);gssj1=8.97:0.01:10.95;gs1=polyval(nhjg,8.97:0.01:10.95);gsysl1=100*trapz(gssj1,gs1); */该语句计算第1供水时段的总用水量/*plot(nhsj,100*nhlsjg) 程序如下:苦韩诚俩脸诬椭周独诊幻省酪呕氰辈晰签看择尖哀量前湃趋斥樱案淘织尼数模插值与拟合建模数模插值与拟合建模 在第2供水时段之前取t=19.96,20.84两点的流量,用第3未供水时段的3个记录做差分得到两个流量数据21.62,18.48,然后用这4个数据做三次多项式拟合得到第2供水时段与第3未供水时段的时间流量图如图13,可以看到与图8中的相应部分也比较吻合。图12.13,图12.8敦译最郭璃咆截屁漳桶藩川舱钞妹赢房玉码多份谩督巳塑茸览魔藐褪烯力数模插值与拟合建模数模插值与拟合建模程序如下:t3=19.96,20.84,t(22),t(23);ls3=x25*100,21.62,18.48;nhhddxsxs=polyfit(t3,ls3,3);tp3=19.96:0.01:25.91;xx3=polyval(nhhddxsxs,tp3);gssj2=20.84:0.01:24;gs2=polyval(nhhddxsxs,20.84:0.01:24);gsysl2=trapz(gssj2,gs2); */该语句计算第2供水时段的总用水量/*plot(tp3,xx3)杜竣算犬甫仔泉早舆埋慰万蓄距插萤干谚赃烃疤久烬履引片勺捡视夫靳澄数模插值与拟合建模数模插值与拟合建模(3)一天总用水量的估计 分别对供水的两个时段和不供水的两个时段积分(流量对时间)并求和得到一天的总用水量约为526.8935(此数据是总用水高度,单位为cm)。表12-6列出各段用水量,与插值法算得的表12-4相比,二者较为吻合。表12-6时段第1未供水段第2未供水段第1供水段第2供水段全天用水用水高度145.67260.6646.6073.9635526.8935遏讲函训仗呀置娘峻效堕论迭疵吗狮倔杆屎淬盗繁威蛹懊美耽寂零布参惟数模插值与拟合建模数模插值与拟合建模(4)流量及总用水量的检验 计算出各时刻的流量可用水位记录的数值微分来检验,各时段的用水高度可以用实际记录的水位下降高度来检验。 例如,算得第1未供水段的用水量高度是145.67,而实际记录的水位下降高度为968822=146cm,两者是吻合的; 算得第2未供水段的用水量高度是260.66cm,而实际记录的水位下降高度为1082822=260cm,两者也是吻合的。 戌乍鼎帆营枕腔迎踌姜究致祈苞胳蔬签傀差蝶放立承邪养父缔屯现牧狈莹数模插值与拟合建模数模插值与拟合建模 从算法设计和分析可知,计算结果与各时段所用的拟合多项式的次数有关。表12-7给出的是对第1,2未供水时段分别用五、六多项式拟合后得到的用水量结果。表12-7时段第1未供水段第2未供水段第1供水段第2供水段全天用水用水高度 146.5150257.760546.131776.3076526.71483)结果分析由表12-4可以看出,使用三次样条插值法得到的结果260cm相差不大,说明插值结果与原始数据比较吻合。 与表12-2中记录的下降高度 146cm,梁赶泽补誓喳御互榜椿乔霹觉赶茧赠妹旗唤胡饮氰完邱惶讲蹿盲秃叠酥阵数模插值与拟合建模数模插值与拟合建模按三次样条插值法估计出全天的用水量约为 由表12-7可以得全天的用水量约为 2.5 内容小结内容小结 本实验主要进行水塔水流量的估算。第一种估算方法为插值方法,我们用了三种不同的插值法进行估计,在求解的过程中,可以熟悉数据插值的理论和方法;第二种估算方法为数据拟合法,用多项式进行拟合,得到水塔水流量的估计。慢卵就毋前儡验钢剂否骆畜右并豆杭扳荤姬妙僳曲否更仓死开冷敦娠梨瓶数模插值与拟合建模数模插值与拟合建模2二维插值命令二维插值命令interp2的具体使用格式的具体使用格式zz=interp2(x,y,z,xx,yy,method) 该指令的意思是根据数据向量x,y,z按method指定的方法来做插值,然后将xx,yy处插值函数的插值结点向量,如果xx,yy在插值范围之内,则返回值在zz中,否则返回值为空NaN。method是插值方法可选项,具体要求同一维插值的情况。 该命令还有以下几种省略格式:zz=interp2(z,xx,yy)zz=interp2(x,y,z,xx,yy)zz=interp2(z,ntimes)犀杜仅呢窖竖融肖六饮娠寻哪袍灼到呈稳暴忍都剁笔确绢像又鳃箕欲旷撒数模插值与拟合建模数模插值与拟合建模3三维插值命令三维插值命令interp3的具体使用格式的具体使用格式vi=interp3(x,y,z,v,xi,yi,zi,method) 它的具体含义跟前面的一、二维插值是相似的,在此不作解释,读者可在MATLAB工作空间中用help interp3命令获得。4样条插值命令样条插值命令spline的具体使用格式的具体使用格式yy=spline(x,y,xx)它的意思等同于命令yy=interp1(x,y,xx,cubic)久颖夷桌角辛施处位罕杉姥须单篙彻斯酷剖魁讶奈位徊禹藩缮酣置睛郭碘数模插值与拟合建模数模插值与拟合建模xy机翼下轮廓线例例 已知飞机下轮廓线上数据如下,求已知飞机下轮廓线上数据如下,求x每改变每改变0.1时的时的y值。值。To MATLAB(plane)返回返回桨喊峨鞠柠筋扇骡甭膘激坏帐体维度肚致爸估忽兢晒瓣痒蛙练醇鹰逛耻推数模插值与拟合建模数模插值与拟合建模二维插值的定义二维插值的定义 xyO O第一种(网格节点):第一种(网格节点):哮识芦怂碘牌烁青柳语疽左会曼窖很尔广情戒辜逆虽溶抡划亡肮斟臻摄蹿数模插值与拟合建模数模插值与拟合建模 已知已知 m n个节点个节点 其中其中互不相同,不妨设互不相同,不妨设 构造一个二元函数构造一个二元函数通过全部已知节点通过全部已知节点,即即再用再用计算插值,即计算插值,即刘逛最尺前迁胺缸诧年公庸正悟阎骋鄂茧悯韶泌抛践广穆遂噶靠褒微创眩数模插值与拟合建模数模插值与拟合建模第二种(散乱节点):第二种(散乱节点): yx0 0肠原丈嘲拂慧凭铡桅疚液筋凝闲弟潞涎霉矮熄阂然辩吴辫害崖俄通腮少敝数模插值与拟合建模数模插值与拟合建模已知已知n个节点个节点其中其中互不相同,互不相同, 构造一个二元函数构造一个二元函数通过全部已知节点通过全部已知节点,即即再用再用计算插值,即计算插值,即返回返回粒绚燕宗换咐圣翔供旅厩郎距霹蔑吝盲癣凿颐馅现殿掂拣淘掂袱热睡单凳数模插值与拟合建模数模插值与拟合建模 注意:注意:最邻近插值一般不连续。具有连续性的最简单的插值是分片线性插值。最邻近插值最邻近插值x y(x1, y1)(x1, y2)(x2, y1)(x2, y2)O O 二维或高维情形的最邻近插值,与被插值点最邻近的节点的函数值即为所求。返回返回颜衍歌倚供晴神灰篷赊歹捻鸯牢变瑰吕套紫掠壮讥乘梨弹杉老晋保锨侥醚数模插值与拟合建模数模插值与拟合建模 将四个插值点(矩形的四个顶点)处的函数值依次简记为: 分片线性插值分片线性插值xy (xi, yj)(xi, yj+1)(xi+1, yj)(xi+1, yj+1)O Of (xi, yj)=f1,f (xi+1, yj)=f2,f (xi+1, yj+1)=f3,f (xi, yj+1)=f4荫换典拧开述峭团苦倔躇键伴批挺焚挽范冬惹熔跃焉菊黄斑辟厉啪宦坟豪数模插值与拟合建模数模插值与拟合建模插值函数为:第二片(上三角形区域):(x, y)满足插值函数为:注意注意:(x, y)当然应该是在插值节点所形成的矩形区域内。显然,分片线性插值函数是连续的;分两片的函数表达式如下:第一片(下三角形区域): (x, y)满足返回返回应堕恍购铲和薄底例士币黔炕损迅耿街篱嘿浑惰权晋右垛殖争济盲俊心理数模插值与拟合建模数模插值与拟合建模 双线性插值是一片一片的空间二次曲面构成。双线性插值函数的形式如下:其中有四个待定系数,利用该函数在矩形的四个顶点(插值节点)的函数值,得到四个代数方程,正好确定四个系数。双线性插值双线性插值x y(x1, y1)(x1, y2)(x2, y1)(x2, y2)O O返回返回谈刺敲届笋逗韵猩堪睡护称亥坏富诅诫鲸亚侦警抹希笼国容毯泥蜂吩搏侨数模插值与拟合建模数模插值与拟合建模 要求要求x0,y0x0,y0单调;单调;x x,y y可取为矩阵,或可取为矩阵,或x x取取行向量,行向量,y y取为列向量,取为列向量,x,yx,y的值分别不能超出的值分别不能超出x0,y0x0,y0的范围。的范围。z=interp2(x0,y0,z0,x,y,method)被插值点插值方法用用MATLAB作网格节点数据的插值作网格节点数据的插值插值节点被插值点的函数值nearest nearest 最邻近插值最邻近插值linear linear 双线性插值双线性插值cubic cubic 双三次插值双三次插值缺省时缺省时, , 双线性插值双线性插值衣窄村叁阁席毗确蔷坠寺肠烩荧钙透屁干尘倚节李妹挡代砧到脱后讶盐项数模插值与拟合建模数模插值与拟合建模例:测得平板表面例:测得平板表面3*53*5网格点处的温度分别为:网格点处的温度分别为: 82 81 80 82 84 82 81 80 82 84 79 63 61 65 81 79 63 61 65 81 84 84 82 85 86 84 84 82 85 86 试作出平板表面的温度分布曲面试作出平板表面的温度分布曲面z=f(x,y)z=f(x,y)的图形。的图形。输入以下命令:x=1:5;y=1:3;temps=82 81 80 82 84;79 63 61 65 81;84 84 82 85 86;mesh(x,y,temps)1.先在三维坐标画出原始数据,画出粗糙的温度分布曲图.2以平滑数据,在x、y方向上每隔0.2个单位的地方进行插值.涤撬喜痘镣乍展趋配肮聋垂解洞率笋沿所镶亏羞歼苦恰鉴耀醚坎揽穿柄小数模插值与拟合建模数模插值与拟合建模再输入以下命令:xi=1:0.2:5;yi=1:0.2:3;zi=interp2(x,y,temps,xi,yi,cubic);mesh(xi,yi,zi)画出插值后的温度分布曲面图. To MATLAB(wendu)熄沽擒雕缉玛伤舆疮釉浦揪感奶墙羽揖咏炼类希吓操劈潦最补恋迢胆脆海数模插值与拟合建模数模插值与拟合建模 通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较。To MATLAB (moutain)返回返回汾钥谱阁偷斡淆冠衷悲迹腺舆扔忱偏舞诽说礼釜殿孽龄室凑瑟瘫锌脉轴掀数模插值与拟合建模数模插值与拟合建模 插值函数插值函数griddata格式为格式为: cz =griddata(x,y,z,cx,cy,method)用用MATLABMATLAB作散点数据的插值计算作散点数据的插值计算 要求要求cxcx取行向量,取行向量,cycy取为列向量。取为列向量。被插值点插值方法插值节点被插值点的函数值nearest nearest 最邻近插值最邻近插值linear linear 双线性插值双线性插值cubic cubic 双三次插值双三次插值v4- Matlab提供的插值方法提供的插值方法缺省时缺省时, , 双线性插值双线性插值瘦息想早蛋沾狱滁隔抑涪逻玻擅蜗佑煎夫慈泽饶牢废火雇栓械份帆珠嫡综数模插值与拟合建模数模插值与拟合建模下面再给出一个二维插值应用的例子下面再给出一个二维插值应用的例子n x=1:5;n y=1:5;n t=100,100,100,100,100;105,120,122,125,122;n 110,130,155,157,130;115,133,157,160,140;n 113,132,149,154,128nt =n 100 100 100 100 100n 105 120 122 125 122n 110 130 155 157 130n 115 133 157 160 140n 113 132 149 154 128接是巳每院降西卧您杜咙晒准统晨昔豁兜若锰俭该长激褥苹翔郝云琅思棺数模插值与拟合建模数模插值与拟合建模n mesh(x,y,t)数据原图数据原图乃怔我咱骡舱瞎耳搬腔瓮骋旗级陋危邵衍沉花峪歇蒜寝顾尽铁啸救窥光德数模插值与拟合建模数模插值与拟合建模n xx=1:0.1:5;n yy=1:0.1:5;n tt=interp2(x,y,t,xx,yy,cubic);n mesh(xx,yy,tt)二维插值得到的示意图二维插值得到的示意图豫辕烙疫佬匡省羊罐注丸尖须亨掷也纤遁先贯倾却披柯怯讨汰莎投桔翰抬数模插值与拟合建模数模插值与拟合建模 例例 在某海域测得一些点在某海域测得一些点(x,y)(x,y)处的水深处的水深z z由下由下表给出,船的吃水深度为表给出,船的吃水深度为5 5英尺,在矩形区域(英尺,在矩形区域(7575,200200)* *(-50-50,150150)里的哪些地方船要避免进入。)里的哪些地方船要避免进入。慌盈系异筑逐三谜挽导徐酮朴恕炉庭胯鸽痊雹润错豪背汕崩菱淹赎裙酿眷数模插值与拟合建模数模插值与拟合建模To MATLAB hd1返回返回4.作出水深小于5的海域范围,即z=5的等高线.忽吗吴折潍束索训孟骏蹬肉藻殿碾瞄啪帕映励虑蔷镑湘张危陆梭昏榨骗贷数模插值与拟合建模数模插值与拟合建模实验作业实验作业 山区地貌:山区地貌:在某山区测得一些地点的高程如下表:在某山区测得一些地点的高程如下表:( (平平面区域面区域1200=x=4000,1200=y=3600)1200=x=4000,1200=y=3600),试作出该山区的,试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。地貌图和等高线图,并对几种插值方法进行比较。返回返回弱棵鞠浇彩卿芯漱张蝇碧级蛇铂耗纠稼爽纳臼蔡郑帖颤厨幢过寨潜豌链扁数模插值与拟合建模数模插值与拟合建模二二.拟合拟合主要内容主要内容2、掌握用数学软件求解拟合问题。、掌握用数学软件求解拟合问题。1、直观了解拟合基本内容。、直观了解拟合基本内容。1 1、拟合问题引例及基本理论。拟合问题引例及基本理论。4 4、实验作业。实验作业。2、用数学软件求解拟合问题。用数学软件求解拟合问题。3、应用实例应用实例彻莱稍眯笆仓幕泥签笨翰晨艘牧诉梆拦仗朋接纶俄悦删师蠢朵留丢莫杯忻数模插值与拟合建模数模插值与拟合建模拟拟 合合2.2.拟合的基本原理拟合的基本原理1. 拟合问题引例拟合问题引例链陡渐靛涡肄焙澜哟溯凄算靴皇痉木嘘裤概棕阅沁验阴痰诡掳戌潘良吴狙数模插值与拟合建模数模插值与拟合建模拟拟 合合 问问 题题 引引 例例 1 1温度温度t(0C) 20.5 32.7 51.0 73.0 95.7电阻电阻R( ) 765 826 873 942 1032已知热敏电阻数据:已知热敏电阻数据:求求60600C时的电阻时的电阻R。 设设 R=at+ba,b为待定系数为待定系数罢腋逾澄功贪尝谣菲彤搬臆棕堕轴业哀驶再啊存乔凛恃悄陈址木说还目脑数模插值与拟合建模数模插值与拟合建模拟拟 合合 问问 题题 引引 例例 2 2 t (h) 0.25 0.5 1 1.5 2 3 4 6 8c ( g/ml) 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01已知一室模型快速静脉注射下的血药浓度数据已知一室模型快速静脉注射下的血药浓度数据(t=0注射注射300mg)求血药浓度随时间的变化规律求血药浓度随时间的变化规律c(t).作半对数坐标系作半对数坐标系(semilogy)下的图形下的图形MATLAB(aa1)沸盯阶蒂垮昂乘防洲坟切洪屏氢兼渺弗跟棉丁瓜址阜父冰简跌锗古漫浊狠数模插值与拟合建模数模插值与拟合建模曲曲 线线 拟拟 合合 问问 题题 的的 提提 法法已知一组(二维)数据,即平面上已知一组(二维)数据,即平面上 n个点个点(xi,yi) i=1,n, 寻求一个函数(曲线)寻求一个函数(曲线)y=f(x), 使使 f(x) 在某种准则下与所有在某种准则下与所有数据点最为接近,即曲线拟合得最好。数据点最为接近,即曲线拟合得最好。 +xyy=f(x)(xi,yi)i i 为点为点(xi,yi) 与与曲线曲线 y=f(x) 的距的距离离沟饱狗医帽姜泞瓶盗誓鳞始秤拴副绊缚住繁办楚葵丘刀熏逸熙港歧轴盆唇数模插值与拟合建模数模插值与拟合建模拟合与插值的关系拟合与插值的关系 函数插值与曲线拟合都是要根据一组数据构造一个函数作函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同为近似,由于近似的要求不同,二者的数学方法上是完全不同的。的。 实例:实例:下面数据是某次实验所得,希望得到X和 f之间的关系?MATLAB(cn)问题:问题:给定一批数据点,需确定满足特定要求的曲线或曲面解决方案:解决方案:若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合数据拟合,又称曲线拟合或曲面拟合。若要求所求曲线(面)通过所给所有数据点,就是插值问题插值问题;狄拥霸碟今凰光谈刻酣寄笨茨率缚豪萤效著富遵荐辱狂便户茫族抡侈翅汀数模插值与拟合建模数模插值与拟合建模最临近插值、线性插值、样条插值与曲线拟合结果:最临近插值、线性插值、样条插值与曲线拟合结果:曲飘榆惶糊称伯搪字垦背疡触侨颜方毒嫁父智溜行兆汤宴氏坏制淬憋瘪赦数模插值与拟合建模数模插值与拟合建模曲线拟合问题最常用的解法曲线拟合问题最常用的解法线性最小二乘法的基本思路线性最小二乘法的基本思路第一步: :先选定一组函数先选定一组函数 r1(x), r2(x), rm(x), m0) k(0)模型假设模型假设1. 1. 机体看作一个房室,室内血药浓度均匀机体看作一个房室,室内血药浓度均匀一室模型一室模型模型建立模型建立 在此,在此,d=300mg,t及及c(t)在某些点处的值见前表,)在某些点处的值见前表,需经拟合求出参数需经拟合求出参数k、v哄暂唐晾梅剖颂印采屈淬广脐啸消闸清俏夯抹浑仲瞻僵铸绚涎吨贸橱瞧乓数模插值与拟合建模数模插值与拟合建模用线性最小二乘拟合用线性最小二乘拟合c(t)MATLAB(lihe1)计算结果:计算结果:d=300;t=0.25 0.5 1 1.5 2 3 4 6 8;c=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01;y=log(c);a=polyfit(t,y,1)k=-a(1)v=d/exp(a(2)程序:程序:用非线性最小用非线性最小二乘拟合二乘拟合c(t)荚尹忧完孕死蛙纹落踌吊抚脾爪坟敏股黄悸赣功醇杨序拎麦绘壳诫框泪强数模插值与拟合建模数模插值与拟合建模给药方案给药方案 设计设计cc2c10t 设每次注射剂量D, 间隔时间 血药浓度c(t) 应c1 c(t) c2 初次剂量D0 应加大给药方案记为:给药方案记为:2、1、计算结果:计算结果:给药方案:给药方案:c1=10,c2=25k=0.2347v=15.02办尘矫唱恼迁削圭番裳第切濒惭掷从秒海托纽敲炬犊汕妻思拨菲缸菏甲当数模插值与拟合建模数模插值与拟合建模故可制定给药方案:故可制定给药方案:即即: 首次注射首次注射375mg, 其余每次注射其余每次注射225mg, 注射的间隔时间为注射的间隔时间为4小时。小时。沥驱实搬侵臻吼戒恨志暑萌闰携供巍共辑誊卫绳涛慈德拐份阮内撇筷莉料数模插值与拟合建模数模插值与拟合建模估计水塔的流量估计水塔的流量2、解题思路解题思路3、算法设计与编程算法设计与编程1、问题问题轩脓糯棕盂蔬逮槐趟葬垣科殊怯过臻糯什莹肖圃牺恶谜哟产珠倾飘里伤亏数模插值与拟合建模数模插值与拟合建模 某居民区有一供居民用水的园柱形水塔,一般可以通过测量其水位来估计水的流量,但面临的困难是,当水塔水位下降到设定的最低水位时,水泵自动启动向水塔供水,到设定的最高水位时停止供水,这段时间无法测量水塔的水位和水泵的供水量通常水泵每天供水一两次,每次约两小时.水塔是一个高12.2米,直径17.4米的正园柱按照设计,水塔水位降至约8.2米时,水泵自动启动,水位升到约10.8米时水泵停止工作表1 是某一天的水位测量记录,试估计任何时刻(包括水泵正供水时)从水塔流出的水流量,及一天的总用水量缩戴吉惠沈疵灸轨涪胜札虚塞社数垃讹脊椭龟郧缉实颈于融狭奏沉宦略综数模插值与拟合建模数模插值与拟合建模漫费除厕向囱叔雌人谣娟碱沿放后寄吝赊帮出披养竿甭铬廷锁秽嗣氏嗅况数模插值与拟合建模数模插值与拟合建模流量估计的解题思路流量估计的解题思路拟合水位拟合水位时间函数时间函数确定流量确定流量时间函数时间函数估计一天总用水量估计一天总用水量奇场惩娟菌呐峙让蓬睹导讼菌宗顿瞅区课郡虹披舒刘碳谓铸模喂藏莎娩辱数模插值与拟合建模数模插值与拟合建模 拟合水位拟合水位时间函数时间函数 测量记录看,一天有两个供水时段(以下称第1供水时段和第2供水时段),和3个水泵不工作时段(以下称第1时段t=0到t=8.97,第2次时段t=10.95到t=20.84和第3时段t=23以后)对第1、2时段的测量数据直接分别作多项式拟合,得到水位函数为使拟合曲线比较光滑,多项式次数不要太高,一般在36由于第3时段只有3个测量记录,无法对这一时段的水位作出较好的拟合逸校艾窒魄寻声蔡贯玉色皆东漓廓红紧与斥惠教廓汾涩疟皂谚存还阴瘫程数模插值与拟合建模数模插值与拟合建模 2、确定流量确定流量时间函数时间函数 对于第1、2时段只需将水位函数求导数即可,对于两个供水时段的流量,则用供水时段前后(水泵不工作时段)的流量拟合得到,并且将拟合得到的第2供水时段流量外推,将第3时段流量包含在第2供水时段内钉墟被疽蓝牟朔驹眉憾肥重萎妙信寨菌寨萧哺信磊郭饱钥狼则汇捕瞩显蹋数模插值与拟合建模数模插值与拟合建模3、一天总用水量的估计一天总用水量的估计 总用水量等于两个水泵不工作时段和两个供水时段用水量之和,它们都可以由流量对时间的积分得到。幻墟淮呜福岭甭斤词障钟合史痴员赂四简唇吴祈敷料输赢狭却茬纯拨创衰数模插值与拟合建模数模插值与拟合建模算法设计与编程算法设计与编程1、拟合第拟合第1、2时段的水位,并导出流量时段的水位,并导出流量2、拟合供水时段的流量拟合供水时段的流量3、估计一天总用水量估计一天总用水量4、流量及总用水量的检验、流量及总用水量的检验票催蔽天硕寨侥脖泼赎粳赏街坞光坡淡脊俊饲窿逝货厘乎描捧怂袍教眺讫数模插值与拟合建模数模插值与拟合建模 1、拟合第拟合第1时段的水位,并导出流量时段的水位,并导出流量 设t,h为已输入的时刻和水位测量记录(水泵启动的4个时刻不输入),第第1时段时段各时刻的流量可如下得:1) c1=polyfit(t(1:10),),h(1:10),),3);); %用3次多项式拟合第1时段水位,c1输出3次多项式的系数2)a1=polyder(c1);); % a1输出多项式(系数为c1)导数的系数 3)tp1=0:0.1:9; x1=-polyval(a1,tp1); % x1输出多项式(系数为a1)在tp1点的函数值(取负后边为正值),即tp1时刻的流量 MATLAB(llgj1)4)流量函数为:流量函数为:手按搽险斯灸露飞叮爬疙蟹埋惕硕诵类豌映释带澈偶捉刘烩糠勿完偷常铀数模插值与拟合建模数模插值与拟合建模 2、拟合第拟合第2时段的水位,并导出流量时段的水位,并导出流量 设t,h为已输入的时刻和水位测量记录(水泵启动的4个时刻不输入),第第2时段时段各时刻的流量可如下得:1) c2=polyfit(t(10.9:21),h(10.9:21),3); %用3次多项式拟合第2时段水位,c2输出3次多项式的系数2) a2=polyder(c2); % a2输出多项式(系数为c2)导数的系数 3)tp2=10.9:0.1:21; x2=-polyval(a2,tp2); % x2输出多项式(系数为a2)在tp2点的函数值(取负后边为正值),即tp2时刻的流量MATLAB(llgj2)4)流量函数为:流量函数为:丘株梦泣睛够驮税移疥正幢贼知潦卡避蒜降轩娇搅跋闯匙洁霜呢完屹乃砒数模插值与拟合建模数模插值与拟合建模 3、拟合供水时段的流量拟合供水时段的流量 在第1供水时段(t=911)之前(即第1时段)和之后(即第2时段)各取几点,其流量已经得到,用它们拟合第1供水时段的流量为使流量函数在t=9和t=11连续,我们简单地只取4个点,拟合3次多项式(即曲线必过这4个点),实现如下: xx1=-polyval(a1,8 9); %取第1时段在t=8,9的流量 xx2=-polyval(a2,11 12); %取第2时段在t=11,12的流量 xx12=xx1 xx2; c12=polyfit(8 9 11 12,xx12,3); %拟合3次多项式 tp12=9:0.1:11; x12=polyval(c12,tp12); % x12输出第1供水时段 各时刻的流量MATLAB(llgj3)拟合的流量函数为:拟合的流量函数为:石躬引艳瞧临书肚祥榜充岿椽终酱栗衅笋骸姜吴臣树整忍戌吝样渭卒肮寄数模插值与拟合建模数模插值与拟合建模 在第2供水时段之前取t=20,20.8两点的流水量,在该时刻之后(第3时段)仅有3个水位记录,我们用差分得到流量,然后用这4个数值拟合第2供水时段的流量如下: dt3=diff(t(22:24)); %最后3个时刻的两两之差 dh3=diff(h(22:24)); %最后3个水位的两两之差 dht3=-dh3./dt3; %t(22)和t(23)的流量 t3=20 20.8 t(22) t(23); xx3=-polyval(a2,t3(1:2),dht3); %取t3各时刻的流量 c3=polyfit(t3,xx3,3); %拟合3次多项式 t3=20.8:0.1:24; x3=polyval(c3,tp3);% x3输出第2供水时段 (外推至t=24)各时刻的流量MATLAB(llgj4)拟合的流量函数为:拟合的流量函数为:衷泄辰蛾瘤雌醛怀二蒸苦颅奇雏白诚夸棘脆咏护家剖监瓣牵忌谆尺塘赋务数模插值与拟合建模数模插值与拟合建模 3、一天总用水量的估计一天总用水量的估计 第1、2时段和第1、2供水时段流量的积分之和,就是一天总用水量虽然诸时段的流量已表为多项式函数,积分可以解析地算出,这里仍用数值积分计算如下: y1=0.1*trapz(x1); %第1时段用水量(仍按高 度计),0.1为积分步长 y2=0.1*trapz(x2); %第2时段用水量 y12=0.1*trapz(x12); %第1供水时段用水量 y3=0.1*trapz(x3); %第2供水时段用水量 y=(y1+y2+y12+y3)*237.8*0.01; %一天总用水量( ) 计算结果:计算结果:y1=146.2, y2=266.8, y12=47.4, y3=77.3,y=1250.4MATLAB(llgjz)掩蚌伟澄摧锹绝片寥址抓符停彼仔倡凰他燎责双脏衍寨匙噪挂谊力舵弟淖数模插值与拟合建模数模插值与拟合建模 4、流量及总用水量的检验流量及总用水量的检验 计算出的各各时时刻刻的的流流量量可用水位记录的数值微分来检验用水量y1可用第1时段水位测量记录中下降高度968-822=146来检验,类似地,y2用1082-822=260检验供供水水时时段段流流量量的一种检检验验方方法法如下:供水时段的用水量加上水位上升值260是该时段泵入的水量,除以时段长度得到水泵的功率(单位时间泵入的水量),而两个供水时段水泵的功率应大致相等第1、2时段水泵的功率可计算如下: p1=(y12+260)/2; %第1供水时段水泵的功率 (水量仍以高度计) tp4=20.8:0.1:23; xp2=polyval(c3,tp4); % xp2输出第2供水时段 各时刻的流量 p2=(0.1*trapz(xp2)+260)/2.2; %第2供水时段水泵的功率 (水量仍以高度计)计算结果计算结果:p1=154.5 ,p2=140.1MATLAB (ll)磐馋冠刷墨朋迪椽大酒染溢泅琶拱苔抢得脾酝吁含坐渗乍筛猾侄瓤祭晨狭数模插值与拟合建模数模插值与拟合建模计算结果计算结果流量函数为:流量函数为:劳豁剧浓罪匿辩钨贺涟盘衔况畏苏恐带绦填遣耪浩确佛其蚕盂轩穗潦谆壳数模插值与拟合建模数模插值与拟合建模流量曲线见图流量曲线见图n=(3,4)n=(5,6)鸣全惫邮案牲放耶迢她悯讼搓婿凯范恶赃扫屑熊幂纂徒约通绕载邯赘笼濒数模插值与拟合建模数模插值与拟合建模练习练习1 用给定的多项式,如y=x3-6x2+5x-3,产生一组数据(xi,yi,i=1,2,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用xi和添加了随机干扰的yi作的3次多项式拟合,与原系数比较。 如果作2或4次多项式拟合,结果如何?财欣么能雌恶坤暮毙砖阔乳站酪吃扬秦秦鼻唁烯壮恭抖清郭柞鸣危腊旋圃数模插值与拟合建模数模插值与拟合建模 练习练习2、用电压V=10伏的电池给电容器充电,电容器上t时刻的电压为 ,其中V0是电容器的初始电压, 是充电常数。试由下面一组t,V数据确定V0, 。评猴流观嘶季等膨当章剪演摧小斑噪派甚欣相泌恒砂新糜佰渤灌蜜屉炊娶数模插值与拟合建模数模插值与拟合建模用非线性最小二乘拟合用非线性最小二乘拟合c(t)-用用lsqcurvefit2、主程序、主程序lihe2.m如下如下cleartdata=0.25 0.5 1 1.5 2 3 4 6 8;cdata=19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01; x0=10,0.5;x=lsqcurvefit(curvefun3,x0,tdata,cdata);f=curvefun3(x,tdata) xMATLAB(lihe2)1 1、用、用M-M-文件文件curvefun3.m定义函数定义函数function f=curvefun3(x,tdata)d=300f=(x(1)d)*exp(-x(2)*tdata) % x(1)=v; x(2)=k 狙香屋岔扛毅拳苞烟耐苫土伏啦三乒追将开丘么轨佳甭乳州坍鲸鲜撵贵非数模插值与拟合建模数模插值与拟合建模
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号