1.8.3 IF-ELSE-END 结构 在窗口键入sum=0; for m=1:100 if(sum>100) m sum break; end sum=sum+m; end 在窗口分别键入 m和sum回车可得:m = 15,sum= 105 1.9 曲线拟合和插值运算 1.9.1 曲线拟合 在许多应用领域中,人们经常需要从一系列已知离散点上的数据集得到一个 解析函数y=f(x),得到的解析函数f(x)应当在原离散点xi上尽可能接近给定的yi的 值。这一过程称为曲线拟合。最常用的曲线拟合是最小二乘法曲线拟合。拟合的 结果可使误差的平方和最小,即找出使 最小的f(x)。 在MATLAB中,函数polyfit求解最小二乘曲线拟合问题。为了用polyfit,我 们必须给函数赋予希望最佳拟合数据的多项式的阶次。如果我们选择n=1作为阶 次,得到最简单的线性近似。通常称为线性回归。相反,如果我们选择n=2作为 阶次,得到一个2阶多项式。 例如在窗口键入 x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1]; y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; 我们选择一个2阶多项式。在窗口键入p=polyfit(x, y, 2)回车可得 p = -9.8108 20.1293 -0.0317,其解是y = -9.8108x2 +20.1293x-0.0317。 1.9.1 曲线拟合 为了将曲线拟合解与数据点比较,我们把二者都绘成图。在窗口键入 xi=linspace(0, 1, 100); z=polyval(p, xi);调用MATLAB的函数polyval计算在xi数 据点的多项式值。在窗口键入 plot(x, y, ' o ' , x, y, xi, z, ' : ' ) xlabel(' x '), ylabel(' y=f(x) '), title(' Second Order Curve Fitting ') 回车可得图1。 1.9.1 曲线拟合 多项式阶次的选择是有点任意的。两点决定一直线或一阶多项式。三点决定 一个平方或2阶多项式。按此进行,n+1数据点唯一地确定n阶多项式。于是,在 上面的情况下,有11个数据点,我们可选一个高达10阶的多项式。然而,高阶多 项式给出很差的数值特性,不应选择比所需的阶次高的多项式。例如,选一个10 阶多项式,在窗口键入 pp=polyfit(x, y, 10); zz=polyval(pp, xi); plot(x, y, ' o ' , xi, z, ' : ' , xi, zz) xlabel(' x ' ), ylabel(' y=f(x) ' ), title(' 2nd and 10th Order curve Fitting ' )可得下图 原始数据标以‘o’,2阶曲线拟合是虚线, 10阶拟合是实线。注意,在10阶拟合中, 在左边和右边的极值处,数据点之间出 现大的纹波。当企图进行高阶曲线拟合 时,这种纹波现象经常发生。显然,‘阶 数越多就越好 ’的观念在这里不适用。 1.9.2 插值运算 与曲线拟合不同,插值运算不是试图找出适合于所有自变量的数组x的全局最 优拟合函数y=f(x),而是对数据点之间函数的估值方法。根据自变量的维数不同, 插值方法可以分为一维插值y=f(x)和二维插值y=f(x,y)等。 一维插值 最简单插值的例子是MATLAB的作图。按缺省,MATLAB用直线连接所有 的数据点以作图。这个线性插值猜测中间值落在数据点之间的直线上。当然,当 数据点个数增加和它们之间距离减小时,线性插值就更精确。在窗口键入 x1=linspace(0, 2*pi, 60);x2=linspace(0,
matlab 毕业答辩,MATLAB的答辩.ppt
最新推荐文章于 2021-10-27 23:57:44 发布