第四章数值计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章数值计算
《MATLAB仿真与应用》
实验报告
第四章数值计算
一、实验目的
1、熟悉根据已知数据进行回归法曲线拟合
2、熟悉根据已知数据进行多项式曲线拟合
3、熟悉根据已知数据利用指定方法进行数据插值(临近插值、线性插值、立方插值、三次样条插值)
4、熟悉脚本文件和函数文件的概念,各自的特点,以及二者的区别
5、熟悉主函数和私有函数的特点
6、了解Matlab编程的特点
二、实验内容
1、多项式拟合 x已知自变量的取值 y相应的函数值 n多项式的系数
p=polyfit(x,y,n)
2、多项式计算求值函数 p=polyval(p,x2)
3、产生图例legend(‘fitting’,’origin’)
4、多项式插值 yi=interp1(x,y,xi,method)
5、外插运算yi=interp1(x,y,xi,method,’extrap’)
6、二维插值 y=interp2(x,y,z,xi,yi,method)
7、临近插值ynearest=interp1(time,temp,xi,’nearest’)
8、线性插值 ylinear=interpre1(time,t emp,xi,’linear’)
9、立方插值ycublic=interp1(time,temp,xi,’cublic’)
10、三次样条插值yspline=interp1(time,temp,xi,’spline’)
11、延时函数 pause
12、比较 function compare_interp()
13、一个典型多元函数 peaks
14、数组A、B共同产生网格[A,B]= meshgrid(A,B)
15、将多个图画到一个平面 subplot
16、绘制矩阵的等高线 contour
三、思考练习题
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+C2e^-t通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示
>> x=[0 .3 .8 1.1 1.6 2.3]';y=[0.82 0.72 0.63 0.60 0.55 0.50]';
>> X=[ones(size(x)) exp(-x)];
>> c=X\y
c =
0.4760
0.3413
>> T=(0:0.1:2.5)';Y=[ones(size(T)) exp(-T)]*c;
>> plot(T,Y,'-',x,y,'*')
2、通过测量得到一组数据
t 1 2 3 4 5 6 7 8 9 10
y 4.842 4.362 3.754 3.368 3.169 3.083 3.034 3.016 3.012 3.005 分别采用y1(t)=C1+C2e^-t和y2(t)=d1+d2te^-t进行拟合,并画出拟合曲线进行对比
t=(1: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
c =
3.1621
5.1961
>> X2=[ones(size(t)) t.*exp(-t)];
>> d=X2\y
d =
3.0039
5.0046
T=(1:0.1:10)';Y1=[ones(size(T)) exp(-T)]*c;plot(T,Y1,'-',t,y,'o')
T=(1:0.1:10)';Y2=[ones(size(T)) T.*exp(-T)]*d;plot(T,Y2,'-',t,y,'o')
3、从某一个过程中通过测量得到:
t 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 分别采用多项式拟合和指数函数进行拟合。

>> t=[0 .2 .4 .6 .8 1.0 2.0 5.0]';y=[1.0 1.51 1.88 2.13 2.29 2.40 2.60 -4.00]'; >> x=[ones(size(t)) t t.^2];
>> a=x\y;
>> T=(0:0.1:5.0)';Y=[ones(size(T)) T T.^2]*a;
>> plot(T,Y,'-',t,y,'O')
>> x=[ones(size(t)) exp(-t) t.*exp(-t)];
>> a=x\y;
>> T=(0:0.1:5.0)';Y=[ones(size(T)) exp(-T) T.*exp(-T)]*a;
>> plot(T,Y,'-',t,y,'O')
4、对应时间矢量t,测得一组矢量y
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
采用一个带有线性参数的指数函数进行拟合,y=a0+a1e^-t+a2te^-t,利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。

>> t=[0 .3 .8 1.1 1.6 2.3]';y=[0.5 0.82 1.14 1.25 1.35 1.40]';
>> x=[ones(size(t)) exp(-t) t.*exp(-t)];a=x\y
1.3974
-0.8988
0.4097
>> T=(0:0.1:2.5)';X=[ones(size(T)) exp(-T) T.*exp(-T)]*a;
>> plot(T,X,'-',t,y,'o')
5、某钢材厂的产量从1990到2010年的产量如下表所示,请利用三次样条插值的方法1999年该钢材厂的产量,并画出曲线,已知数据用‘*’表示。

>> t=1990:2:2010;y=[75.995 91.972 105.711 123.203
131.669 150.697 179.323 203.212 226.505 249.633 256.344]';interp1(t,y,1999,'spline')
139.2796
>> T=(1990:0.2:2010)';Y=interp1(t,y,T,'spline');plot(t,y,'*',T,Y,'-')
四、实践中遇到的问题及解决方法
1、混淆曲线拟合编程步骤
在进行实际操作中,无法对每一条指令的作用做到特别了解,并且经过反复的操作,并询问同学,掌握了曲线拟合的指令。

2、插值各种算法不理解内涵
插值种类很多,查阅网络资料例子,并询问同学,互相讨论,最终了解各种算法的意义与实际应用方式。

3、错误使用polyval
使用时输入了过多的参数
4、polyfit
使用该函数时,误将()打成[],报错:圆括号或方括号不对称或异常
4、M函数语句与算法
由于在前几章并未过多接触M文件,对于Matlab编程本身掌握甚少。

在例子中出现的多个语句例如meshigrid、surfc、figure(2)、,其中包括数据可视化的概念。

为了快速了解并掌握,进行了借鉴网络资料的步骤,通过对一些查阅到的例子进行理解与操作,使得自己在M文件、编程内容有了些许的掌握,但是想要熟练运用,应当更广泛学习并多加练习。

相关文档
最新文档