概述
在数学中,由若干个单项式相加组成的代数式叫做多项式(若有减法:减一个数等于加上它的相反数)。多项式中的每个单项式叫做多项式的项,这些单项式中的最高项次数,就是这个多项式的次数。其中多项式中不含字母的项叫做常数项。很显然,定义就是那么简单,并且,这个定义是在初中就已经学到过。然而,多项式的四则运算,求导,求值,等等一系列运算,用一个概括,那就是计算量大,尤其是多项式本身的规模就比较大时。
目录
1,两个多项式相加
2,两个多项式相乘
3,两个多项式相除
4,多项式求导
5,多项式求值
6,多项式求根
7,如何根据系数向量生成对应的多项式?
想想这样一个情景,有两个多项式,
一个是
另一个
而问题也很简单,就是把这两个多项式相加,相乘,求导,等等,显然,相加是非常容易解决,然而相乘就比较麻烦了,尽管运算规则简单。对于这种问题,我仍然记得自己在草纸上一步一步算的情景,屏幕前的你是否也有过类似经历?
不过,不要担心,办法总比困难多,今天我们就用matlab来解决这个问题。
对于一个多项式,
在matlab中,我们以这种向量形式来表示
注:
向量中多项式系数从高次到低次,顺序排列
缺项用0补足
向量长度为最高次数加1
1,两个多项式相加
%f1(x)=x^3+x^2+1,f2(x)=3*x^2+1
p1=[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+1
p1=[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+1
p1=[1,1,0,1];
p2=[3,0,1];
[Q,r]=deconv(p1,p2);%p1,p2不需要必须保持同型
disp(Q);
disp(r);
结果:
0.3333 0.3333
0 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+1
p1=[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,分母存于q
disp(r1);
disp(r2);
disp(p);
disp(q);
结果:
3 2 0
15 12 3 8 0
3 0 3 -4 0
9 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);
结果:
101
101 102
101 102
103 104
%ployvalm()
r4=polyvalm(p,[1,2;3,4]);
disp(r4);
结果:
101 2
3 104
解释:
以f(x)=x+100为例,来说明。当调用polyvalm(p,x)函数时,相当于
x+100*ones(size(x))。
也就把方阵带入时,把多项式的未知量全部换为了该
方阵,遵从矩阵运算法则,而常数项则为数量矩阵,也就是把原来的常数与一
个单位阵(与带入的矩阵同型)相乘。其它多项式与此相同。
6,多项式求根
roots(p)
p为多项式的系数向量
%x^2-2*x+1
a=[1,-2,1];
result=roots(a);
disp(result);
结果:
1
1
当然,如果已知一个多项式的所有根,我们就可通过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多项式计算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复