null数学建模辅导
数学与信息科学系 汪远征数学建模辅导
数学与信息科学系 汪远征6 数据拟合拟合拟合
1 引例
2 拟合的基本原理
3 用MATLAB解拟合问题
4 MATLAB解应用问题实例
1 引例1 引例引例1
已知热敏电阻数据:
求60 C时的电阻R。
设 R = at + b a, b为待定系数1 引例1 引例引例2
已知一室模型快速静脉注射下的血药浓度数据(t=0注射300mg)
求血药浓度随时间的变化规律c(t).
作半对数坐标系(semilogy)下的图形
c(t) = c0e–kt
c, k为待定系数
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];
semilogy(t,c,'+')2 拟合的基本原理2 拟合的基本原理2.1 曲线拟合问题的提法
已知一组(二维)数据,即平面上n个点(xi, yi) i = 1, …, n
寻求一个函数(曲线)y = f(x), 使f(x)在某种准则下与所有数据点最为接近,即曲线拟合得最好。
i 为点(xi, yi)与曲线y = f(x)的距离2 拟合的基本原理2 拟合的基本原理2.2 拟合与插值的关系
1. 问题:给定一批数据点,需确定满足特定要求的曲线或曲面
2. 解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
:
1) 若要求所求曲线(面)通过所给所有数据点,就是插值问题;
2) 若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。
函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者在数学方法上是完全不同的。2 拟合的基本原理2 拟合的基本原理2.2 拟合与插值的关系
3. 实例:下面数据是某次实验所得,希望得到x和f之间的关系
最临近插值、线性插值、样条插值与曲线拟合结果 (cn)2 拟合的基本原理2 拟合的基本原理2.3 曲线拟合问题最常用的解法
2.3.1 线性最小二乘法的基本思路
1. 先选定一组函数 r1(x), r2(x), …, rm(x), m < n, 令
f(x) = a1r1(x) + a2r2(x) + … + amrm(x) (1)
其中a1, a2, …, am为待定系数。
2. 确定a1, a2, …, am的准则(最小二乘准则):
使n个点(xi, yi)与曲线y = f(x)的距离i的平方和最小。
记
(2)
问题归结为,求a1, a2, …, am使J(a1, a2, …, am)最小。2 拟合的基本原理2 拟合的基本原理2.3 曲线拟合问题最常用的解法
2.3.2 线性最小二乘法的求解
1. 超定方程组:方程个数大于未知量个数的方程组
即 Ra = y
其中
超定方程一般是不存在解的矛盾方程组。2 拟合的基本原理2 拟合的基本原理2.3 曲线拟合问题最常用的解法
2.3.2 线性最小二乘法的求解
2. 如果有向量a使得
达到最小,则称a为上述超定方程的最小二乘解。
所以,曲线拟合的最小二乘法要解决的问题,实际上就是求以下超定方程组的最小二乘解的问题。
Ra = y (3)
其中
2 拟合的基本原理2 拟合的基本原理2.3 曲线拟合问题最常用的解法
2.3.2 线性最小二乘法的求解
3. 定理:当RTR可逆时,超定方程组(3)存在最小二乘解,且即为方程组RTRa = RTy的解:
a = (RTR)-1RTyRa = y2 拟合的基本原理2 拟合的基本原理2.3 曲线拟合问题最常用的解法
2.3.2 线性最小二乘法的求解
4. 线性最小二乘拟合f(x) = a1r1(x)+ … + amrm(x)中函数
{r1(x), …, rm(x)}的选取:
1) 通过机理分析建立数学模型来确定f(x);
2) 将数据(xi, yi) i = 1, …, n作图,通过直观判断确定f(x):
3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.1 线性最小二乘拟合
3.1.1 多项式拟合命令
1. 作多项式f(x) = a1xm + … + am1x + am+ 1拟合,其命令为:
a = polyfit(x, y, m)
a:输出拟合多项式系数a = [a1, …am, am+1] (数组))
x, y:输入同长度的数组
m:拟合多项式次数
2. 多项式在x处的值y可用以下命令计算:
y = polyval(a, x)
3. 对超定方程组Rnmam1 = yn1 (m < n),可用
a = R\y
可得最小二乘意义下的解。3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.1 线性最小二乘拟合
3.1.2 多项式拟合例子
例1:对下面一组数据作二次多项式拟合
即要求出二次多项式: f(x) = a1x2 + a2x + a3中的A = (a1, a2, a3)
使得 最小3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.1 线性最小二乘拟合
3.1.2 多项式拟合例子
例1:对下面一组数据作二次多项式拟合
解法1.用解超定方程的方法
此时
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=R\y'3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.1 线性最小二乘拟合
3.1.2 多项式拟合例子
例1:对下面一组数据作二次多项式拟合
解法1.用解超定方程的方法
2) 计算结果:
所以f(x) = – 9.8108x2 + 20.1293x – 0.03173 用MATLAB解拟合问题3 用MATLAB解拟合问题3.1 线性最小二乘拟合
3.1.2 多项式拟合例子
例1:对下面一组数据作二次多项式拟合
解法2.用多项式拟合的命令
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') %作出数据点和拟合曲线的图形3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.1 线性最小二乘拟合
3.1.2 多项式拟合例子
例1:对下面一组数据作二次多项式拟合
解法2.用多项式拟合的命令
2) 计算结果:
所以f(x) = – 9.8108x2 + 20.1293x – 0.0317
MATLAB(zxec2)3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
当模型中被估参数与函数值为非线性依从关系时,就形成非线性最小二乘问题。
非线性问题很难处理,往往连解的存在性和唯一性都难以确定。
因此如果通过函数变换能使被估参数以线性形式出现,就应该优先采用变换,把问题变成可简单有效处理的线性最小二乘问题。3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.1 伪线性最小二乘
线性最小二乘的处理方法可靠、快捷,本方法值得优先考虑。下
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
为常见的可线性化模型:3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.1 伪线性最小二乘
例1:炼钢厂考虑钢包的重量y与试验次数x的关系
1. 确定回归函数可能形式
为确定可能的函数形式,首先描出数据的散点图。
x=[2 3 4 5 7 8 10 11 14 15 16 18 19]
y=[106.42 108.2 109.58 109.5 110 109.93 110.49 110.59 110.6 110.9 110.76 111 111.2]
plot(x, y, '*')3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.1 伪线性最小二乘
例1:炼钢厂考虑钢包的重量y与试验次数x的关系
1. 确定回归函数可能形式
散点图呈现出明显的向上且上凸的趋势,可能选择的函数关系有很多,比如可以给出如下三种曲线函数:
1 / y = a + b / x ,y = a + blnx ,
令u = 1/x、v = 1/y 、w = lnx 、 ,三种曲线函数又可以表示为:
v = a + bu,y = a + bw,y = a + bz3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.1 伪线性最小二乘
例1:炼钢厂考虑钢包的重量y与试验次数x的关系
1 / y = a + b / x ,y = a + blnx ,
令u = 1/x、v = 1/y 、w = lnx 、 ,三种曲线函数又可以表示为:v = a + bu,y = a + bw,y = a + bz
2. 变量变换
u=1./x; v=1./y; w=log(x); z=sqrt(x);
figure(2);plot(u, v, '*');
figure(3);plot(w, y, '*');
figure(4);plot(z, y, '*');3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.1 伪线性最小二乘
例1:炼钢厂考虑钢包的重量y与试验次数x的关系
1 / y = a + b / x ,y = a + blnx ,
令u = 1/x、v = 1/y 、w = lnx 、 ,三种曲线函数又可以表示为:v = a + bu,y = a + bw,y = a + bz
2. 变量变换
从散点图可以看出第一种变换后两变量的关系最接近线性,可以考虑建立线性拟合模型v = a + bu。3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.1 伪线性最小二乘
例1:炼钢厂考虑钢包的重量y与试验次数x的关系
1 / y = a + b / x ,
令u = 1/x、v = 1/y 曲线函数可以表示为:v = a + bu
3. 拟合
A = polyfit(u, v, 1)
z = polyval(A, u);
plot(x, y, 'k+'),hold on;
plot(1./u, 1./z, 'r') %作出数据点和拟合曲线的图形
hold off;3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.1 伪线性最小二乘
例1:炼钢厂考虑钢包的重量y与试验次数x的关系
1 / y = a + b / x ,
令u = 1/x、v = 1/y 曲线函数可以表示为:v = a + bu
3. 拟合
线性拟合方程v = 0.0090 + 0.0008 u,原数据的拟合方程为:
即 3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.2 非线性最小二乘
设已知数据点:
xdata = (xdata1,xdata2,…,xdatan)
ydata = (ydata1,ydata2,…,ydatan)
lsqcurvefit用以求向量值函数
F(x, xdata) = (F(x, xdata1), …, F(x, xdatan))T中的参变量x(向量)
使得 最小
命令格式为:
x = lsqcurvefit('fun', x0, xdata, ydata);3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.2 非线性最小二乘
设已知数据点:
xdata = (xdata1,xdata2,…,xdatan)
ydata = (ydata1,ydata2,…,ydatan)
lsqcurvefit命令格式为:
x = lsqcurvefit('fun', x0, xdata, ydata);
fun是一个事先建立的定义函数F(x, xdata)的M-文件, 自变量为x和xdata
x0:迭代初值
xdata , ydata :已知数据点3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.2 非线性最小二乘
例2:用下面一组数据拟合c(t) = a + be0.02kt中的参数a,b,k
解:
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 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.2 非线性最小二乘
例2:用下面一组数据拟合c(t) = a + be0.02kt中的参数a,b,k
解:
2) 输入命令
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];
x0=[0.2,0.05,0.05];
x=lsqcurvefit('curvefun1', x0, tdata, cdata);
f = curvefun1(x, tdata);
x
plot(tdata, cdata,'o',tdata,f,'r-') MATLAB(fzxec1)3 用MATLAB解拟合问题3 用MATLAB解拟合问题3.2 非线性最小二乘拟合
3.2.2 非线性最小二乘
例2:用下面一组数据拟合c(t) = a + be0.02kt中的参数a,b,k
解:
3) 运算结果为:
4) 结论:a = 0.0063, b = -0.0034, k = 0.2542
即c(t) = 0.0063 – 0.0034e0.020.2542t
4 MATLAB解应用问题实例4 MATLAB解应用问题实例4.1 电阻问题
例3:由数据
拟合R = a1t + a2
方法1. 用命令polyfit(x, y, m)
得到a1 = 3.3940, a2 = 702.4918
t=[20.5 32.5 51 73 95.7];
r=[765 826 873 942 1032];
aa=polyfit(t,r,1);
a=aa(1)
b=aa(2)
y=polyval(aa,t);
plot(t,r,'k+',t,y,'r') MATLAB(dianzu1)4 MATLAB解应用问题实例4 MATLAB解应用问题实例4.1 电阻问题
例3:由数据
拟合R = a1t + a2
方法2. 直接用a = R\y,结果相同。
t=[20.5 32.5 51 73 95.7];
r=[765 826 873 942 1032];
R=[t' ones(5,1)];
aa=R\r';
a=aa(1)
b=aa(2)
y=polyval(aa,t);
plot(t,r,'k+',t,y,'r') MATLAB(dianzu2)