matlab最小二乘法拟合
数学建模与数学实验 拟 合 1 实验目的 实验内容 2. 掌握用数学软件求解拟合问题. 1. 直观了解拟合基本内容. 1. 拟合问题引例及基本原理. 4. 实验作业. 2. 用数学软件求解拟合问题. 3. 应用实例. 2 拟 合 2. 拟合的基本原理 1. 拟合问题引例 3 拟 合 问 题 引 例 1 温度t(ºC) 20.5 32.7 51.0 73.0 95.7 电阻R() 765 826 873 942 1032 已知热敏电阻数据 : 求60ºC时的电阻R. 设 R=at+b a,b为待定系数 4 拟 合 问 题 引 例 2 t (h) 0.25 0.5 1 1.5 2 3 4 6 8 c (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) 5 曲 线 拟 合 问 题 的 提 法 已知一组(二维)数据,即平面上 n个点(xi,yi) i=1,…,n, 寻求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所有 数据点最为接近,即曲线拟合得最好. + + + + + + + + + x y y=f(x) (xi,yi) i i 为点(xi,yi) 与曲线 y=f(x) 的距离 6 拟合与插值的关系 函数插值与曲线拟合都是要根据一组数据构造一个函数作 为近似,由于近似的要求不同,二者在数学方法上是完全不同 的. 实例:下面数据是某次实验所得,希望得到X和 f之间的关系? MATLAB(cn) 问题:给定一批数据点,需确定满足特定要求的曲线或曲面 解决方案: •若不要求曲线(面)通过所有数据点,而是要求它反映对象 整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合 . •若要求所求曲线(面)通过所给所有数据点,就是插值问题; 7 最临近插值、线性插值、样条插值与曲线拟合结果: 8 曲线拟合问题最常用的解法——线性最小二乘法的基本思路 第一步:先选定一组函数 r1(x), r2(x), …,rm(x), m0) 模型假设 1.机体看作一个房室,室内血药浓度均匀——一室模型 模型建立 在此,d=300mg,t及c(t)在某些点处的值见前表, 需经拟合求出参数k、v. 32 用线性最小二乘拟合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) 33 给药方案 设计 c c2 c1 Ot • 设每次注射剂量D, 间隔时间 • 血药浓度c(t) 应c1 c(t) c2 • 初次剂量D0 应加大 给药方案记为: 2. 1. 计算结果: 给药方案: c1=10,c2=25 k=0.2347 v=15.02 34 故可制定给药方案: 即: 首次注射375mg, 其余每次注射225mg, 注射的间隔时间为4h. 35 估计水塔的流量 2. 解题思路 3. 算法设计与编程 1. 问题 36 某居民区有一供居民用水的圆柱形水塔,一 般可以通过测量其水位来估计水的流量,但面临 的困难是,当水塔水位下降到设定的最低水位时 ,水泵自动启动向水塔供水,到设定的最高水位 时停止供水,这段时间无法测量水塔的水位和水 泵的供水量.通常水泵每天供水一两次,每次约 两小时. 水塔是一个高12.2m,直径17.4m的正圆柱.按照 设计,水塔水位降至约8.2m时,水泵自动启动, 水位升到约10.8m时水泵停止工作. 表1 是某一天的水位测量记录,试估计任何时刻 (包括水泵正供水时)从水塔流出的水流量,及 一天的总用水量. 37 38 流量估计的解题思路 拟合水位~时间函数 确定流量~时间函数 估计一天总用水量 39 拟合水位~时间函数 从测量记录看,一天有两个供水时段(以下称第1供 水时段和第2供水时段),和3个水泵不工作时段(以 下称第1时段t=0到t=8.97,第2次时段t=10.95到t=20.84 和第3时段t=23以后).对第1、2时段的测量数据直接 分别作多项式拟合,得到水位函数.为使拟合曲线比 较光滑,多项式次数不要太高,一般在3~6.由于第3 时段只有3个测量记录,无法对这一时段的水位作出较 好的拟合. 40 确定流量~时间函数 对于第1、2时段只需将水位函数求导数即可, 对于两个供水时段的流量,则用供水时段前后( 水泵不工作时段)的流量拟合得到,并且将拟合 得到的第2供水时段流量外推,将第3时段流量包 含在第2供水时段内. 41 一天总用水量的估计 总用水量等于两个水泵不工作时段和 两个供水时段用水量之和,它们都可以 由流量对时间的积分得到. 42 算法设计与编程 1. 拟合第1、2时段的水位,并导出流量 2. 拟合供水时段的流量 3. 估计一天总用水量 4. 流量及总用水量的检验 43 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)流量函数为: 44 拟合第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)流量函数为: 45 2. 拟合供水时段的流量 在第1供水时段(t=9~11)之前(即第1时段)和之后(即第2时 段)各取几点,其流量已经得到,用它们拟合第1供水时段的流量 .为使流量函数在t=9和t=11连续,我们简单地只取4个点,拟合3次 多项式(即曲线必过这4个点),实现如下: xx1=-polyval(a1,[8 9]);%取第1时段在t=8,9的流量 xx2=-pol