matlab 多项式处理(一)

matlab中使用一维向量来表示多项式,将多项式的系数按照降幂次序存放在行向量中,多项式中缺少的幂次的系数为0。
创建函数文件,将向量表示的多项式用字符串输出的函数:

%polynomial printf
function s=pprintf(p)
if nargin>1
    error('too much input arguements')
end
%确认输入变量
while p(1)==0
    p(1)=[];
end
%将高次的零去掉
l=length(p)%计算p的长度
if l==0
    s='0';
elseif l==1
    s=num2str(p(1));
elseif l==2
    s=strcat(num2str(p(1)),'x+',num2str(p(2)));
elseif l>2
    for i=1:l
        if i==1
            if p(i)==1
                s=strcat('x^{',num2str(l-i),'}');
            else
                s=strcat(num2str(p(i)),'x^{',num2str(l-i),'}');
            end
        elseif i==l
            s=strcat(s,'+',num2str(p(i))')
        elseif i==l-1
            s=strcat(s,'+',num2str(p(i)),'x');
        else
            if p(i)==0
            else
                s=strcat(s,'+',num2str(p(i)),'x^{',num2str(l-i),'}');
            end
        end
    end
end

    

在命令行输入多项式处理命令:

p=[1 2 3];
s=@pprintf;
s(p)%pprintf(p);

输出结果如下:
在这里插入图片描述

 r=roots(p)%求解多项式的根(列向量)

输出结果如下:
在这里插入图片描述

 p=poly(r)%给出多项式的跟,构造出相应的多项式

输出结果如下:
在这里插入图片描述
多项式的四则运算
(1)加

a=[1 3 5 7 9];
b=[1 2 4 6 8];
c=a+b

输出结果如下:
在这里插入图片描述
(2)乘,两个数组的卷积

a=[1 3 5 7 9];
b=[1 2 4 6 8];
 c=conv(a,b)

输出结果如下:
在这里插入图片描述
(3)除

c=[2 4 5 2 67 8 3];
b=[2 2 4];
[a,r]=deconv(c,b)

输出结果如下:
在这里插入图片描述
(4)导数

c=[2 4 5 2 67 8 3];
d=polyder(c)

输出结果如下:
在这里插入图片描述
(5)积分
polyint(p,k);其中参数p为多项式积分项的系数,k为多项式的积分常量,对于积分常量,如果为0,这可以在括号中不写参数k。

a=[1 3 5 7 9];
 b=polyint(a)

输出结果如下:
在这里插入图片描述

比如若要求积分
在这里插入图片描述

p=[1 2 3];
a = 1;
b = 4;
A= diff(polyval(polyint(p),[a b]));

输出结果如下:
在这里插入图片描述
总结:
在这里插入图片描述
在这里插入图片描述


版权声明:本文为Zybhcl原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。