精华内容
下载资源
问答
  • %计算多项式在【-3,4】区间的微分 %多项式为y=x^4-3x^3+7x^2+2x-8 x=linspace(-3,4);%产生100 个x 的离散点 p=[1 -3 7 2 -8]; f=polyval(p,x); subplot(2,1,1); plot(x,f); title('多项式方程'); differential=diff...
    %计算多项式在【-3,4】区间的微分
    %多项式为y=x^4-3x^3+7x^2+2x-8
    x=linspace(-3,4);%产生100 个x 的离散点
    p=[1 -3 7 2 -8];
    f=polyval(p,x);
    subplot(2,1,1);
    plot(x,f);
    title('多项式方程');
    differential=diff(f)./diff(x);
    xd=x(2:length(x))
    subplot(2,1,2);
    plot(xd,differential);
    title('多项式方程的微分图');

    结果如图所示:
    MATLAB实现多项式微分 <wbr>【例】

    转载于:https://www.cnblogs.com/dreamsyeah/archive/2013/03/04/5878539.html

    展开全文
  • matlab开发-多项式微分方程。多项式除法是直接由卷积得到的。
  • MATLAB 多项式与微积分

    2020-06-29 19:28:48
    MATLAB中表示为:[an a(n-1) ... a1 a0] #注意:最后1项一定是a0,第1项是系数不为0的最高次项的系数 #如果某项的系数为0,也不能省略 #实例: %多项式x^3 - 2 * x - 5 >> p = [1 0 -2 -5]; 2.计算多项式的值: ...

    一.多项式和函数
    1.多项式的表示:

    多项式:an * x^n + a(n-1) * x^(n-1) + ... + a1 * x + a0
    MATLAB中表示为:[an a(n-1) ... a1 a0]
      #注意:最后1项一定是a0,第1项是系数不为0的最高次项的系数
      #如果某项的系数为0,也不能省略
    
    #实例:
    %多项式x^3 - 2 * x - 5
    >> p = [1 0 -2 -5];
    

    2.计算多项式的值:

    [<y>[,<delta>]] = polyval(<p>,<x>[,<S>,<mu>]):计算多项式在指定位置的值
      #参数说明:详情参见官方文档
        p:指定多项式(多项式表示方法见上)
        x:指定要计算在哪些位置的值(即多项式中的x的值);为num/num array
        S:使用polyfit()生成的可选输出结构体S来生成误差估计值
        y:返回结果;为num/num array
        delta:使用p(x)预测x处的未来观测值时的标准误差估计值
        mu:使用polyfit()生成的可选输出mu来中心化和缩放数据
          #详情参见官方文档
          #如果要在指定该参数的同时不指定S,S的位置应使用[ ]来占位
    
    #实例:
    >> p = [3 2 1];
    >> x = [5 7 9];
    >> y = polyval(p,x)
    y = 1×3
    
        86   162   262
    
    

    3.函数的表示:

    <f> = @(<x1>[,<x2>...])<func_expr>:定义函数
      #参数说明:
        x1,x2...:指定自变量
        func_expr:指定函数表达式(其中的自变量应∈(x1,x2...))
        f:函数句柄;用于调用函数
    
    #注意:定义函数都是在直角坐标系下进行的,如果要使用极坐标系,需进行如下转换
    >> polarfunc = @(theta,r) fun(r.*cos(theta),r.*sin(theta)).*r
    
    @(<x1>,<x2>...)<f>([<x1>,<c1>...]):执行函数
      #参数说明:
        f:之前定义的函数;为函数句柄
        x1,x2...:调用时作为未知数的自变量(即参与运算的自变量)
        c1,c2...:调用时作为常数的自变量(即不参与运算的自变量)
          #但是传入的不一定是常数
    
    #实例:
    >> fun = @(x,c) 1./(x.^3-2*x-c);%定义了2个自变量x,c
    >> q = integral(@(x)fun(x,5),0,2)%x传入的是未知数x,c传入的是常数5
    q =
    
         -0.4605
    

    二.多项式的微分与积分
    1.求多项式的导数:

    <k> = polyder(<p>):计算多项式的导数
      #即k(x)=d[p(x)]/dx
      #参数说明:
        p:指定多项式
        k:返回结果
    <k> = polyder(<a>,<b>):计算多项式的积的导数
      #即k(x)=d[a(x)*b(x)]/dx
      #参数说明:k同上
        a,b:各指定1个多项式
    [q,d] = polyder(<a>,<b>):计算多项式的商的导数
      即q(x)/d(x)=d[a(x)/b(x)]/dx
      #参数说明:
        a:指定分子处的多项式
        b:指定分母处的多项式
        q:结果中分子的部分
        d:结果中分母的部分
    
    #实例:
    >> p = [3 0 -2 0 1 5];
    >> q = polyder(p)
    q = 1×5
    
        15     0    -6     0     1
    
    >> a = [1 -2 0 0 11];
    >> b = [1 -10 15];
    >> q = polyder(a,b)
    q = 1×6
    
         6   -60   140   -90    22  -110
    
    >> p = [1 0 -3 0 -1];
    >> v = [1 4];
    >> [q,d] = polyder(p,v)
    q = 1×5
    
         3    16    -3   -24     1
    
    d = 1×3
    
         1     8    16
    
    

    2.求多项式的不定积分:

    <q> = polyint(<p>[,<k>]):计算多项式的不定积分
      #参数说明:
        p:指定多项式
        k:指定求不定积分后的常数项;默认为0
          #相当于q中的最后1个元素;即q(x)=polyint(q(x),k)=ployint(p(x))+k
        q:返回结果
    
    #实例:
    >> p = [3 0 -4 10 -25];
    >> q = polyint(p)
    q = 1×6
    
        0.6000         0   -1.3333    5.0000  -25.0000         0
    
    >> p = [1 0 -1 0 0 1];
    >> v = [1 0 1];
    >> k = 3;
    >> q = polyint(conv(p,v),k)
    q = 1×9
    
        0.1250         0         0         0   -0.2500    0.3333         0    1.0000    3.0000
    
    

    三.数值微分和积分
    1.求差分和近似导数:

    <Y> = diff(<X>[,<n>,<dim>]):沿指定维度计算相邻元素间的差分
      #参数说明:
        X:指定n维数组
          如果为长度为m的向量,则返回长度为m-1的向量,Y的元素是X相邻元素间的差分
            #即Y=[X(2)-X(1),X(3)-X(2),...,X(m)-X(m-1)]
          如果为p×m的矩阵,则返回大小为(p-1)×m的矩阵,其元素是X的行之间的差分
            #即Y=[X(2,:)-X(1,:);X(3,:)-X(2,:);...;X(p,:)-X(p-1,:)]
          以此类推
        n:指定求沿指定维度的n阶差分;默认为1
          #在实际操作中,这表示diff(X,2)与diff(diff(X))相同
        dim:指定沿哪个维度计算差分;默认为第1个长度>1的维度
          #如果要指定该参数,则必须指定参数n
        Y:返回结果
    
    #实例:
    >> X = [1 1 2 3 5 8 13 21];
    >> Y = diff(X)
    Y = 1×7
    
         0     1     1     2     3     5     8
    
    >> X = [1 1 1; 5 5 5; 25 25 25];
    >> Y = diff(X)
    Y = 2×3
    
         4     4     4
        20    20    20
    
    >> X = [0 5 15 30 50 75 105];
    >> Y = diff(X,2)
    Y = 1×5
    
         5     5     5     5     5
    
    >> X = [1 3 5;7 11 13;17 19 23];
    >> Y = diff(X,1,2)
    Y = 3×2
    
         2     2
         4     2
         2     4
    
    %使用差分求导数近似值:
    >> h = 0.001;
    >> X = -pi:h:pi;
    >> f = sin(X);
    >> Y = diff(f)/h;%计算1阶近似导数;也可以是Y = diff(f)/diff(X)
    >> Z = diff(Y)/h;%计算2阶近似导数
    >> plot(X(:,1:length(Y)),Y,'r',X,f,'b',X(:,1:length(Z)),Z,'k')%结果见下图
    %蓝线对应原始函数sin(),红线对应1阶导数cos(),黑线对应2阶导数-sin()
    

    在这里插入图片描述
    2.求数值积分
    (1)策略:求面积法(Quadrature Method)
    在这里插入图片描述

    #以下方法分割的每个条段都等宽
    
    1.中点策略(Midpoint Rule):布喇格-威廉姆近似(Zeroth-order Approximation)
    用矩形的面积近似曲边梯形的面积(见下图1)
    2.梯形策略(Trapezoid Rule):一阶近似(First-order Approximation)
    用梯形的面积近似曲边梯形的面积(见下图2)
    3.1/3辛普森策略(1/3 Simpson's Rule):二阶近似(Second-order Approximation)
    用h * (f0 + 4 * f1 + f2)/3某一小段上的积分近似(见下图3)
    
    3种方法比较见下图4
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (2)使用内置函数求数值积分:

    <Q> = trapz([<X>,]<Y>[,<dim>]):基于梯形策略计算数值积分
      #参数说明:
        Y:计算Y的近似积分;为arrar/matrix/多维数组
          如果为array,则计算Y的近似积分(见下图)
            此时Y中的元素代表函数的一系列值,或各直边梯形2侧的高
          如果为matrix,则默认对Y列计算每列的积分
          如果为多维数组,则默认对其长度>1的第1个维度求积分
            #该维度的长度变为1,其他维度的长度不变
        X:指定Y中各元素对应的x坐标/梯形(在x轴上)的宽度;分别为array/num
          默认为1,表示梯形(在x轴上)的宽度为1
          如果为array,则length(X)等于Y在第1个长度>1的维度上的长度
          如果为num,则trapz(X,Y) = X * trapz(Y)
        dim:指定沿哪个维度求积分;
          #例如:如果Y为matrix,则trapz(X,Y,2)对Y的每行求积分
        Q:返回结果
    
    #实例:
    >> h = 0.05;
    >> x = 0:h:2;
    >> y = 4 * x.^3
    >> s = h * trapz(y)%相当于h * sum((y(1:end-1) + y(2:end)) / 2)
    s =
    
         16.0100
    
    >> X = 0:pi/100:pi;
    >> Y = sin(X);
    >> Q = trapz(X,Y)
    Q =
    
         1.9998
    
    

    在这里插入图片描述

    <q> = integral(<fun>,<xmin>,<xmax>[,"<Name>",<Value>]):使用全局自适应积分策略和默认误差容限求数值积分
      #这里的数值积分是包括瑕积分和无穷积分在内的广义积分(∞的表示为Inf)
      #参数说明:
        func:指定被积函数;为函数句柄
        xmin:指定积分下限
        xmax:指定积分上限
        q:返回计算结果
        Name,Value:指定其他参数
          如指定"WayPoints",为要使用的积分器指示特定点;为实/复数向量(见下例5)
          指定"ArrayValued"为true以便计算数组值/向量值函数(见下例6)
          "RelTol"和"AbsTol"分别指定相对误差和绝对误差
          "Method"指定方法???(什么方法)
    
    #实例:
    >> fun = @(x) exp(-x.^2).*log(x).^2;%定义函数
    >> q = integral(fun,0,Inf)
    q =
    
         1.9475
    
    #########################################################
    >> fun = @(x,c) 1./(x.^3-2*x-c);
    >> q = integral(@(x)fun(x,5),0,2)
    q =
    
         -0.4605
    
    #########################################################
    >> fun = @(x)log(x);
    >> format long
    >> q1 = integral(fun,0,1)
    q1 =
    
      -1.000000010959678
    
    #########################################################
    %再次计算积分:使用12位小数精度;将RelTol设为0,以便integral()仅尝试满足绝对误差容限
    >> q2 = integral(fun,0,1,'RelTol',0,'AbsTol',1e-12)
    >> q2 =
    
      -1.000000000000010
    
    #########################################################
    >> fun = @(z) 1./(2*z-1);
    %通过指定路点,在复平面中从0至1+1i到1-1i至0的三角形路径上计算积分
    >> q = integral(fun,0,0,'Waypoints',[1+1i,1-1i])
    q =
    
         -0.0000 - 3.1416i
    
    #########################################################
    >> fun = @(x)sin((1:5)*x);
    %指定"ArrayValued"为true以便计算数组值/向量值函数的积分
    q = integral(fun,0,1,'ArrayValued',true)
    q = 1×5
    
        0.4597    0.7081    0.6633    0.4134    0.1433
    
    #########################################################
    >> fun = @(x)x.^5.*exp(-x).*sin(x);
    >> format long
    q = integral(fun,0,Inf,'RelTol',1e-8,'AbsTol',1e-13)
    q = 
    
     -14.999999999998360
    
    

    (3)自定义计算数值积分:

    • 使用布喇格-威廉姆近似计算定积分的近似值:
    使用sum()进行求和,从而得到近似的积分结果
    
    #实例:计算4 * x^3在[0,2]上的定积分
    >> h = 0.05;
    >> x = 0:h:2;
    >> midpoint = (x(1:end - 1) + x(2:end)) ./ 2;
    >> y = 4 * midpoint.^3;
    >> s = sum(h * y)
    s =
    
         15.9950
    
    
    • 使用二阶近似计算定积分的近似值:
    同样使用sum()进行求和,得到定积分的近似值
    
    #实例:
    >> h = 0.05;
    >> x = 0:h:2;
    >> y = 4 * x.^3
    >> s = h * (y(1) + 2 * sum(y(3:2:end-2)) + 4 * sum(y(2:2:end)) + y(end)) / 3
    s =
    
         16
    
    

    3.求重积分
    (1)计算2重数值积分:

    <q> = integral2(<func>,<xmin>,<xmax>,<ymin>,<ymax>[,"<Name>",<Value>])
      #参数说明:q/func/Name/Value同integral()
        xmin,xmax,ymin,ymax:指定第1/2个变量的积分下限和积分上限
    
    #实例:
    %将三角形区域与奇异性在边界处集成:
    >> fun = @(x,y) 1./( sqrt(x + y) .* (1 + x + y).^2 )
    fun = function_handle with value:
        @(x,y)1./(sqrt(x+y).*(1+x+y).^2)
    
    >> ymax = @(x) 1 - x;
    >> q = integral2(fun,0,1,0,ymax)
    q =
    
         0.2854
    
    #########################################################
    %在极坐标中计算2重积分:
    >> fun = @(x,y) 1./( sqrt(x + y) .* (1 + x + y).^2 );
    >> polarfun = @(theta,r) fun(r.*cos(theta),r.*sin(theta)).*r;
    >> rmax = @(theta) 1./(sin(theta) + cos(theta));
    >> q = integral2(polarfun,0,pi/2,0,rmax)
    q =
    
         0.2854
    
    #########################################################
    %使用特定方法和误差容限计算参数化函数的2重积分:
    >> a = 3; 
    >> b = 5;
    >> fun = @(x,y) a*x.^2 + b*y.^2;
    >> format long
    >> q = integral2(fun,0,5,-5,0,'Method','iterated',...
    'AbsTol',0,'RelTol',1e-10)
    q =
    
         1.666666666666667e+03
    
    

    (2)计算3重数值积分:

    <q> = integral3(<fun>,<xmin>,<xmax>,<ymin>,<ymax>,<zmin>,<zmax>[,"<Name>",<Value>])
      #参数说明:q/func/Name/Value同integral()
        xim,xmax,ymin,ymax,zmin,zmax:分别指定第1/2/3个参数的积分下限和积分上限
    
    #实例:
    >> fun = @(x,y,z) y.*sin(x)+z.*cos(x)
    fun = function_handle with value:
        @(x,y,z)y.*sin(x)+z.*cos(x)
    
    >> q = integral3(fun,0,pi,0,1,-1,1)
    q =
    
         2.0000
    
    #########################################################
    %在笛卡尔坐标中对单位球面计算积分:
    >> fun = @(x,y,z) x.*cos(y) + x.^2.*cos(z)
    fun = function_handle with value:
        @(x,y,z)x.*cos(y)+x.^2.*cos(z)
    
    >> xmin = -1;
    >> xmax = 1;
    >> ymin = @(x)-sqrt(1 - x.^2);
    >> ymax = @(x) sqrt(1 - x.^2);
    >> zmin = @(x,y)-sqrt(1 - x.^2 - y.^2);
    >> zmax = @(x,y) sqrt(1 - x.^2 - y.^2);
    >> q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax,'Method','tiled')
    q =
    
         0.7796
    
    #########################################################
    %计算参数化函数的错误3重积分:
    >> a = 2;
    >> f = @(x,y,z) 10./(x.^2 + y.^2 + z.^2 + a);
    >> format long
    >> q1 = integral3(f,-Inf,0,-100,0,-100,0)
    q1 =
    
         2.734244598320928e+03
    
    >> q2 = integral3(f,-Inf,0,-100,0,-100,0,'AbsTol', 0,'RelTol',1e-9)
    q2 =
    
         2.734244599944285e+03
    
    

    (3)计算4重及以上的数值积分:

    依靠嵌套使用上述3个函数:integral(),integral2(),integral3()
    
    #实例:
    >> f = @(r,theta,phi,xi) r.^3 .* sin(theta).^2 .* sin(phi);
    >> Q = @(r) integral3(@(theta,phi,xi) f(r,theta,phi,xi),0,pi,0,pi,0,2*pi);
    >> I = integral(Q,0,2,'ArrayValued',true)
    I =
    
         78.9568
    
    >> I_exact = pi^2*2^4/(2*gamma(2))
    I_exact =
    
         78.9568
    
    

    四.符号微分与积分
    1.微分:

    求符号化函数的微分:Y = diff(X[,n])
      #参数说明:
      	X:指定符号化的函数
      	n:指定求n阶微分;默认为1
      	Y:返回结果
    
    #实例:
    >> x=sym("x");
    >> diff(x^3)
     
    ans =
     
    3*x^2
     
    >> diff(x^3,2)
     
    ans =
     
    6*x
     
    

    2.积分
    (1)不定积分:

    求符号化的不定积分:F = int(expr[,var,Name,Value])
      #也可以求多重不定积分
      #参数说明:
      	expr:指定函数
      	var:指定对哪个变量积分
      	F:返回结果
    
    #实例:
    >> x=sym("x");
    >> y=sym("y");
    >> int(x^3)
     
    ans =
     
    x^4/4
     
    >> int(x+y^3)
     
    ans =
     
    (x*(2*y^3 + x))/2
     
    >> int(x+y^3,x)
     
    ans =
     
    (x*(2*y^3 + x))/2
     
    >> int(x+y^3,y)
     
    ans =
     
    y^4/4 + x*y
     
     >> int(x+y^3,[x,y])
     
    ans =
     
    -((x - y)*(2*y^3 + y + x))/2
     
    

    (2)定积分:

    求符号化的定积分:F = int(expr[,var],a,b[,Name,Value])
      #参数说明:
        a,b:指定积分下/上限
    
    #实例:
    >> int(x+y^3,y,1,3)
     
    ans =
     
    2*x + 20
     
    >> int(x^3-2,1,3)
     
    ans =
     
    16
     
    
    展开全文
  • 2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;2019/12/19;...20
  • 1.多项式微分与积分 微分多项式的表示:f(x) = x^3 - 2x -5 ==用向量表示: p = [1 0 -2 -5];表示1*x^3+0*x^2-2*x-5;示例: 代码:&gt;&gt; a = [9,-5,3,7];&gt;&gt; x = -2:0.01:5;&gt;...

    1.多项式的微分与积分

                 微分


    多项式的表示:f(x) = x^3 - 2x -5  ==用向量表示: p = [1 0 -2 -5];

    表示1*x^3+0*x^2-2*x-5;


    示例:

      代码:

    >> a = [9,-5,3,7];

    >> x = -2:0.01:5;

    >> f = polyval(a,x);
    >> plot(x,f,'LineWidth',2);
    >> xlabel('x');ylabel('f(x)');

    >> set(gca,'FontSize',14);

    polyval(polyvalue,x);polyval输入为一个向量和x返回一个f(x);


    微分的方程(polyder);

    >> p = [5 0 -2 0 1];
    >> polyder(p);

    >> polyder(p)

    ans =


        20     0    -4     0

    代码以及运行结果

    知道具体x值的微分

     
    >>  f =polyval (polyder(p),7);
    >> f

    f =

            6832

    多项式运算:

    多项式的乘:

    >> f1 = [20 -7 5 10];

    >> f2 = [4 12 3];
    >> f3 = conv(f1,f2);

    >> f3

    f3 =
        80   212    -4    79   135    30

    多项式的除法:

    % roots

    % y1 = 3*x^4 + 4*x^2 + 2*x + 6

    % y2 = 5*x^2 + x + 3

    p1 = [3 0 4 2 6];

    p2 = [5 1 3];

    [p,r] = deconv(p1,p2)



    展开全文
  • matlab多项式及其运算

    万次阅读 多人点赞 2018-11-17 21:19:00
    matlab中,提供了poly2sym函数实现多项式的构造。 r = poly2sym(c):c为多项式的系数向量 r = poly2sym(c, v):c为多项式的系数向量,v为其变量 &gt;&gt; poly2sym([1 3 2]) ans = x^2 + 3*x + 2 &...

    0 创建多项式

    多项式的一般形式如下:

    f(x) = a_{0}x^{n} + a_{1}x^{n-1} + a_{2}x^{n-2} + ... + a_{n-1}x + a_{n}

    我们可以使用它的系数向量来表示,P = [a_{0}, a_{1}, ... , a_{n-1}, a_{n}]

    matlab中,提供了poly2sym函数实现多项式的构造。

    • r = poly2sym(c):c为多项式的系数向量
    • r = poly2sym(c, v):c为多项式的系数向量,v为其变量
    >> poly2sym([1 3 2])
     
    ans =
     
    x^2 + 3*x + 2
    
    >> poly2sym(sym([1 0 1 -1 2]),sym('y'))
     
    ans =
     
    y^4 + y^2 - y + 2

    1.多项式的求根

    多项式的根:

    matlab使用roots函数求解多项式的根,即求解函数等于0的根

    • r = roots(c):其中c为多项式的系数向量,r为求解多项式的根
    >> p = [1 -12 0 25 116];
    >> r = roots(p);
    >> p
    
    p =
    
         1   -12     0    25   116
    
    >> r
    
    r =
    
      11.7473 + 0.0000i
       2.7028 + 0.0000i
      -1.2251 + 1.4672i
      -1.2251 - 1.4672i

    由根创建多项式:

    matlab中规定,多项式是行向量,根是列向量。给出一个多项式的根,也可以构造相应的多项式。

    • p = poly(A):如果A为方阵,则多项式p为该方阵的特征多项式;如果A为向量,则A的元素为该多项式p的根。n阶方阵的特征多项式存放在行向量中,并且特征多项式最高次的系数一定为1
    >> pp = poly(r)
    
    pp =
    
        1.0000  -12.0000   -0.0000   25.0000  116.0000

     

    2.多项式的四则运算

    多项式的加法:

    如果两个多项式向量大小相同,相加时就与标准的数组加法相同

    >> p1 = [5 40 6 21 9 3];
    >> p2 = [4 0 3 72 1 8];
    >> p3 = p1 + p2
    
    p3 =
    
         9    40     9    93    10    11
    
    >> r1 = poly2str(p3,'x')   % 显示多项式
    
    r1 =
    
       9 x^5 + 40 x^4 + 9 x^3 + 93 x^2 + 10 x + 11
    
    >> p4 = p1 - p2
    
    p4 =
    
         1    40     3   -51     8    -5
    
    >> r2 = poly2str(p4,'x')   % 显示多项式
    
    r2 =
    
       x^5 + 40 x^4 + 3 x^3 - 51 x^2 + 8 x - 5

    注意:当两个多项式阶次不同时,低阶的多项式用首0填补,使其与高阶多项式有同样的阶次。要求首零而不是尾0,是因为相关的系数像x幂一样,必须整齐 

    多项式的乘法:

    conv函数实现多项式的乘运算,deconv函数实现多项式的除运算

    • c = conv(a,b):执行a,b两个向量的卷积运算
    • c = conv(a,b,'shape'):按形参‘shape’返回卷积运算,shape取值如下:
      • full:为返回完整的卷积,是默认值
      • same:为返回部分卷积,其大小与向量a大小相同
      • valid:只返回无填充0部分的卷积,此时输出向量c的最大值为max(length(a) - max(0,length(b) - 1),0).
    >> f = [1 4 -2 7 11];
    >> g = [9 -11 5 0 8];
    >> c = conv(f,g)
    
    c =
    
         9    25   -57   105    20   -54    39    56    88

    注意:conv函数只能进行两个多项式的乘法,两个以上的多项式的乘法需要重复使用conv

    • [q,r] = deconv(v,u):求多项式v, u的除法运算,其中q为返回多项式v除以u的商式,r为返回v除以u的余式。
    >> c = [1 5 15 35 69 100 118 110 72];
    >> b = [1 2 3 6 8];
    >> [a,r] = deconv(c,b)
    
    a =
    
         1     3     6     8     9
    
    
    r =
    
         0     0     0     0     0    -2    -5    -8     0

    3.多项式的导数

    • k = polyder(p):求多项式的导函数多项式
    • k = polyder(a,b):求多项式a与多项式b乘积的导函数多项式
    • [q,d] = polyder(b,a):求多项式b与多项式a相除的导函数,导函数的分子存入q,分母存入d
    >> a = [3 6 9];
    >> b = [1 2 0];
    >> k = polyder(a,b)
    
    k =
    
        12    36    42    18
    
    >> K = poly2str(k,'x')
    
    K =
    
       12 x^3 + 36 x^2 + 42 x + 18
    >> [q,d] = polyder(b,a)
    
    q =
    
        18    18
    
    
    d =
    
         9    36    90   108    81

    4.多项式的积分

    • polyint(p,k):返回以向量p为系数的多项式积分,积分的常数项为k
    • polyint(p):返回以向量p为系数多项式的积分,积分的常数项为默认值0
    >> p = [1 -1 2];
    >> k = 1/2;
    >> F = polyint(p,k)
    
    F =
    
        0.3333   -0.5000    2.0000    0.5000
    
    >> df = poly2sym(F)
     
    df =
     
    x^3/3 - x^2/2 + 2*x + 1/2

    5.多项式的估值

    matlab提供了polyval函数与polyvalm函数用于求多项式p(x)在x=a的取值。输入可以是标量或矩阵

    • y = polyval(p,x):p为多项式的系数向量,x为矩阵,它是按数组运算规则来求多项式的值
    • [y,delta] = polyval(p,x,S):使用可选的结构数组S产生由polyfit函数输出的估计参数值;delta是预测未来的观测估算的误差标准偏差
    • y = polyval(p,x,[],mu)或[y,delta] = polyval(p,x,S,mu):使\hat{x} = (x - \mu _{1}) / \mu _{2}替代x,\mu _{1} = mean(x), \mu _{2} = std(x),其中心点与坐标值mu = [\mu _{1},\mu _{2}]可由polyfit函数计算得出

    polyvalm函数的输入参数只能是N阶方阵,这时可以将多项式看作矩阵函数

    • Y = polyvalm(p,X):p为多项式的系数向量,X为方阵,其实按矩阵运算规则来求多项式的值。
    >> X = pascal(4)
    
    X =
    
         1     1     1     1
         1     2     3     4
         1     3     6    10
         1     4    10    20
    
    >> p = poly(X)
    
    p =
    
        1.0000  -29.0000   72.0000  -29.0000    1.0000
    
    >> P = poly2str(p,'x')
    
    P =
    
       x^4 - 29 x^3 + 72 x^2 - 29 x + 1
    
    >> y = polyval(p,X)
    
    y =
    
       1.0e+04 *
    
        0.0016    0.0016    0.0016    0.0016
        0.0016    0.0015   -0.0140   -0.0563
        0.0016   -0.0140   -0.2549   -1.2089
        0.0016   -0.0563   -1.2089   -4.3779
    
    >> y = polyvalm(p,X)
    
    y =
    
       1.0e-10 *
    
       -0.0003   -0.0036   -0.0052   -0.0143
       -0.0021   -0.0136   -0.0179   -0.0464
       -0.0059   -0.0330   -0.0400   -0.1047
       -0.0130   -0.0639   -0.0750   -0.1962

    6.有理多项式

    matlab中,有理多项式由它们的分子多项式和分母多项式表示。对有理多项式进行运算的两个函数是residue和polyder。redidue执行部分分式展开的运算

    • [r,p,k] = residue(b,a):b,a分别为分子和分母多项式系数的行向量,r为留数行向量
    • [b,a] = residue(r,p,k):p为极点行向量,k为直项行向量
    >> b = [5 3 -2 7];
    >> a = [-4 0 8 3];
    >> [r,p,k] = residue(b,a)
    
    r =
    
       -1.4167
       -0.6653
        1.3320
    
    
    p =
    
        1.5737
       -1.1644
       -0.4093
    
    
    k =
    
       -1.2500
    
    >> [b,a] = residue(r,p,k)
    
    b =
    
       -1.2500   -0.7500    0.5000   -1.7500
    
    
    a =
    
        1.0000   -0.0000   -2.0000   -0.7500

    7.多项式的微分

    • k = polyder(p):p,k分别为原多项式及微分多项式的多项式表示
    • k = polyder(a,b):求多项式a与多项式b乘积的导函数多项式
    • [q,b] = polyder(b,a):求多项式b与多项式a相除的导函数,导函数的分子存入q,分母存入d
    >> a = [3 6 9];
    >> b = [1 2 0];
    >> k = polyder(a,b)
    
    k =
    
        12    36    42    18
    
    >> K = poly2str(k,'x')
    
    K =
    
       12 x^3 + 36 x^2 + 42 x + 18
    >> [q,d] = polyder(b,a)
    
    q =
    
        18    18
    
    
    d =
    
         9    36    90   108    81

     

    展开全文
  • Matlab-多项式及数值微积分

    千次阅读 2019-09-08 10:11:44
    08多项式和数值微积分 ...Differentiation微分 例如 f(x) = x^3 -2x -5 ,用一个矩阵接收他们的系数表示一个多项式 --> p = [1 0 -2 5]; Plot the polynomial 给出定义域画图 for -2<=x<...
  • matlab多项式的表示以及运算

    千次阅读 2019-06-09 15:27:46
    1.多项式的表示以及运算 例如p(x)=x^3-3x+10 表示为p=[1 0 -3 10]; 或者p=[1,0,-3,10]; 2.roots 函数 roots函数求解其对应的方程式的根,例如: >>r=roots(p); 接上式,即可得到方程的根 3.poly...
  • 本篇博客是B站教学视频的学习笔记,...Matlab多项式与数据统计 % 介绍多项式的内容 p=[1,2,3,4]; f1=poly2str(p,'x'); % 生成好看的符号串 % disp(f1) 结果为 x^3 + 2 x^2 + 3 x + 4 f2=poly2sym(p); % 生成可用的符号.
  • 本文讲述了如何使用 polyint 和 polyder 函数对由系数向量表示的任何多项式求解析积分或微分。 使用 polyder 获取多项式 p(x)=x3−2x−5 的导数。生成的多项式为 q(x)=ddx\frac{d}{dx}dxd​,p(x)=3x2−2。 p = [1 0...
  • Matlab中对多项式进行积分 (1)多项式微分操作由polyder函数实现 (2)MATLAB中没有专门的对多项式积分函数,但可以用[p./length(p):1:-1]的方法完成积分,k为常数 例题: 求 多项式微分和积分 >> p1=[1 ...
  • 一元多项式 1.绘图,求值 f(x)=9x3−5x2+3x+7(−2≤x≤5),f(x)=? f(x)=9x^3-5x^2+3x+7 (-2\le x\le5),f(x)=? f(x)=9x3−5x2+3x+7(−2≤x≤5),f(x)=? a = [9 -5 3 7];%代表多项式各项系数 x = -2:0.01:5; f = polyval...
  • matlab多项式

    千次阅读 2019-11-22 15:44:43
    则在matlab可以这样表示 p=[an an-1 ···a1 a0] 例如 x3+2x2+x+3 可以表示为 [1 2 1 3] 二、多项式求值、求根和部分分式展开 1.多项式求值 用polyval(p,s),其中p为多项式,s为给定矩阵 例如: p= [1 2 1 3] ...
  • 目录展开与分解因式expand()factor()转化符号x的多项式为数值向量多项式四则运算加减法乘法除法多项式求根多项式微分n*d的导数n/d的导数 在MATLAB中创建符号变量x,输入以下多项式。 n=(x+1)(x−2)(x+4)d=(x+3)(x+5)...
  • 应用matlab多项式的表示以及运算

    千次阅读 2017-12-04 19:56:06
    1.多项式的表示以及运算 例如p(x)=x^3-3x+10 表示为p=[1 0 -3 10]; 或者p=[1,0,-3,10]; 2.roots 函数 roots函数求解其对应的方程式的根,例如: >>r=roots(p); 接上式,即可得到方程的根 3.poly...
  • matlab中可以用数组表示: p=[2 -3 0 -1] 多项式的根: roots(p) 多项式的创建:poly函数的运用 p=[2 -3 0 -1];r=roots(p); ss=poly(r) ss 只知道多项式的零点,可以用poly函数来创建多项式的...
  • matlab中数据的多项式拟合

    千次阅读 2020-08-13 17:05:31
    使用matlab读取存储在excel中的数据,然后采用一次或者多次多项式进行拟合,并画出拟合的置信区间和拟合多项式图像。 (1)参考程序 filename=’\三亚湾.xls’; sheet=1; xlRange=‘B2:T45’; %[num]=xlsread...
  • matlab多项式操作

    千次阅读 2016-08-31 02:01:28
    MATLAB 7.0 采用行向量来表示多项式,将多项式的系数按降幂次序存放在行向量中。 实例:设计一个函数 poly2str(),实现把一个行向量表示的多项式转换为常见的字符串表 示的多项式, %poly2str.m %把多项式的行...
  • 中山大学 数学实验与数学软件 第13章 MATLAB多项式运算与数据可视化(一)(共41页).pptx 中山大学 数学实验与数学软件 第14章 MATLAB数字图像处理初步(共42页).pptx 中山大学 数学实验与数学软件 第15章 MATLAB...
  • 中山大学 数学实验与数学软件 第13章 MATLAB多项式运算与数据可视化(一)(共41页).pptx 中山大学 数学实验与数学软件 第14章 MATLAB数字图像处理初步(共42页).pptx 中山大学 数学实验与数学软件 第15章 MATLAB...
  • matlab_多项式的运算

    2021-04-03 13:40:53
    matlab中将多项式表示为行向量,系数按降幂排列。 例如: a=[1 3 5] 表示a=x^2+3*x+5 b=[2 -1 3 7] 表示b=2*x^3-x^2+3*x+7 要注意,系数为0的部分也要写入向量中,例如: c=[1 0 0 3] 表示c=x^3+3 多项式求根函数...
  • Matlab多项式

    2018-11-18 13:45:00
    MATLAB使用一维行向量来表示多项式,多项式的系数按照降幂次序排列。...polyder() 多项式微分 polyint() 多项式积分 polyval() 多项式求值 residue() 有理多项式(由分子多项式和分母多项式)部分分式展开...
  • MATLAB多项式应用

    2018-11-15 01:04:24
    MATLAB多项式应用
  • 本文参考的是来自mooc上北京师范大学彭芳麟老师的计算物理基础基础知识偏微分方程的三种类型椭圆型 初始条件:无抛物型 初始条件:初始温度分布双曲型初始条件:初始位移与初始速度边界条件Dirchlet边界条件区域边界...
  • 多项式求积分和微分

    千次阅读 2019-09-11 14:15:28
    对一个多项式微分、对两个多项式积或商求微分 对一个多项式求积分
  • 学习笔记-Matlab多项式详解

    千次阅读 2020-05-26 20:33:30
    4.多项式微分和积分 1)求微分/求导数 polyder函数 2)求微分 polyint函数 5.多项式曲线的拟合 polyfit函数 正文 多项式:诸如pnxn+pn−1xn−1+...+p2x2+p1x+p0p_nx^n+p_{n-1}x^{n-1}+...+p_2x^2+p_1
  • MT_FDE_PI1_Im 在区间 [t0,T] 上求解多项分数阶微分方程的初值问题lam_Q D^(al_Q) y(t) + ... + lam_1 D^(al_1) y(t) = f(t,y(t)) y(0) = y0(1), y'(0) = y0(2), ... y^m(0) = y0(m) 其中 m 是大于 max(al_1,...,al_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,407
精华内容 962
关键字:

matlab多项式的微分

matlab 订阅