第四章MATLAB的数学运算要点
第四章 MATLAB的数学运算 MATLAB可以进行很多的数学运算, 如:多项式、线性插值、傅里叶变换和微分 方程等。 教学内容 多项式与插值 函数运算 微分方程 应用实例 —— 分析火箭数据 (了解) 4.1 多项式与插值 MATLAB提供了一些专门用于处理多项 式的函数,用户可以应用这些函数对多项式 进行操作。 MATLAB中对多项式的操作包括: 多项式求根、多项式的四则运算及其多项式 的微积分。 4.1.1 多项式的表示 在MATLAB中多项式用一个行向量表示,向 量中的元素为该多项式的系数,按照次数降序排 列。 例如: >> p=[4,3,6,9] p = 4 3 6 9 >> y=poly2sym(p) y = 4*x^3+3*x^2+6*x+9 >> sym2poly(x^3 - 2*x - 5) ans = 1 0 -2 -5 4.1.2 多项式的四则运算 多项式是用向量表示,多项式的四则运算可以转化为向量的运算。 1. 多项式的加减即为对应项系数的加减。 2. 多项式的乘法实际上是多项式系数向量之间的卷积运算,可以通过MATLAB中的卷积函数conv来完成。 3. 多项式的除法为乘法的逆运算,可以通过反卷积函数deconv来实现。 编写一个多项式加,减的函数mmpadd function p=mmpadd(a,b) % MMPADD Polynomial addition. % MMPADD(A,B) adds the polynomial A and B % Copyright (c) 1996 by Prentice Hall,Inc. if nargin<2 error(' Not enough input arguments ') end a=a(:).' ; % make sure inputs are polynomial row vectors b=b(:).' ; na=length(a) ; % find lengths of a and b nb=length(b) ; p=[zeros(1,nb-na) a]+[zeros(1,na-nb) b] ; % add zeros as necessary 4.1.3 多项式的其他运算 1:roots函数 功能:用于求解多项式的根。 输入参数:多项式系数组成的行向量 返回值:多项式根组成的列向量 例:rootTest.m >> rootTest p = 1 -6 11 -6 y = x^3-6*x^2+11*x-6 ans = 3.0000 2.0000 1.0000 2. polyval函数 功能:用于求解多项式在任意点的值。 例: >> p=[4 3 2 1] p = 4 3 2 1 >> polyval(p,4) ans = 313 >> poly2sym(p) ans = 4*x^3+3*x^2+2*x+1 3. polyder函数 功能:多项式求导。 可以求解一个多项式的导数、两个多项式乘 积的导数和两个多项式商的导数。 q=polyder(p):计算多项式p的导数。 c=polyder(a,b):计算多项式a,b的积的导数 [q,d]=polyder(a,b):实现多项式a,b的商的导 数,q/d为最后的结果。 4. 多项式拟合 polyfit().: 曲线拟合是工程中经常用到的技术之一。 MATLAB提供了曲线拟合的工具箱满足用户的要 求,同时也提供了多项式拟合函数polyfit(). 调用格式:p=polyfit(x,y,n) x,y为待拟合数据的x坐标和y坐标,n用于指 定返回多项式的次数。 例:polyfitTest.m 4.1.4 数据插值 插值运算是根据已有数据的分布规律,找到一个可以连接起已知各点的函数表达式,并用这个插值函数来预测已有数据两点之间任意位置上的数据。 MATLAB提供了对数组的任意一维进行插值的工具,这些工具大多数需要用到多维数组的操作,本节介绍一维插值的函数interp1()。 函数的调用格式为: yi=interp1(x,y,xi,’method’) interp1默认的插值方法为线性的。 插值运算中可选的’method’为: 四种方法的比较: 程序interpoly.m 程序:利用一天12个小时的温度数据,做时间-温度曲线, 并计算某个时间