Linear differential systems
function:equiv
FUNCTION: equiv - test whether two systems of linear differential equations
are rationally equivalent
CALLING SEQUENCE:
equiv(A, B, x, [, T])
PARAMETERS:
A - a square rational function matrix with coefficients in an algebraic
extension of the rationals
B - same as A
x - a name
T - (optional) a name
SYNOPSIS:
The call equiv(A, B, x) returns true if the two linear differential systems
Y'=AY and Z'=BZ are rationally equivalent, false otherwise.
Rationally equivalent means that there exists an invertible rational
function matrix T such that the transformation Y = TZ turns the first
system into the second one. T is a rational solution of the system
T' = AT - TB.
If the optional parameter T is passed as argument, it is assigned to the
possible transformation matrices which are represented in form of a
parametrized output.
EXAMPLES:
> A := array(1 .. 3, 1 .. 3,[(2, 3)=(-2+4*x)/x/(x^2+2),(1, 2)=-4/x,(2, 1)=0,(1,
3)=0,(2, 2)=1,(1, 1)=1,(3, 3)=1,(3, 1)=0,(3, 2)=9/(x^2+2)]);
[1 - 4/x 0 ]
[ ]
[ -2 + 4 x ]
[0 1 ----------]
[ 2 ]
A := [ x (x + 2)]
[ ]
[ 9 ]
[0 ------ 1 ]
[ 2 ]
[ x + 2 ]
> B := array(1 .. 3, 1 .. 3,[(2, 3)=-2*(x^2+1)*(1-x+5*x^3)/x/(x^2+2),
(1, 2)=-4/(x^2+1),(2, 1)=0,(1, 3)=-4*x,(2, 2)=(x^4+3*x^2+2-7*x^3-5*x)/
(x^2+2)/(x^2+1),(1,1)=1/x*(x+1),(3, 3)=(x^2+2+9*x)/(x^2+2),(3, 1)=0,(3,
2)=9/(x^2+2)/(x^2+1)]);
[x + 1 4 ]
[----- - ------ -4 x ]
[ x 2 ]
[ x + 1 ]
[ ]
[ 4 2 3 2 3 ]
[ x + 3 x + 2 - 7 x - 5 x (x + 1) (1 - x + 5 x )]
B := [ 0 -------------------------- -2 -----------------------]
[ 2 2 2 ]
[ (x + 2) (x + 1) x (x + 2) ]
[ ]
[ 2 ]
[ 9 x + 2 + 9 x ]
[ 0 ----------------- ------------ ]
[ 2 2 2 ]
[ (x + 2) (x + 1) x + 2 ]
> equiv(A,B,x,'T');
true
> print(T);
[_C1 ]
[--- 0 0 ]
[ x ]
[ ]
[ _C1 ]
[ 0 ------ _C1 x]
[ 2 ]
[ x + 1 ]
[ ]
[ 0 0 _C1 ]