void DeConv(TVec *B, TVec *A, TVec *Quot, TVec *Remain);
Divide polynomials, deconvolution.
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]
}
Declared in Dew::Math::Units::Polynoms · Dew.Math/Units.Polynoms.h · Cross-compiler