MATLAB4:数值计算


一、实验目的

  1. 熟悉根据已知数据进行回归法曲线拟合。
  2. 熟悉根据已知数据进行多项式曲线拟合。
  3. 熟悉根据已知数据利用指定方法进行数据插值(临近插值、线性插值、立方插值、三次样条插值)。
  4. 熟悉脚本文件和函数文件的概念、各自的特点以及二者的区别。
  5. 熟悉主函数和私有函数的特点。
  6. 了解MATLAB编程的特点。

二、实验内容

  1.多项式曲线拟合的介绍

已知变量x,y之间的函数关系为y=a1x(n)+a2x(n-1)+…+a(n)x+a(n+1)
现在希望通过实验获得一组关于(x,y)的测量数据,确定出系数(a1,a2,…a(n+1))。这类问题就称为多项式拟合。MATLAB求解该问题的命令是:
p=polyfit(x,y,n) %x,y数组所给数据的n阶拟合多项式系数向量p

  2.多项式曲线拟合的注意事项

A、为保证较好的拟合效果,多项式阶数要取得恰当。过低,可能残差较大;过高,拟合模型包含噪声影响。观察数据图形曲线,有助于适当阶数的确定。
B、拟合多项式只能在给定数据所限定的区间内使用,不要任意向外拓展。

  3.多项式曲线拟合的应用举例

>> x=0:0.1:1;
y=[-0.447,1.978,3.11,5.25,5.02,4.66,4.01,4.58,3.45,5.35,9.22];
p=polyfit(x,y,3)    %三次拟合
xx=0:0.001:1;
yy=polyval(p,xx);
plot(xx,yy)
p =
  56.6915  -87.1174   40.0070   -0.9043

在这里插入图片描述

  4. 回归法曲线拟合的说明

A、最小二乘解的求取方法不仅适用于多项式模型,还适用于其他更广泛的模型。
B、适用最小二乘解的条件是:只要应变量y与自变量x的数据阵X满足线性关系即可。

  5.回归法曲线拟合的应用举例

t=[0,0.3,0.8,1.1,1.6,2.3]';
y=[0.5,0.82,1.14,1.25,1.35,1.40]';
x=[ones(size(t)),t,t.^2];
a=x\y
T=(0:0.1:2.5)';
Y=[ones(size(T)),T,T.^2]*a;
plot(T,Y,'O')
a =
   0.5318
   0.9191
  -0.2387

在这里插入图片描述

  6.插值介绍

插值就是在已知数之间寻找估计值。一般的,从各种试验得来的数据总是有一定的数量,而利用插值技术能够从有限的数据中获取系统整体的状态。因此,数据插值在各行各业,特别是信号处理领域内有着广泛的应用。MATLAB软件作为数据处理的优秀软件之一,自然提供了常用的各种数据插值计算的函数。

  7.一维插值的两种类型

A、多项式插值
格式:yi=interp1(x,y,xi,method)。xi用于插值的点;method指定插值的方法
B、基于傅里叶变换的一维插值
格式:y=interpfit(x,n)。x为含有周期函数值的矢量,并且为等间距点的个数,n为返回等间距点的个数。

  8. 一维插值中多项式插值的方法

一维插值中多项式插值的方法9.二维插值
格式:y=interp2(x,y,z,xi,yi,method)

  9.三种二维插值

插值说明
临近插值用分段连续的面来拟合已知数据,插入最邻近的点
双线性插值用分段的双线性来拟合已知数据
二重三次方插值通过已知数据拟合一个双立体面

  10.常用一维插值中多项式插值的指令

指令说明
y=interp1(x,y,x1,‘spline’)三次样条插值
y=interp1(x,y,x1,‘nearest’)临近插值
y=interp1(x,y,x1,‘linear’)线性插值
y=interp1(x,y,x1,‘cublic’)立方插值

三、仿真结果

1.给出两组数据x=[0 0.3 0.8 1.1 1.6 2.3]’ y=[0.82 0.72 0.63 0.60 0.55 0.50]’,我们可以简单的认为这组数据在一条衰减的指数函数曲线上,y=C1+C2exp(-x)通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示。
答:

>> x=[0 0.3 0.8 1.1 1.6 2.3]';
y=[0.82 0.72 0.63 0.60 0.55 0.50]';
x1=[ones(size(x)),exp(-x)];
c=x1\y
T=(0:0.1:10)';
y1=[ones(size(T)),exp(-T)]*c;
plot(T,y1, x,y,'*')
c =
   0.4760
0.3413

由程序结果可知衰减曲线的表达式:y1=0.4760+0.3413*exp(-t)

在这里插入图片描述
2.通过测量得到一组数据:

t12345678910
y4.8424.3623.7543.3683.1693.0833.0343.0163.0123.005

