在数学中,由若干个单项式相加组成的代数式叫做多项式(若有减法:减一个数等于加上它的相反数)。多项式中的每个单项式叫做多项式的项,这些单项式中的最高项次数,就是这个多项式的次数。其中多项式中不含字母的项叫做常数项。很显然,定义就是那么简单,并且,这个定义是在初中就已经学到过。然而,多项式的四则运算,求导,求值,等等一系列运算,用一个概括,那就是计算量大,尤其是多项式本身的规模就比较大时。
目录
1,两个多项式相加
2,两个多项式相乘
3,两个多项式相除
4,多项式求导
5,多项式求值
6,多项式求根
7,如何根据系数向量生成对应的多项式?
想想这样一个情景,有两个多项式,
一个是

另一个

而问题也很简单,就是把这两个多项式相加,相乘,求导,等等,显然,相加是非常容易解决,然而相乘就比较麻烦了,尽管运算规则简单。对于这种问题,我仍然记得自己在草纸上一步一步算的情景,屏幕前的你是否也有过类似经历?
不过,不要担心,办法总比困难多,今天我们就用matlab来解决这个问题。
对于一个多项式,

在matlab中,我们以这种向量形式来表示

注:
向量中多项式系数从高次到低次,顺序排列
缺项用0补足
向量长度为最高次数加1
1,两个多项式相加
%f1(x)=x^3+x^2+1,f2(x)=3*x^2+1p1=[1,1,0,1];p2=[3,0,1];result=p1+[0,p2];%保持两个向量同型,缺项补零disp(result);结果:1 4 0 2
减法同上。
2,两个多项式相乘
conv(p1,p2)
p1,p2为两个多项式系数向量,返回值为系数向量
%f1(x)=x^3+x^2+1,f2(x)=3*x^2+1p1=[1,1,0,1];p2=[3,0,1];result=conv(p1,p2);%p1,p2不需要必须保持同型disp(result);结果:3 3 1 4 0 1
3,两个多项式相除
[Q,r]=deconv(p1,p2)
p1,p2为两个多项式系数向量,这里是p1除以p2,,Q是商式,r是余式,两个
都为系数向量。
%f1(x)=x^3+x^2+1,f2(x)=3*x^2+1p1=[1,1,0,1];p2=[3,0,1];[Q,r]=deconv(p1,p2);%p1,p2不需要必须保持同型disp(Q);disp(r);结果:0.3333 0.33330 0 -0.3333 0.6667
4,多项式求导
polyder(p1)
求p1对应多项式的导函数,返回值为系数向量。
polyder(p1,p2)
求p1,p2对应多项式相乘的导函数,返回值为系数向量。
[a,b]=polyder(p1,p2)
求p1,p2对应多项式相除的导函数,分子存入a,分母存入b
%f1(x)=x^3+x^2+1,f2(x)=3*x^2+1p1=[1,1,0,1];p2=[3,0,1];r1=polyder(p1); %求多项式f1的导函数r2=polyder(p1,p2); %求多项式f2的导函数[p,q]=polyder(p1,p2); %求f1/f2的导函数,导函数分子存于p,分母存于qdisp(r1);disp(r2);disp(p);disp(q);结果:3 2 015 12 3 8 03 0 3 -4 09 0 6 0 1
5,多项式求值
polyval(p,x)
p为多项式向量,x可以是标量,向量,或矩阵,
若x为标量,则求多项式在该点的值
若x为向量或矩阵,则对向量或矩阵中的每个元素求多项式的值。
polyvalm(p,x)
矩阵多项式求值,x为方阵,以方阵为自变量求多项式的值。
%f(x)=x+100;p=[1,100];%标量r1=polyval(p,1);%向量r2=polyval(p,[1,2]);%矩阵r3=polyval(p,[1,2;3,4]);disp(r1);disp(r2);disp(r3);结果:101101 102101 102103 104%ployvalm()r4=polyvalm(p,[1,2;3,4]);disp(r4);结果:101 23 104
解释:
以f(x)=x+100为例,来说明。当调用polyvalm(p,x)函数时,相当于
x+100*ones(size(x))。
也就把方阵带入时,把多项式的未知量全部换为了该
方阵,遵从矩阵运算法则,而常数项则为数量矩阵,也就是把原来的常数与一
个单位阵(与带入的矩阵同型)相乘。其它多项式与此相同。
6,多项式求根
roots(p)
p为多项式的系数向量
%x^2-2*x+1a=[1,-2,1];result=roots(a);disp(result);结果:11
当然,如果已知一个多项式的所有根,我们就可通过poly()函数来得到该多项
式(相差常数倍),准确的应是系数向量。
p=poly(r)
r为根向量,p为原多项式的系数向量
result=[1,1];p=poly(result);disp(p);结果:1 -2 1
7,如何根据系数向量生成对应的多项式?
poly2sym(p,sym('变量'))
p为系数向量,变量可以为x,t,等等,根据自己需自行设置要即可。
p=[1,-2,1];f1=poly2sym(p,sym('x'));disp(f1);结果:x^2 - 2*x + 1------------------------f2=poly2sym(p,sym('t'));disp(f2);结果:t^2 - 2*t + 1
这些操作可以使得我们的计算又快又对,开始时提出的问题便很容易被解决,然而这些内容想要灵活运用,必然是需要大量练习的。其中有一些关键点,只有自己亲自编码才会更加有体会!
最后
以上就是直率帅哥最近收集整理的关于快速提高计算能力——matlab多项式计算的全部内容,更多相关快速提高计算能力——matlab多项式计算内容请搜索靠谱客的其他文章。
发表评论 取消回复