第4章MATLAB数值计算与符号计算 4.1曲线拟合与插值运算 4.2数值微积分 4.3线性方程组求解 4.4常微分方程的数值求解 4.5 MATLAB符号计算 4.6级数 1
1 第4章 MATLAB数值计算与符号计算 4.1 曲线拟合与插值运算 4.2 数值微积分 4.3 线性方程组求解 4.4 常微分方程的数值求解 4.5 MATLAB符号计算 4.6 级数
4.1曲线拟合与插值运算 ■1.多项式的建立与表示方法 在MATLAB中,n次多项式用一个长度为n+1的 行向量表示,其元素为多项式的系数,按降幂 排列,缺少的幂次项系数为0。 ■例如,多项式x4-12x3+0x2+25x+116 在MATLAB中用向量p=[1-12025116]表示。 2
2 4.1 曲线拟合与插值运算 1.多项式的建立与表示方法 在MATLAB中,n次多项式用一个长度为n + 1的 行向量表示,其元素为多项式的系数,按降幂 排列,缺少的幂次项系数为0。 例如,多项式 在MATLAB中用向量p=[1 -12 0 25 116]表示。 4 3 2 x x x x 12 0 25 116
2.多项式的运算 (1)多项式的加减运算 多项式的加减运算就是其所对应的系数向 量的加减运算。 相加减的多项式必须表示成相同的次数, 如果次数不同,应该把低次的多项式不足 的高次项用0补足。 3
3 2.多项式的运算 (1) 多项式的加减运算 多项式的加减运算就是其所对应的系数向 量的加减运算。 相加减的多项式必须表示成相同的次数, 如果次数不同,应该把低次的多项式不足 的高次项用0补足
(2) 多项式的乘除运算 命令w=conv(u,v)表示多项式u和v相乘, 例如:u=1234],v=[102030] ■相当于(x3+2x2+3x+4)10x2+20x+30) c=conv(u,v) ■C ■ 10 40 100 160 170 120 4
4 (2) 多项式的乘除运算 命令w=conv(u, v)表示多项式u和v相乘, 例如:u=[1 2 3 4], v=[10 20 30] 相当于 c=conv(u, v) c= 10 40 100 160 170 120 ( 2 3 4)(10 20 30) 3 2 2 x x x x x
conv指令可以嵌套使用,如conv(conv(a,b),c)。 命令[q,r=deconv(y,u)表示u整除v。向量q表示 商,向量r表示余,即有v=conv(u,q)+r。 ■例如[q,r]=deconv(c,u) ■q=102030 ■r=0 0 0 0 0 0 5
5 conv指令可以嵌套使用,如conv(conv(a, b), c)。 命令[q, r]=deconv(v, u)表示u整除v。 向量q表示 商,向量r表示余, 即有v=conv(u, q)+r。 例如 [q,r]=deconv(c,u) q =10 20 30 r = 0 0 0 0 0 0
(3)多项式的导函数 对多项式求导数函数有: ■k=polyder(p),返回多项式p的导函数; ■k=polyder(a,b),返回多项式a与b的乘积的导 函数; [q,d]=polydert(b,a),返回多项式b整除a的导函 数,其分子多项式返回给q,分母多项式返回 给d。 6
6 (3) 多项式的导函数 对多项式求导数函数有: k=polyder(p),返回多项式p的导函数; k=polyder(a, b),返回多项式a与b的乘积的导 函数; [q, d]=polyder(b, a),返回多项式b整除a的导函 数,其分子多项式返回给q,分母多项式返回 给d
例如,求(3x2+6x+9)x2+2x)的导数 ■a=[369];b=[120]; ■k=polyder(a,b) ■k=123642 18 ■即为 12x3+36x2+42x+18 ■[q,d]=polyder(a,b) ■q=-18-18 ■d=144 0 0
例如,求(3x2+6x+9)(x2+2x)的导数 a=[3 6 9]; b=[1 2 0]; k=polyder(a,b) k = 12 36 42 18 即为 [q,d]=polyder(a,b) q = -18 -18 d = 1 4 4 0 0 12 36 42 18 3 2 x x x
(4)多项式求值 MATLAB中提供了两种求多项式值的函数。 y=polyval(p,x),代数多项式函数求值,若x为一数值, 则求多项式在该点的值;若x为向量或矩阵,则对向量或 矩阵中的每个元素求其多项式的值。 ■y=polyvalm(p,x),矩阵多项式求值, 要求x为方阵。 设A为方阵,p代表多项式x35x2+8,那么 polyvalm(p,A)的含义是 A*A*A-5*A*A+8*eye(size(A)) a 而polyval(p,A)的含义是 A.*A.*A-5*A.*A+8*ones(size(A)) 8
8 (4) 多项式求值 MATLAB中提供了两种求多项式值的函数。 y=polyval(p, x),代数多项式函数求值,若x为一数值, 则求多项式在该点的值;若x为向量或矩阵,则对向量或 矩阵中的每个元素求其多项式的值。 y=polyvalm(p, x),矩阵多项式求值,要求x为方阵。 设A为方阵,p代表多项式x 3 -5x 2+8,那么 polyvalm(p, A)的含义是 A*A*A-5*A*A+8*eye(size(A)) 而polyval(p, A)的含义是 A.*A.*A-5*A.*A+8*ones(size(A))
例4.1多项式P=x4-29x3+72x2-29x+1,以4阶 pascal矩阵为自变量分别用polyvalz和polyvalm计算 该多项式的值。 在命令窗口输入如下命令: p=[1-297 2-291]; X-pascal(4); A-polyval(p,X),B-polyvalm(p,X) A= B= 16 16 16 16 0 0 0 0 16 15 -140 -563 0 0 0 0 16 -140 -2549 -12089 0 0 0 0 16 -563 -12089 -43779 0 0 0 0 9
9 例4.1 多项式P = x 4 -29x 3 + 72x 2 - 29x + 1,以4阶 pascal矩阵为自变量分别用polyval和polyvalm计算 该多项式的值。 在命令窗口输入如下命令: p= [1 -29 72 -29 1]; X=pascal(4); A=polyval(p, X), B=polyvalm(p, X) A= 16 16 16 16 16 15 -140 -563 16 -140 -2549 -12089 16 -563 -12089 -43779 B= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
■(5)多项式的根 ■使用函数roots可以求出多项式等于O的根,根用 列向量表示,其调用格式为 ■r=roots(p) 若己知多项式等于O的根,函数poly可以求出相 应多项式,调用格式为 ■p=poly(r) 10
10 (5) 多项式的根 使用函数roots可以求出多项式等于0的根,根用 列向量表示,其调用格式为 r=roots(p) 若已知多项式等于0的根,函数poly可以求出相 应多项式,调用格式为 p=poly(r)