Polynoms::DeConv Function

void DeConv(TVec *B, TVec *A, TVec *Quot, TVec *Remain);

Divide polynomials, deconvolution.

#NameTypeDescription
1BTVec *
2ATVec *
3QuotTVec *
4RemainTVec *
Remarks:

The procedure deconvolves vector A out of vector B. If vectors A and B are treated as polynomial coefficients, the the deconvolution is equal to polynomial division. In this case the DeConv divides polynomial B with polynomial A and returns the quotient in Quot and remainder in Remain. An exception is raised if A and B complex properties do not match. An exception is raised if |A.Values[0]| = 0.

NOTE
To perform polynomial multiplication, use the TVec.Convolve method.

Examples
#include "MtxExpr.h"
#include "Units.Polynoms.h"

using namespace Dew;
using namespace Dew::Math;
using namespace Dew::Math::Units;

void Example()
{
    Vector A(0);
    Vector B(0);
    Vector Ar(0);
    Vector Br(0);
    Vector Q(0);
    Vector R(0);

    // Case 1
    Ar.SetIt(false, DewArray<double>{1, 2});    // Define roots of the polynomial A:
    Polynoms::PolyCoeff(Ar, A);           // get coefficients  = (X - 1)* (X - 2)

    Br.SetIt(false, DewArray<double>{1, 2, 2});     // Define roots of the polynomial B:
    Polynoms::PolyCoeff(Br, B);           //get coefficents    = (X - 1)* (X - 2) * (X - 2)

    Polynoms::DeConv(B, A, Q, R);

    // Q = [ 1, -2 ]
    // R = [ 0 ]

    // Case 2


    B.SetIt(true, DewArray<double>{2, -1, 2, 3, 0, 5});
    A.SetIt(true, DewArray<double>{0, 2, 1, -3, 2, 2});

    Polynoms::DeConv(B, A, Q, R);

    // Q = [ -0.5 - i ]
    // R = [  0       , 5.5 + 2.5i, -1 + 8i]
}
See Also: Polynoms::IIRFilter, Polynoms::PolyCoeff, Polynoms::PolyRoots
Declared in Dew::Math::Units::Polynoms · Dew.Math/Units.Polynoms.h · Cross-compiler