matlab数学建模——插值与拟合

概述

我们经常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,例如数据拟合、参数估计、插值等数据处理算法。此类问题在MATLAB中有很多现成的函数可以调用。

插值与拟合方法就是要通过实验或测量所得的一些离散数据去确定某一类已知函数的参数或寻求某个近似函数,使所得到的近似函数与已知数据有较高的拟合精度。

插值与拟合的区别

插值问题:寻求近似函数(曲线或曲面),使其经过所已知的所有数据点(不需要函数表达式),从而预测未知点对应的值。

 数据拟合:寻求近似函数,使其能较好地反映数据变化规律(必须有函数表达式),近似函数不一定通过所有的数据点

一维插值

定义

 

 

一维插值基本命令

yi=interp1(x,y,xi,’method’)  

常用插值方法的比较

方法                                                   说明

nearest  最临近插值:最快,但是数据平滑方面最差,数据是不连续的。

linear   线性插值:执行速度较快,有足够的精度,最常用,为默认设置。

cubic   立方插值:较慢,精度高,平滑度好。作平滑的曲线时用该选项。

spline   三次样条插值:执行速度最慢,精度高,最平滑。

二维网格数据插值(二元函数)

zi=interp2(x,y,z,xi,yi,‘method’)     这里输入参数method有:linear,cubic,nearest

拟合曲线

用MATLAB作线性最小二乘拟合

 a = polyfit(x,y,n)

输出为拟合多项式系数

 例

插值

1.已知数据表如下,试利用interp1的不同插值算法求xi=1,1.1,1.2,…,5各点的函数的近似值,并作图比较.

X

1.0

2.0

3.0

4.0

5.0

3.5

4.6

5.5

3.2

2.0

x=[1:1:5];
y=[3.5,4.6,5.5,3.2,2.0];
xi=[1:0.1:5];
y1=interp1(x,y,xi,'nearest');
y2=interp1(x,y,xi,'linear');
y3=interp1(x,y,xi,'spline');
y4=interp1(x,y,xi,'cubic');
plot(x,y,'o',xi,y1,'r',xi,y2,'k',xi,y3,'b',xi,y4,'g');
legend('已知数据','nearest','linear','spline','cubic')

2.测得平板表面3*5网格点处的温度分别为:                                                            

         82  81  80  82  84                                                                                                                 

         79  63  61  65  81                                                                                                               

         84  84  82  85  86                                                                                                                   

试作出平板表面的温度分布曲面z=f(x,y)的图形。再以平滑数据,在x、y方向上每隔0.5个单位的地方进行插值.

x=[1:1:5];
y[1:1:3];
z=[82 81 80 82 84;
   79 63 61 65 81;
   84 84 82 85 86];
x1=[1:0.05:5];
y1=[1:0.05:3];
z1=interp2(x,y,z,x1,y1','nearest');
z2=interp2(x,y,z,x1,y1','linear');
z3=interp2(x,y,z,x1,y1','cubic');
subplot(2,2,1)
mesh(x,y,z);
title('原始图');
subplot(2,2,2)
mesh(x1,y1,z1)
title('nearest');
subplot(2,2,3)
mesh(x1,y1,z2)
title('linear');
subplot(2,2,4)
mesh(x1,y1,z3)
title('cubic');

拟合曲线

1.某地区作物生长所需的营养素主要是氮(N)、磷(P)。某作物研究所对土豆的产量做了一定数量的实验,实验数据如表2所示,其中 ha 表示公顷,t 表示吨,kg表示公斤。现对土豆产量关于N 的施肥量做实验,试分析施肥量N与产量之间关系。

施肥量x(kg/ha)

0

34

67

101

135

202

259

336

404

471

产量y(t/ha)

15.18

21.36

25.72

32.29

34.03

39.45

43.15

43.46

40.83

30.75

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];
a=polyfit(x,y,2)
z=polyval(a,x);
plot(x,y,'ko',x,z,'r')
legend('原始图','y=-0.0003*x^2+0.1971*x+14.7416')

2.塔机起重量G与钢丝绳拉杆张力F之间存在密切关系,如下表所示。以拉杆张力F作为自变量,起重量为因变量,找出函数关系。并根据函数关系估计相应拉力下的起重量。

拉杆张力F

0

0.45

0.94

1.44

2.10

2.61

3.36

4.27

5.16

6.05

7.33

起重量G/kg

0

600

1200

1800

2400

3000

3600

4200

4800

5400

6000

x=[0 0.45 0.94 1.44 2.10 2.61 3.36 4.27 5.16 6.05 7.33];
y=[0 600 1200 1800 2400 3000 3600 4200 4800 5400 6000];
a=polyfit(x,y,3)
y1=polyval(a,x);
plot(x,y,'ro',x,y1,'b');
legend(‘原数据','y=4.6*x^3-110.4*x^2+1383*x+0.4')

3.已知一室模型快速静脉注射下的血药浓度数据(t=0注射300mg)

t(h)           0.25      0.5         1       1.5       2        3         4        6      8

c(mg/ml)  19.21   18.15  15.36  14.10  12.89   9.32   7.45   5.24  3.01

将其拟和为:

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];
lnc=log(c);
a=polyfit(t,lnc,1)
k=-a(1)
c0=exp(a(2))
t1=[0.25:0.01:8];
c1=c0*exp(-k*t1);
plot(t,c,'ro',t1,c1,'b')
legend('原数据','杨世豪 21434070217')

  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值