资源描述:
《第三讲-matlab-的符号运算.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、曲线拟合与插值在大量的应用领域中,人们经常面临用一个解析函数描述数据(通常是测量值)的任务。对这个问题有两种方法。在拟合法里,人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。拟合:虚线和标志的数据点之间的垂直距离是在该点的误差。对各数据点距离求平方,并把平方距离全加起来,就是误差平方和。这条虚线是使误差平方和尽可能小的曲线,即是最佳拟合。最小二乘这个术语仅仅是使误差平方和最小的省略说法。在MATLAB中,函数polyfit求解最小二乘曲线拟合问题。为了用polyfit,
2、我们必须给函数赋予上面的数据和我们希望最佳拟合数据的多项式的阶次或度。如果我们选择n=1作为阶次,得到最简单的线性近似。通常称为线性回归。相反,如果我们选择n=2作为阶次,得到一个2阶多项式。»x=[0.1.2.3.4.5.6.7.8.91];»y=[-.4471.9783.286.167.087.347.669.569.489.3011.2];»n=2;%polynomialorder»p=polyfit(x,y,n)p=-9.810820.1293-0.0317polyfit的输出是一个多项式系数的行向量。其解是y=-9.8108x2+20.1293x-0
3、.0317。为了将曲线拟合解与数据点比较,把二者都绘成图。为了计算在xi数据点的多项式值,调用MATLAB的函数polyval。»xi=linspace(0,1,100);%x-axisdataforplotting»z=polyval(p,xi);»plot(x,y,'o',x,y,xi,z,':')插值:对数据点之间函数的估值方法,这些数据点是由某些集合给定。当人们不能很快地求出所需中间点的函数值时,插值是一个有价值的工具。例如,当数据点是某些实验测量的结果或是过长的计算过程时,就有这种情况。按缺省,MATLAB用直线连接所用的数据点以作图。这个线性插值猜
4、测中间值落在数据点之间的直线上。»x1=linspace(0,2*pi,60);»x2=linspace(0,2*pi,6);»plot(x1,sin(x1),x2,sin(x2),'-')»xlabel('x'),ylabel('sin(x)'),title('LinearInterpolation')interp1的缺省用法是由interp1(x,y,xo)来描述,这里x是独立变量(横坐标),y是应变量(纵坐标),xo是进行插值的一个数值数组。另外,该缺省的使用假定为线性插值。若不采用直线连接数据点,可采用某些更光滑的曲线来拟合数据点。最常用的方法是用一个
5、3阶多项式,即3次多项式,来对相继数据点之间的各段建模,每个3次多项式的头两个导数与该数据点相一致。这种类型的插值被称为3次样条或简称为样条。函数interp1也能执行3次样条插值。这种类型的插值被称为3次样条或简称为样条。函数interp1也能执行3次样条插值。二维插值是基于与一维插值同样的基本思想。,二维插值是对两变量的函数z=f(x,y)进行插值。MATLAB的符号运算——matlab不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包SymbolicMathToolbox符号运算的功能符号表达式、符号矩阵的创建符号线性代数因式分解、展
6、开和简化符号代数方程求解符号微积分符号微分方程一、符号运算的基本操作什么是符号运算与数值运算的区别※数值运算中必须先对变量赋值,然后才能参与运算。※符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。特点:运算对象可以是没赋值的符号变量可以获得任意精度的解SymbolicMathToolbox——符号运算工具包通过调用Maple软件实现符号计算的。maple软件——主要功能是符号运算,它占据符号软件的主导地位。2.符号变量与符号表达式f='sin(x)+5x'f——符号变量名sin(x)+5x——符号表达式''——符号标识符号表达式一定要用''单
7、引号括起来matlab才能识别。''的内容可以是符号表达式,也可以是符号方程。例:f1='ax^2+bx+c'——二次三项式f2='ax^2+bx+c=0'——方程f3='Dy+y^2=1'——微分方程※符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算3.符号矩阵的创建数值矩阵A=[1,2;3,4]A=[a,b;c,d]——不识别用matlab函数sym创建矩阵(symbolic的缩写)命令格式:A=sym('[]')※符号矩阵内容同数值矩阵※需用sym指令定义※需用''标识例如:A=sym('[a,2*b;3*a
8、,0]')A=[a,2*b][3*a,