分别采用y1(t)= C1+C2exp(-t)和y2(t)= d1+d2t*exp(-t)进行拟合,并画出拟合曲线进行对比。
答:

>> t=[1:10]';
y=[4.842 4.362 3.754 3.368 3.169 3.083 3.034 3.016 3.012 3.005]';
x1=[ones(size(t)),exp(-t)];
c=x1\y
x2=[ones(size(t)),t.*exp(-t)];
d=x2\y
T=(0:0.1:10)';
y1=[ones(size(T)),exp(-T)]*c;
y2=[ones(size(T)),T.*exp(-T)]*d;
plot(T,y1,T,y2,t,y,'*'),
legend('y1(t)= C1+C2*exp(-t)','y2(t)= d1+d2*t*exp(-t)')
c =
   3.1621
   5.1961
d =
   3.0039
5.0046

由程序结果可知衰减曲线的表达式:y1=3.1621+5.1961exp(-t);y2=3.0039+5.0046t*exp(-t);
分析:从图中可以看出,曲线y2更加准确,与各点的误差较小
在这里插入图片描述
3.从某一个过程中通过测量得到:

t00.20.40.60.81.02.05.0
y1.01.511.882.132.292.402.60-4.00

分别采用多项式和指数函数进行曲线拟合。
答:采用三次多项式拟合以及指数函数y1=c1+c2*exp(-t)拟合,具体程序如下:

>> x=[0,0.2,0.4,0.6,0.8,1.0,2.0,5.0];
y=[1.0,1.51,1.88,2.13,2.29,2.40,2.60,-4.00];
p=polyfit(x,y,3)     %三次多项式拟合
xx=0:0.1:8;
yy=polyval(p,xx);
x1=[ones(size(x')),exp(-x')];   %指数函数拟合
c=x1\y'
T=(0:0.1:10)';
y1=[ones(size(T)),exp(-T)]*c;
plot(xx,yy,T,y1,x,y,'*')
legend('三次多项式拟合','指数函数y1=c1+c2*exp(-t)拟合')
p =
   0.0190   -0.7217    2.1198    1.0712
c =
  -0.0565
2.5674 

分析:从图中可以看出,三次多项式拟合更加准确,与各点的误差较小,而指数函数拟合误差很大,不适合该题
在这里插入图片描述

4.对应时间矢量t,测得一组矢量y

t00.30.81.11.62.3
y0.50.821.141.251.351.40

采用一个带有线性参数的指数函数进行拟合,y=a0+a1exp(-t)+a2t*exp(-t),利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。
答:

>> x=[0,0.3,0.8,1.1,1.6,2.3]';
y=[0.5,0.82,1.14,1.25,1.35,1.40]';
x1=[ones(size(x)),exp(-x),x.*exp(-x)];
c=x1\y
T=(0:0.1:5)';
y1=[ones(size(T)),exp(-T),T.*exp(-T)]*c;
plot(T,y1,x,y,'o')
c =
   1.3974
  -0.8988
   0.4097

由程序结果可知曲线的表达式:y=1.3974-0.8988exp(-t)+ 0.4097t*exp(-t)
在这里插入图片描述
5.某钢材厂从1990年到2010年的产量如下表所示,请利用三次样条插值的方法计算1999年该钢材厂的产量,并画出曲线,已知数据用星号表示。要求写出达到题目要求的MATLAB操作过程,不要去计算结果。

年份19901992199419961998200020022004200620082010
产量(万吨)75.9991.97105.71123.20131.66150.69179.32203.21226.50249.63256.34

答:

>> x=1990:2:2010;
y=[75.95,91.97,105.71,123.20,131.66,150.69,179.32,203.21,226.21,249.63,256.34];
x1=1990:0.01:2020;
y1=interp1(x,y,x1,'spline');
plot(x1,y1,x,y,'*')
y1=interp1(x,y,1999,'spline')
y1 =
 139.2732

在这里插入图片描述

四、实践中遇到的问题及解决方法

  1.问题:以上面第三题为例,多项式和指数函数进行曲线拟合时数组x和y分不清什么时候转置?
  解决办法:其中多项式拟合多为非转置,而指数函数拟合多为数组转置x’和y’。
  2.问题:回归法曲线拟合步骤的原理我开始一直不懂是为什么?
  解决办法:我询问了一下同学,明白了其实是利用解方程的原理来求解曲线式中未知的参数,其中ones(size(x))对应的是1。
  3.问题:有这麽一道题:数据具有y=x^2的变化趋势,用最小二乘法 求解y并画图。开始我以为只能用曲线拟合的方法做。
  解决办法:后来我明白了最小二乘解的求取方法同样适用于多项式模型,直接用多项式拟合求解即可。

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道无方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值