插值拟合方法总结
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请根据表9.2的数据,给出土豆产量与氮肥施肥量之间的关系
一、模型假设 假设实验数据为抽样数据. 假设其他化肥用量不变. 二、模型分析与建立 clear x=[0 34 67 101 135 202 259 336 404 471]; y=[15.18 21.36 25.72 32.29 34.03 39.45 43.15 43.46 40.83 30.75]; plot(x,y,'+') xlabel('x(dan fei liang)') ylabel('y(tu dou chan liang)')
1050 shiji nihe 1000
950
900
850
800
750 20
30
40
50
60 t
70
80
90
实际值与拟合图
clear t=[20.5 32.7 51 73 95.7]; R=[765 826 873 942 1032]; plot(t,R,'*') xlabel('t'); ylabel('R') hold on 100 t=20:0.1:100; plot(t,702.0968+3.3987.*t)
解法二:使用 ployfit() 函数 clear t=[20.5 32.7 51 73 95.7]; R=[765 826 873 942 1032]; x=t'; y=R'; p=polyfit(x,y,1) p= 3.3987 702.0968
即a1=702.0968, a2=3.3987,因此拟合的函数为 y=702.0968+3.3987x 将x=60代入计算得y=906
问题2 【农业生产实验模型】在研究农业生产的试验中, 为分析某地区土豆产量与化肥的关系,得到了每公顷地 的氮肥的施肥量与土豆产量的对应关系,见图9.2
表9.2 氮肥量 (kg) 0 34 67 101 135 202 259 336 404 471
土豆产 15.18 21.36 25.72 32.29 34.03 39.45 43.15 43.46 40.83 30.75 量(kg)
clear x=[0 34 67 101 135 202 259 336 404 471]; y=[15.18 21.36 25.72 32.29 34.03 39.45 43.15 43.46 40.83 30.75]; abc=polyfit(x,y,2) x1=0:471; y1=polyval(abc,x1); plot(x,y,'*',x1,y1) xlabel('x(dan fei liang)') ylabel('y(tu dou chan liang)')
第 4讲
数据的插值拟合法
4.1 数据的拟合方法
4.2 数据的插值方法
4.1 数据的拟合方法
问
已知n个数据点(xi, yi),i=1,2,…,n,xi互不相 同,如何寻求函数 y=f(x) ,使f(x)在某种准则下 与这n个点最接近?
题
一、拟合原理
拟合模型通过寻找简单的因果变量之间的数量关 系,对未知的情形作出预测与预报. Remark :不必要求近似函数的曲线或曲面通过所有的 数据点.
先用Matlab画出散点图.
45 40
y(tu dou chan liang)Biblioteka 353025
20
15
0
50
100
150
200 250 300 x(dan fei liang)
350
400
450
500
可以看出散点图呈二次曲线图形,可取如下拟合函数
y ax bx c
2
其中x表示氮肥量,y表示土豆产量。a,b,c为待定系数。 三、模型求解 abc = -0.0003 0.1971 14.7416
1 20.5 1 32.7 A 1 51 1 73 1 95.7
a1 x , a2
765 826 b 873 942 1032
R=[765 826 873 942 1032]; A=[ones(5,1),t']; b=R'; a1a2=A\b a1a2 = 702.0968 3.3987
y 0.0003x2 0.1971x 14.7416
45
40
35
y(tu dou chan liang)
30
25
20
15
10
0
50
100
150
200 250 300 x(dan fei liang)
350
400
450
500
问题3 【血药浓度模型】通过实验测得一次性快速静脉
注射300mg药物后的血药浓度数据,见表9.3
二、拟合模型的分类与方法
1. 直线拟合:用一次函数或称线性函数拟合数据.
2. 曲线拟合:若直线拟合效果不佳,可提高拟合精度,
用曲线拟合数据. 常用的是二次函数、三次函数等高 次多项式,有时也会用到指数函数、对数函数、三
角函数等.
3. 观察数据修匀:根据数据分布的总趋势去剔除观察数 据中的偶然误差,即数据修匀(或称数据光滑)问 题. 4. 分段拟合:在不同段上用不同的低次多项式进行拟合.
y a1 a2 x
y1 a1 a2 x1 y1 1 x1 y2 y a a x 1 x 2 1 2 2 2 a1 T T y y a a x 1 x Ax b A Ax A b 3 3 1 2 3 3 a2 y a a x 1 2 4 y4 1 x4 4 1 x y t=[20.5 32.7 51 73 95.7]; y a a x 5 5 1 2 5 5
Y 20.2413 e0.242t .
22 20 18 16 14 12 10 8 6 4 2 shiji jiefa2 jiefa1
t=[0.25 0.5 1 1.5 2 3 4 6 8]; y=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01]; plot(t,y,'*');hold on a0=[20,0.264]; a=nlinfit(t,y,'fun7_1',a0); t=0:0.01:9; plot(t,a(1).*exp(-a(2).*t)) hold on plot(t,19.9714.*exp(0.2347.*t),'r') xlabel('t');ylabel('y')
表 9.3 t(h) 0.25 0.5 1 1.5 2 3 9.32 4 7.45 6 5.24 8 3.01
y(ug/ml) 19.21 18.15 15.36 14.10 12.89
求血药深度随时间的变化规律y(t) 一、模型假设 1. 假设 t=0 时,y=0. 2. 假设实验数据为抽样数据,能反映血药浓度与时间 的关系
选择何种曲线拟合最好呢?
首先可在坐标轴上画出数据的散点图,通过观察选择 几种合适的曲线分别拟合,通过比较,哪条曲线的最小二 乘指标J 最小即为最好的拟合曲线. 第i个点的 实际值
2
J [ f ( xi ) yi ]
i 1 2 i i 1
n
n
表示第i个点的拟 合值与实际值的绝 对误差
y
0
1
2
3
4 t
5
6
7
8
9
nlinfit函数的用法 nlinfit函数采用的迭代法,其中a0为迭代初值.
若所给初值离最优解比较近,则迭代求出该最优解
的概率就很高. 如何估计初值,暂无确切方法. 可以在得到解后 画出函数图形,看看实验点是否都在曲线附近.若相 差太大,可以考虑重新给出初值重新计算.
二、模型分析与建立 利用Matlab画出散点图.
20 18 16 14
y(nong du)
clear t=[0.25 0.5 1 1.5 2 3 4 6 8]; y=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01]; plot(t,y,'o') xlabel('t(shi jian)') ylabel('y(nong du)') 由图可见,散点图大致呈 负指数函数形态,可令
y
解法2
使用非线性拟合函数nlinfit( ). 首先建立Fun7_1.m 文件如下: function y=Fun7_1(a,t) y=a(1)*exp(-a(2)*t);
不妨取a=20, 由t=1时,y=15.36算出b=0.264取 a0=[20 0.264]; 用Matlab求解如下 a =20.2413 0.2420 clear t=[0.25 0.5 1 1.5 2 3 4 6 8]; y=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01]; a0=[20,0.264]; a=nlinfit(t,y,'fun7_1',a0)
第i个点的 拟合值
问题一 【温度与电阻的关系模型】有一个对温度敏感的 电阻,现测得一组温度t与电阻R的数据。见表9.1
表 9.1
t R
20.5 765
32.7 826
51.0 873
73 942
95.7 1032
试给出温度与电阻间的函数关系,并计算温度为60度 时的电阻值 一、模型假设 假设所测数据均为抽样数据. 二、模型的分析与建立 先画出散点图,见下图.
a eb1 e2.9943 19.9709,
则血药浓度与时间的关系为
b 0.2347
Y 19.9709 e
0.2347t
.
20 18 16 14 12
10 8 6 4 2
0
1
2
3
4 t
5
6
7
8
9
clear t=[0.25 0.5 1 1.5 2 3 4 6 8]; y=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01]; Y=log(y); b=polyfit(t,Y,1); a=exp(b(2)); b=-b(1); plot(t,y,'*'); hold on t=0:0.01:9; plot(t,a.*exp(-b.*t),'r') xlabel('t') ylabel('y')
R
regress() 函数与polyfit() 函数的区别
• regress() 函数主要用于线性拟合,在拟合时进行显著性
检验,故称为回归函数.
• Polyfit() 函数主要是利用多项式拟合. 它可以是线性或非 线性. • Remark: polyfit(x, y, m)表示用m 次多项式拟合数据x, y.
Y b1 b2t.
用Matlab求解如下:
b = -0.2347 2.9943
即 b1=2.9943 b2=-0.2347
clear t=[0.25 0.5 1 1.5 2 3 4 6 8]; y=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01]; Y=log(y); b=polyfit(t,Y,1)
三、模型求解
可用Matlab计算.
解法一:使用 regress() 函数 t=[20.5 32.7 51 73 95.7]; R=[765 826 873 942 1032]; x=[ones(5,1),t']; y=R'; b=regress(y,x,0.05) b= 702.0968 3.3987
1050
1000
t=[20.5 32.7 51 73 95.7];
950
R=[765 826 873 942 1032]; plot(t,R,'*')
900
R
xlabel('t')
850
ylabel('R')
800
750 20
30
40
50
60 t
70
80
90
100
观察上图不难发现:散点基本上在一条直线上,因 此可假设电阻与温度满足一次函数(或称线性函数). 设拟合函数为 y=a1+a2x
12 10 8 6 4 2
y a ebt
其中a, b>0 为待定系数.
0 1 2 3 4 t(shi jian) 5 6 7 8
三、模型求解 解法一:将其线性化处理. 将等式
y a ebt
两边同时取对数,得
ln y ln a bt.
令 ln y Y ,ln a b1, b b2 , 则方程变为