实验二讲稿:MATLAB拟合
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一室模型:将整个机体看作一个房室,称中心室,室内 血药浓度是均匀的。快速静脉注射后,浓度立即上升;然后 迅速下降。当浓度太低时,达不到预期的治疗效果;当浓度 太高,又可能导致药物中毒或副作用太强。临床上,每种药 物有一个最小有效浓度c1和一个最大有效浓度c2。设计给药方 案时,要使血药浓度保持在c1~c2之间。 本题设c1=10,c2=25(ug/ml).
16
t=0:0.1:1.2 s=polyval(p3,t) s1=polyval(p6,t) hold on plot(t,s,'r-','linewidth',2) plot(t,s1,'b--','linewidth',2) grid
14 12 10 8 6 4 2 0 -2
0
0.2
0.4
0.6
(1)在直角坐标系上作出人口数的图象。 (2)建立人口数与年份的函数关系,并估算 2015年的人口数。
如何确定a,b?
y ax b
线性模型
1.2 拟合的基本原理
曲线拟合问题的提出:已知一组(二维)数据,即平面上n
个点(xi,yi) i=1,…n,寻求一个函数(曲线)y=f(x),使f(x)在 某种准则下与所有数据点最为接近,即曲线拟合得最好。 y + +
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.3,11.2] plot(x,y,'k.','markersize',25) axis([0 1.3 -2 16]); % x的坐标范围是0到1.3,y的范围是-2到16 p3=polyfit(x,y,3) p6=polyfit(x,y,6)
工程应用数学B 创新实训课堂Ⅱ
——曲线拟合
合肥学院数理系 大学数学教研室
实训课堂目的
1、直观了解拟合基本内容
2、掌握用Matlab求解拟合问题
3、通过对实际问题的分析和研究,初步掌握
建立数据拟合数学模型的方法
实训课堂内容
1、拟合问题引例及基本理论
2、用数学软件求解拟合问题
3、应用实例
4、自主学习内容
J 0( k 1,2) 得到关 为此, 只需利用极值的必要条件 a k
i 1 i 1
n
n
于 a1 , a2 的线性方程组,
n 2[(a1 xi a2 ) yi ]xi 0 i 1 n 2[(a x a ) y ] 0 1 i 2 i i 1
MATLAB(zxec2)
plot(x,y,'k+',x,z,'r') %作出数据点和拟合曲线的图形 2)计算结果:A=-9.8108 20.1293 -0.0317
f ( x) 9.8108x 2 20.1293x 0.0317
补充:对该观测数据点进一步拟合
x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2 分别用3次和6次多项式曲线拟合这些数据点. 编写Matlab程序如下:
给药方案
t log c 近似直线关系, 即 c(t) 有按负指数规律减少的趋势.
给药方案
问题 1.在快速静脉注射的给药方式下,研究血药浓度 (单位体积血液中的药物含量)的变化规律。 2.给定药物的最小有效浓度和最大治疗浓度,设计 给药方案:每次注射剂量多大;间隔时间多长。
分析 •实验:对血药浓 度数据作拟合,符 合负指数变化规律
要设计给药方案,必须知道给药后血药浓度随 时间变化的规律。从实验和理论两方面着手:
在实验方面,对某人用快速静脉注射方式一次注 入该药物300mg后,在一定时刻t(小时)采集血药,测得 血药浓度c(ug/ml)如下表:
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
二、用MATLAB解拟合问题
线性最小二乘拟合
1.作多项式f(x)=a1xm+…+amx+am+1拟合,可利用已有程序: a=polyfit(x,y,m) 输出拟合多项式系数 a=[a1,…am,am+1](数组) 输入同长度 拟合多项
的数组X,Y
式次数
2.多项式在x处的值y可用以下命令计算: y=polyval(a,x)
9 10 11
12
13
14
15
16
刀具厚度 y/cm 26.8 26.5 26.3 26.1 25.7 25.3 24.8 24.0
解: 描出散点图, 在命令窗口输入:
t=[0:1:16] y=[30.0 29.1 28.4 28.1 28.0 27.7 27.5 27.2 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8 24.0] plot(t,y,'*')
中的 A (a1 , a2 , a3 ) 使得:
2 [ f ( x ) y ] i i i 1 11
最小
12 10
解:用多项式拟合的命令 1)输入以下命令:
8 6 4 2 0 -2
x=0:0.1:1;
0
0.2
0.4
0.6
0.8
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);
c c2
•理论:用一室模型研 究血药浓度变化规律
c1 0 t
模型假设
1.机体看作一个房室,室内血药浓度均匀,
即为一室模型.
2.药物排除速率与血药浓度成正比,比例系数k(>0). 3.血液容积v,t=0注射剂量d,血药浓度立即为d/v.
模型建立
dc 由假设 2得: -kc d kt dt c(t ) e v 由假设3得: c(0) d/
在此,d=300mg,t及c(t)在某些点处的值见前表,需经
拟合求出参数k、v
用线性最小二乘法拟合c(t)
d kt c (t ) e ln c ln(d / v) kt y a1t a2 v a2 k a1 , v d / e y ln c, a1 k , a2 ln(d / v)
一、曲线拟合
1.1 拟合问题引例
据人口统计年鉴,知我国从1997年至2006年人 口数据资料如下: (人口数单位为:百万)
年份 人口数 年份 人口数 1997 1236.26 2002 1284.53 1998 1247.61 2003 1292.27 1999 2000 1257.86 1267.43 2004 2005 1299.88 1307.56 2001 1276.27 2006 1314.48
a1 , a2
n n n 2 xi a1 xi a2 xi yi 0 i 1 i 1 i 1 n n xi a1 na2 yi 0 i 1 i 1
n n 2 n xi a1 xi a2 xi yi i 1 i 1 i 1 n n xi a1 na2 yi i 1 i 1
程序: 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) MATLAB(lihe1) k=-a(1) v=d/exp(a(2)) 计算结果:k 0.2347 (1 / h), v 15.02(l )
+
+
+
i
(x+ i,yi) +
+
+ i为点(xi,yi)与曲线y=f(x)的距离
n n
y=f(x)
x
最小二乘法
确定f(x)使得
i2 [ f ( xi ) yi ]2 达到最小 i 1 i 1
用什么样的曲线拟合已知数据? 1.通过理论分析建立数学模型来确定f(x);
2.通过作图直观判断确定f(x).
MATLAB(4.m)
clear clc x=1949:5:1994 y=[541.67 602.66 672.09 704.99 806.71 908.59 975.42 1034.75 1106.76 1176.74] a11=sum(x.^2); a12=sum(x); a21=a12; a22=10; d1=sum(x.*y); d2=sum(y); A=[a11,a12;a21,a22] D=[d1;d2] a1a2=inv(A)*D
0.8
1
1.2
三、应用问题实例
例1 电阻问题
例. 由数据
温度t(0C) 20.5 32.7 51.0 73.0 95.7 电阻R() 765 826 873 942 1032
拟合R=a1t+a2
解法:用命令 polyfit(x,y,m)
得到a1=3.3940,a2=702.4918
MATLAB(dianzu1)
y1=-0.3012*t+29.3804
plot(t, y1), hold off
拟合曲线为: y=-0.3012t+29.3804
例3 给药方案问题
一种新药用于临床之前,必须设计给药方案。
药物进入机体后血液输送到全身,在这个过程中不断地 被吸收、分布、代谢,最终排出体外,药物在血液中的浓度, 即单位体积血液中的药物含量,称为血药浓度。
给药方案设计 •设每次注射剂量D,间隔时间 •血药浓度c(t)应c1c(t)c2
c2
c1 0
c
t
•初次剂量D0应加大
例2 用切削机床进行金属品加工时, 为了适当地调整 机床, 需要测定刀具的磨损速度. 在一定的时间测量刀 具的厚度, 得数据如表所示:
切削时间 t/h
0 1 2 3 4 5 6 7 8
刀具厚度 y/cm 30.0 29.1 28.4 28.1 28.0 27.7 27.5 27.2 27.0 切削时间 t/h
常用的曲线函数系类型: 直线: 多项式:
y a1 x a2
y a1 x m am x am 1
a1 y a2 x
a2 x
双曲线(一支):
指数曲线:
y a1e
f=a1+a2x + + + + +
f=a1+a2x+a3x2 + + ƻa3x2
解: 描出散点图, 在命令窗口输入: t=[0:1:16] y=[30.0 29.1 28.4 28.1 28.0 27.7 27.5 27.2 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8 24.0] plot(t,y,'*')
a=polyfit(t,y,1) a= -0.3012 29.3804 hold on
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.3,11.2] plot(x,y,'k.','markersize',25) axis([0 1.3 -2 16]) p3=polyfit(x,y,3) p6=polyfit(x,y,6)
+ +
+ +
+
f=a1+a2/x + + + + +
f=aebx
+
+ + +
+
-bx f=ae + +
+
+ +
拟合函数组中系数的确定
以f ( x ) a1 x a2为例, 即确定a1,a2使得
J (a1 , a2 ) i2 [(a1 xi a2 ) yi ]2达到最小。
对下面一组数据作二次多项式拟合
x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2
即要求出二次多项式:
f ( x) a1x 2 a2 x a3
16
t=0:0.1:1.2 s=polyval(p3,t) s1=polyval(p6,t) hold on plot(t,s,'r-','linewidth',2) plot(t,s1,'b--','linewidth',2) grid
14 12 10 8 6 4 2 0 -2
0
0.2
0.4
0.6
(1)在直角坐标系上作出人口数的图象。 (2)建立人口数与年份的函数关系,并估算 2015年的人口数。
如何确定a,b?
y ax b
线性模型
1.2 拟合的基本原理
曲线拟合问题的提出:已知一组(二维)数据,即平面上n
个点(xi,yi) i=1,…n,寻求一个函数(曲线)y=f(x),使f(x)在 某种准则下与所有数据点最为接近,即曲线拟合得最好。 y + +
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.3,11.2] plot(x,y,'k.','markersize',25) axis([0 1.3 -2 16]); % x的坐标范围是0到1.3,y的范围是-2到16 p3=polyfit(x,y,3) p6=polyfit(x,y,6)
工程应用数学B 创新实训课堂Ⅱ
——曲线拟合
合肥学院数理系 大学数学教研室
实训课堂目的
1、直观了解拟合基本内容
2、掌握用Matlab求解拟合问题
3、通过对实际问题的分析和研究,初步掌握
建立数据拟合数学模型的方法
实训课堂内容
1、拟合问题引例及基本理论
2、用数学软件求解拟合问题
3、应用实例
4、自主学习内容
J 0( k 1,2) 得到关 为此, 只需利用极值的必要条件 a k
i 1 i 1
n
n
于 a1 , a2 的线性方程组,
n 2[(a1 xi a2 ) yi ]xi 0 i 1 n 2[(a x a ) y ] 0 1 i 2 i i 1
MATLAB(zxec2)
plot(x,y,'k+',x,z,'r') %作出数据点和拟合曲线的图形 2)计算结果:A=-9.8108 20.1293 -0.0317
f ( x) 9.8108x 2 20.1293x 0.0317
补充:对该观测数据点进一步拟合
x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2 分别用3次和6次多项式曲线拟合这些数据点. 编写Matlab程序如下:
给药方案
t log c 近似直线关系, 即 c(t) 有按负指数规律减少的趋势.
给药方案
问题 1.在快速静脉注射的给药方式下,研究血药浓度 (单位体积血液中的药物含量)的变化规律。 2.给定药物的最小有效浓度和最大治疗浓度,设计 给药方案:每次注射剂量多大;间隔时间多长。
分析 •实验:对血药浓 度数据作拟合,符 合负指数变化规律
要设计给药方案,必须知道给药后血药浓度随 时间变化的规律。从实验和理论两方面着手:
在实验方面,对某人用快速静脉注射方式一次注 入该药物300mg后,在一定时刻t(小时)采集血药,测得 血药浓度c(ug/ml)如下表:
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
二、用MATLAB解拟合问题
线性最小二乘拟合
1.作多项式f(x)=a1xm+…+amx+am+1拟合,可利用已有程序: a=polyfit(x,y,m) 输出拟合多项式系数 a=[a1,…am,am+1](数组) 输入同长度 拟合多项
的数组X,Y
式次数
2.多项式在x处的值y可用以下命令计算: y=polyval(a,x)
9 10 11
12
13
14
15
16
刀具厚度 y/cm 26.8 26.5 26.3 26.1 25.7 25.3 24.8 24.0
解: 描出散点图, 在命令窗口输入:
t=[0:1:16] y=[30.0 29.1 28.4 28.1 28.0 27.7 27.5 27.2 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8 24.0] plot(t,y,'*')
中的 A (a1 , a2 , a3 ) 使得:
2 [ f ( x ) y ] i i i 1 11
最小
12 10
解:用多项式拟合的命令 1)输入以下命令:
8 6 4 2 0 -2
x=0:0.1:1;
0
0.2
0.4
0.6
0.8
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);
c c2
•理论:用一室模型研 究血药浓度变化规律
c1 0 t
模型假设
1.机体看作一个房室,室内血药浓度均匀,
即为一室模型.
2.药物排除速率与血药浓度成正比,比例系数k(>0). 3.血液容积v,t=0注射剂量d,血药浓度立即为d/v.
模型建立
dc 由假设 2得: -kc d kt dt c(t ) e v 由假设3得: c(0) d/
在此,d=300mg,t及c(t)在某些点处的值见前表,需经
拟合求出参数k、v
用线性最小二乘法拟合c(t)
d kt c (t ) e ln c ln(d / v) kt y a1t a2 v a2 k a1 , v d / e y ln c, a1 k , a2 ln(d / v)
一、曲线拟合
1.1 拟合问题引例
据人口统计年鉴,知我国从1997年至2006年人 口数据资料如下: (人口数单位为:百万)
年份 人口数 年份 人口数 1997 1236.26 2002 1284.53 1998 1247.61 2003 1292.27 1999 2000 1257.86 1267.43 2004 2005 1299.88 1307.56 2001 1276.27 2006 1314.48
a1 , a2
n n n 2 xi a1 xi a2 xi yi 0 i 1 i 1 i 1 n n xi a1 na2 yi 0 i 1 i 1
n n 2 n xi a1 xi a2 xi yi i 1 i 1 i 1 n n xi a1 na2 yi i 1 i 1
程序: 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) MATLAB(lihe1) k=-a(1) v=d/exp(a(2)) 计算结果:k 0.2347 (1 / h), v 15.02(l )
+
+
+
i
(x+ i,yi) +
+
+ i为点(xi,yi)与曲线y=f(x)的距离
n n
y=f(x)
x
最小二乘法
确定f(x)使得
i2 [ f ( xi ) yi ]2 达到最小 i 1 i 1
用什么样的曲线拟合已知数据? 1.通过理论分析建立数学模型来确定f(x);
2.通过作图直观判断确定f(x).
MATLAB(4.m)
clear clc x=1949:5:1994 y=[541.67 602.66 672.09 704.99 806.71 908.59 975.42 1034.75 1106.76 1176.74] a11=sum(x.^2); a12=sum(x); a21=a12; a22=10; d1=sum(x.*y); d2=sum(y); A=[a11,a12;a21,a22] D=[d1;d2] a1a2=inv(A)*D
0.8
1
1.2
三、应用问题实例
例1 电阻问题
例. 由数据
温度t(0C) 20.5 32.7 51.0 73.0 95.7 电阻R() 765 826 873 942 1032
拟合R=a1t+a2
解法:用命令 polyfit(x,y,m)
得到a1=3.3940,a2=702.4918
MATLAB(dianzu1)
y1=-0.3012*t+29.3804
plot(t, y1), hold off
拟合曲线为: y=-0.3012t+29.3804
例3 给药方案问题
一种新药用于临床之前,必须设计给药方案。
药物进入机体后血液输送到全身,在这个过程中不断地 被吸收、分布、代谢,最终排出体外,药物在血液中的浓度, 即单位体积血液中的药物含量,称为血药浓度。
给药方案设计 •设每次注射剂量D,间隔时间 •血药浓度c(t)应c1c(t)c2
c2
c1 0
c
t
•初次剂量D0应加大
例2 用切削机床进行金属品加工时, 为了适当地调整 机床, 需要测定刀具的磨损速度. 在一定的时间测量刀 具的厚度, 得数据如表所示:
切削时间 t/h
0 1 2 3 4 5 6 7 8
刀具厚度 y/cm 30.0 29.1 28.4 28.1 28.0 27.7 27.5 27.2 27.0 切削时间 t/h
常用的曲线函数系类型: 直线: 多项式:
y a1 x a2
y a1 x m am x am 1
a1 y a2 x
a2 x
双曲线(一支):
指数曲线:
y a1e
f=a1+a2x + + + + +
f=a1+a2x+a3x2 + + ƻa3x2
解: 描出散点图, 在命令窗口输入: t=[0:1:16] y=[30.0 29.1 28.4 28.1 28.0 27.7 27.5 27.2 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8 24.0] plot(t,y,'*')
a=polyfit(t,y,1) a= -0.3012 29.3804 hold on
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.3,11.2] plot(x,y,'k.','markersize',25) axis([0 1.3 -2 16]) p3=polyfit(x,y,3) p6=polyfit(x,y,6)
+ +
+ +
+
f=a1+a2/x + + + + +
f=aebx
+
+ + +
+
-bx f=ae + +
+
+ +
拟合函数组中系数的确定
以f ( x ) a1 x a2为例, 即确定a1,a2使得
J (a1 , a2 ) i2 [(a1 xi a2 ) yi ]2达到最小。
对下面一组数据作二次多项式拟合
x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2
即要求出二次多项式:
f ( x) a1x 2 a2 x a3