LinearSystems.RationalSubstitution Method

Overload List

#SignatureDescription
1void RationalSubstitution(TVec Num, TVec Den, TVec nz, TVec Dz)Replace the variable of a rational polynomial with another rational polyniomial.
2void RationalSubstitution(TVec z, TVec p, ref Double k, TVec nz, TVec Dz)Zeroes of the original polynomial are stored in z and poles in p vector.

Overload 1: void RationalSubstitution(TVec Num, TVec Den, TVec nz, TVec Dz)

Replace the variable of a rational polynomial with another rational polyniomial.

#NameTypeDescription
1NumTVecsource TVec
2DenTVecsource TVec
3nzTVecsource TVec
4DzTVecsource TVec

Result: stored in self (calling object)

Remarks:

Num is the nominator and den is the denominator of the original polynomial. Nz is the nominator and Dz is the denominator of the polynom to substitude the variable with in the original polynomial. The function returns modified num and den. Num and den must have the same length. Nz and Dz must have the same length. The advantage of this method is that rooting of the polynomials is not required. The resulting polynomial is normalized to have the coefficient for the highest power in the polynomial equal to 1.

Overload 2: void RationalSubstitution(TVec z, TVec p, ref Double k, TVec nz, TVec Dz)

Zeroes of the original polynomial are stored in z and poles in p vector.

#NameTypeDescription
1zTVecsource TVec
2pTVecsource TVec
3kDouble (ref)output
4nzTVecsource TVec
5DzTVecsource TVec

Result: stored in self (calling object)

Remarks:

Nz is the nominator and Dz is the denominator of the polynom to substitude the variable with in the original polynomial. The function returns modified z and p. Nz and Dz must have the same length. k is the gain factor (not modified).

Examples
using Dew.Math;
using Dew.Math.Editors;
using Dew.Math.Units;
using Dew.Signal;
using Dew.Signal.Units;
using Dew.Math.Tee;
using Dew.Signal.Tee;

private void button1_Click(object sender, EventArgs e)
{
    Vector num = new Vector(0);
    Vector den = new Vector(0);
    Vector den1 = new Vector(0);
    Vector num1 = new Vector(0);

    num.SetIt(false,new double[3] {1,-2, 1});
    den.SetIt(false,new double[3] {1,-4, 1});

    num1.SetIt(false,new double[2] {1,-1});
    den1.SetIt(false,new double[2] {1,-2});

    LinearSystems.RationalSubstitution(num,den,num1,den1);
    MtxVecEdit.ViewValues(num,"Num",true);
    MtxVecEdit.ViewValues(den,"Den",true);

//          num = [ 0, 0, -0.5]
//          den = [ 1,-3,  1.5]
}