数学软件Matlab 多项式运算 代数方程求解 1
1 数学软件 Matlab —— 多项式运算 —— 代数方程求解
内容提要 ■多项式运算 ●多项式转化为符号表达式:poly2sym ●四则运算:conv、deconv ●导数与积分:ployder、polyint ●求值与零点:polyval、polyvalm、roots、poly ■代数方程求解 ●线性方程组数值求解:1 insolve ●非线性方程数值求解:fzero ●非线性方程符号求解:solve 2
2 多项式转化为符号表达式:poly2sym 四则运算:conv、deconv 导数与积分:ployder、polyint 求值与零点:polyval、polyvalm、roots、poly 多项式运算 内容提要 代数方程求解 线性方程组数值求解:linsolve 非线性方程数值求解:fzero 非线性方程符号求解:solve
多项式表示方法 ●Matlab中多项式的表示方法 ●在Matlab中,n次多项式用一个长度为n+1的向量来表示 p(x)=an”+an-1x"-+…+4,X+40 在Matlab中表示为向量:0n,n-1,·,41,] 例:2x3-x2+3←→[2,-1,0,3] 注:系数中的零不能省! ●多项式与符号表达式的互化:po1y2sym,sym2poly 例:po1y2sym([2,-1,0,3]) 3
3 多项式表示方法 在 Matlab 中,n 次多项式用一个长度为 n+1的向量来表示 1 1 10 ( ) n n n n p x ax a x ax a − = + ++ + − 在 Matlab中表示为向量: 1 10 [ , , , , ] n n aa aa − 注:系数中的零不能省! 例: 2x3 - x2 + 3 [2, -1, 0, 3] Matlab 中多项式的表示方法 多项式与符号表达式的互化:poly2sym, sym2poly 例: poly2sym([2,-1,0,3])
多项式加减 ● 多项式加减运算 Matlab没有提供专门进行多项式加减运算的函数 多项式的加减就是其所对应的系数向量的加减运算 ●次数相同的多项式,可直接对其系数向量进行加减运算 ●如果两个多项式次数不同,则应该把低次多项式中系数 不足的高次项用0补足,然后再进行加减运算 例: 卫1=2x3-x2 +3 [2,-1,0,3] P2= 2x+1 [0,0,2,1 p1+p2=2x3-x2+2x+4← [2,-1,2,4] 4
4 多项式加减 Matlab 没有提供专门进行多项式加减运算的函数 多项式的加减就是其所对应的系数向量的加减运算 次数相同的多项式,可直接对其系数向量进行加减运算 如果两个多项式次数不同,则应该把低次多项式中系数 不足的高次项用 0 补足,然后再进行加减运算 例: p1 = 2x3 - x2 + 3 p2 = 2x + 1 p1 + p2 = 2x3 - x2 + 2x + 4 [2, -1, 0, 3] [2, 1] [0, 0, 2, 1] [2, -1, 2, 4] 多项式加减运算
多项式乘除 ●多项式乘法运算: k=conv(p,q) 例:计算多项式2x3-x2+3和2x+1的乘积 p=[2,-1,0,3] q=[2,1]; k=conv(p,q) ●多项式除法运算: [k,r]=deconv(p,q) ●其中k返回的是多项式p除以q的商,下是余式 [k,r]=deconv(p,q) p=conv(q,k)+r
5 多项式乘除 k=conv(p,q) 例:计算多项式 2x3 - x2 + 3 和 2x + 1 的乘积 p=[2,-1,0,3]; q=[2,1]; k=conv(p,q) 多项式除法运算: [k,r]=deconv(p,q) 其中 k 返回的是多项式 p 除以 q 的商,r 是余式 [k,r]=deconv(p,q) p=conv(q,k)+r 多项式乘法运算:
多项式求导 ● 多项式求导:polyder k=polyder(p) 多项式p的导数 k=polyder(p,q) p*q的导数 [k,d]=polyder(p,q) p/q的导数,k是分子,d是分母 例:已知p1x)=2x-x2+3,p2)=2x+1 求:P1',(p1P2)',(p1/P2) k1=po1yder([2,-1,0,3]); k2=po1yder([2,-1,0,3],[2,1]); [k3,d]=po1yder([2,-1,0,3],[2,1]); 6
6 多项式求导 k1=polyder([2,-1,0,3]); k2=polyder([2,-1,0,3],[2,1]); [k3,d]=polyder([2,-1,0,3],[2,1]); 例:已知 p1(x) = 2x3 - x2 + 3,p2(x) = 2x + 1 求: p1 ’ ,( p1 p2 )’ , ( p1 /p2 )’ 多项式求导: polyder k=polyder(p) 多项式 p 的导数 k=polyder(p,q) p*q 的导数 [k,d]=polyder(p,q) p/q 的导数,k 是分子,d 是分母
多项式积分 ● 多项式积分:polyint I=polyint(p,c) 不定积分,常数项取c I=polyint(p) 不定积分,常数项取日 例:已知p(x)=2x3-x2+3 求∫p(x)dr,常数项取5 I=po1yint([2,-1,0,3],5);
7 多项式积分 多项式积分: polyint I=polyint(p,c) 不定积分,常数项取 c I=polyint(p) 不定积分,常数项取 0 I=polyint([2,-1,0,3],5); 例:已知 p(x) = 2x3 - x2 + 3 求 px x ( ) d ,常数项取 5 ∫
多项式求值 ●多项式求值:polyval y=polyval(p,x) 计算多项式p在x点的值 ●这里的x可以是向量或矩阵,此时采用的是数组运算! 例:已知px)=2x3-x2+3,计算p在x和y的每个分量上 的值,其中=2,Jy=[-1,2;-2,1] p=[2,-1,0,3] X=2; y=[-1,2;-2,1]; z1=polyval(p,x) z2=polyval(p,y) 8
8 多项式求值 多项式求值: polyval y=polyval(p,x) 计算多项式 p 在 x 点的值 这里的 x 可以是向量或矩阵,此时采用的是数组运算! p=[2,-1,0,3]; x=2; y=[-1, 2; -2,1]; z1=polyval(p,x) z2=polyval(p,y) 例:已知 p(x) = 2x3 - x2 + 3,计算 p 在 x 和 y 的每个分量上 的值,其中 x=2, y=[-1,2; -2,1]
矩阵多项式求值 ● 矩阵多项式求值: polyvalm Y=polyvalm(p,A) 计算多项式p作用在矩阵A上的值 ●这里的A必须是方阵,采用的是普通矩阵运算! 例:已知p(c)=2x3-x2+3,则 polyvalm(p,A)=2*A*A*A -A*A+3*eye(size(A)) polyval(p,A)=2*A.*A.*A-A.*A+3*ones(size(A)) p=[1,0,0];%p(x)=x2 x=[1,2;3,4] y1=polyval(p,x) y2=polyvalm(p,x) 9
9 矩阵多项式求值 矩阵多项式求值: polyvalm Y=polyvalm(p,A) 计算多项式 p 作用在矩阵 A 上的值 这里的 A 必须是方阵,采用的是普通矩阵运算! 例:已知 p(x) = 2x3 - x2 + 3 ,则 polyvalm(p,A)=2*A*A*A - A*A + 3*eye(size(A)) polyval(p,A) = 2*A.*A.*A - A.*A + 3*ones(size(A)) p=[1,0,0]; % p(x)=x2 x=[1, 2; 3, 4]; y1=polyval(p,x) y2=polyvalm(p,x)
多项式的零点 ● 多项式的零点: roots x=roots(p) 计算多项式p的所有零点 ●这里的x是由p的所有零点组成的向量 例:已知p)=2x3-x2+3,求p)的零点 p=[2,-1,0,3]; x=roots(p) ·若已知多项式的全部零点,则可用poy函数给出该多项式 p=poly(x) p(x)=(x-x)(x-x2).(x-x) 10
10 多项式的零点 多项式的零点: roots x=roots(p) 计算多项式 p 的所有零点 这里的 x 是由 p 的所有零点组成的向量 例:已知 p(x) = 2x3 - x2 + 3 ,求 p(x) 的零点 p=[2,-1,0,3]; x=roots(p) 1 2 ( ) ( )( ) ( ) n px x x x x x x =− − − 若已知多项式的全部零点,则可用 poly 函数给出该多项式 p=poly(x)