我是靠谱客的博主 直率帅哥,最近开发中收集的这篇文章主要介绍快速提高计算能力——matlab多项式计算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数学中,由若干个单项式相加组成的代数式叫做多项式(若有减法:减一个数等于加上它的相反数)。多项式中的每个单项式叫做多项式的项,这些单项式中的最高项次数,就是这个多项式的次数。其中多项式中不含字母的项叫做常数项。很显然,定义就是那么简单,并且,这个定义是在初中就已经学到过。然而,多项式的四则运算,求导,求值,等等一系列运算,用一个概括,那就是计算量大,尤其是多项式本身的规模就比较大时

目录

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.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+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     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+1a=[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多项式计算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部