Loading [MathJax]/jax/output/HTML-CSS/jax.js
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Not an answer, but a contribution. Furthermore, I won't try to solve the (hard) problem of solving in Z, but, at least as a first step, to solve it in Q.

The problem has two parameters :

  • The matrices' dimension n
  • the index (degree) of B's nilpotency.

Each of the matrix equations translates to n2 equations involving 2n2 unknown equations ; similarly, the nilpotency of B translates to n2 equations of maximal dregree k involving n2 parameters.

However, these equations are far from being independent. For example, the nilpotency of B translates to

  • n=2k=2 : 4 equations of 4 unknowns ; the resulting ideal has dimension 2, which means that this system has two degrees of freedom.

  • n=3,k=2 ; 9 equations of 9 unknowns, the resulting system still has 4 degrees of freedom.

The "obvious" brute-force way (a polynomial system in ai,jbi,j) doesn't work. However, one may try to solve for B given A, i. e. build a system of polynomials in bi,j whose coefficients are taken in (the fraction field of) the ring of polynomials in ai,j. For example, after running :

NN=2
k=2
R1=PolynomialRing(QQ, ["a%d%d"%(u, v) for v in range(NN) for u in range(NN)])
# R1.inject_variables()
A=matrix(NN,R1.gens())
R2=PolynomialRing(FractionField(R1), ["b%d%d"%(u, v) for v in range(NN) for u in range(NN)])
# R2.inject_variables()
B=matrix(NN,R2.gens())
S1=(A^2*B+A*B*A+B*A^2).list()
S2=(B^2*A+B*A*B+A*B^2).list()
# Nilpotency
S3=(B^k-B).list()
J1=R2.ideal(S1+S2+S3)

one gets :

sage: R2.ideal(S1+S2+S3).variety()
[{b11: 0, b01: 0, b10: 0, b00: 0}]
sage: J1.dimension()
0
sage: J1.variety()
[{b11: 0, b01: 0, b10: 0, b00: 0}]

This result is easily repeated for k(2,3,5,7) ; for k=11, the system failed to compute J1.dimension() after about 10 minutes (I threw the towel...).

Similarly, in the case n=3,k=2, the system has been searching the same J1.dimension() for about 3 hours.

FWIW, the (gratis-but-not-free) Wolfram engine's Reduce exhibits a similar behaviour., However, Solve seems to be able to get the (unique) solution (null B) for n=3,k=3 in a reasonable time ; getting the (same) answer for n=4,k=2 needs about a minute. Going beyond n=4 or k=7 leads to unreasonable (=exceeding my patience) times.

This brute-force symbolic approach using only the polynomials machinery (or whatever the Wolfram engine uses) seems bound to fail. An approach using more results of linear algebra is needed.

HTH,

click to hide/show revision 2
No.2 Revision

EDIT : This was written as an answer to the initial redaction of the question, where B was supposed to be nilpotent (i. e. BkB=0 for some prime k, with no specification of k).

Not an answer, but a contribution. Furthermore, I won't try to solve the (hard) problem of solving in Z, but, at least as a first step, to solve it in Q.

The problem has two parameters :

  • The matrices' dimension n
  • the index (degree) of B's nilpotency.

Each of the matrix equations translates to n2 equations involving 2n2 unknown equations ; similarly, the nilpotency of B translates to n2 equations of maximal dregree k involving n2 parameters.

However, these equations are far from being independent. For example, the nilpotency of B translates to

  • n=2k=2 : 4 equations of 4 unknowns ; the resulting ideal has dimension 2, which means that this system has two degrees of freedom.

  • n=3,k=2 ; 9 equations of 9 unknowns, the resulting system still has 4 degrees of freedom.

The "obvious" brute-force way (a polynomial system in ai,jbi,j) doesn't work. However, one may try to solve for B given A, i. e. build a system of polynomials in bi,j whose coefficients are taken in (the fraction field of) the ring of polynomials in ai,j. For example, after running :

NN=2
k=2
R1=PolynomialRing(QQ, ["a%d%d"%(u, v) for v in range(NN) for u in range(NN)])
# R1.inject_variables()
A=matrix(NN,R1.gens())
R2=PolynomialRing(FractionField(R1), ["b%d%d"%(u, v) for v in range(NN) for u in range(NN)])
# R2.inject_variables()
B=matrix(NN,R2.gens())
S1=(A^2*B+A*B*A+B*A^2).list()
S2=(B^2*A+B*A*B+A*B^2).list()
# Nilpotency
S3=(B^k-B).list()
J1=R2.ideal(S1+S2+S3)

one gets :

sage: R2.ideal(S1+S2+S3).variety()
[{b11: 0, b01: 0, b10: 0, b00: 0}]
sage: J1.dimension()
0
sage: J1.variety()
[{b11: 0, b01: 0, b10: 0, b00: 0}]

This result is easily repeated for k(2,3,5,7) ; for k=11, the system failed to compute J1.dimension() after about 10 minutes (I threw the towel...).

Similarly, in the case n=3,k=2, the system has been searching the same J1.dimension() for about 3 hours.

FWIW, the (gratis-but-not-free) Wolfram engine's Reduce exhibits a similar behaviour., However, Solve seems to be able to get the (unique) solution (null B) for n=3,k=3 in a reasonable time ; getting the (same) answer for n=4,k=2 needs about a minute. Going beyond n=4 or k=7 leads to unreasonable (=exceeding my patience) times.

This brute-force symbolic approach using only the polynomials machinery (or whatever the Wolfram engine uses) seems bound to fail. An approach using more results of linear algebra is needed.

HTH,

click to hide/show revision 3
No.3 Revision

EDIT : This What follows was written as an answer to the initial redaction of the question, where B was supposed to be nilpotent (i. e. BkB=0 for some prime k, k, with no specification of k).k).

Not an answer, but a contribution. Furthermore, I won't try to solve the (hard) problem of solving in Z, but, at least as a first step, to solve it in Q.

The problem has two parameters :

  • The matrices' dimension n
  • the index (degree) of B's nilpotency.

Each of the matrix equations translates to n2 equations involving 2n2 unknown equations ; similarly, the nilpotency of B translates to n2 equations of maximal dregree k involving n2 parameters.

However, these equations are far from being independent. For example, the nilpotency of B translates to

  • n=2k=2 : 4 equations of 4 unknowns ; the resulting ideal has dimension 2, which means that this system has two degrees of freedom.

  • n=3,k=2 ; 9 equations of 9 unknowns, the resulting system still has 4 degrees of freedom.

The "obvious" brute-force way (a polynomial system in ai,jbi,j) doesn't work. However, one may try to solve for B given A, i. e. build a system of polynomials in bi,j whose coefficients are taken in (the fraction field of) the ring of polynomials in ai,j. For example, after running :

NN=2
k=2
R1=PolynomialRing(QQ, ["a%d%d"%(u, v) for v in range(NN) for u in range(NN)])
# R1.inject_variables()
A=matrix(NN,R1.gens())
R2=PolynomialRing(FractionField(R1), ["b%d%d"%(u, v) for v in range(NN) for u in range(NN)])
# R2.inject_variables()
B=matrix(NN,R2.gens())
S1=(A^2*B+A*B*A+B*A^2).list()
S2=(B^2*A+B*A*B+A*B^2).list()
# Nilpotency
S3=(B^k-B).list()
J1=R2.ideal(S1+S2+S3)

one gets :

sage: R2.ideal(S1+S2+S3).variety()
[{b11: 0, b01: 0, b10: 0, b00: 0}]
sage: J1.dimension()
0
sage: J1.variety()
[{b11: 0, b01: 0, b10: 0, b00: 0}]

This result is easily repeated for k(2,3,5,7) ; for k=11, the system failed to compute J1.dimension() after about 10 minutes (I threw the towel...).

Similarly, in the case n=3,k=2, the system has been searching the same J1.dimension() for about 3 hours.

FWIW, the (gratis-but-not-free) Wolfram engine's Reduce exhibits a similar behaviour., However, Solve seems to be able to get the (unique) solution (null B) for n=3,k=3 in a reasonable time ; getting the (same) answer for n=4,k=2 needs about a minute. Going beyond n=4 or k=7 leads to unreasonable (=exceeding my patience) times.

This brute-force symbolic approach using only the polynomials machinery (or whatever the Wolfram engine uses) seems bound to fail. An approach using more results of linear algebra is needed.

HTH,

click to hide/show revision 4
No.4 Revision

EDIT : What follows was written as an answer to the initial redaction of the question, where B was supposed to be nilpotent (i. e. BkB=0 for some prime k, with no specification of k).k). Furthermore, it uses an wrong definition of nilpotency (first-class thinko...). Therefore, it answers a different problem, with very weak relation to the real question. Kept for what it's worth...

Not an answer, but a contribution. Furthermore, I won't try to solve the (hard) problem of solving in Z, but, at least as a first step, to solve it in Q.

The problem has two parameters :

  • The matrices' dimension n
  • the index (degree) of B's nilpotency.

Each of the matrix equations translates to n2 equations involving 2n2 unknown equations ; similarly, the nilpotency of B translates to n2 equations of maximal dregree k involving n2 parameters.

However, these equations are far from being independent. For example, the nilpotency of B translates to

  • n=2k=2 : 4 equations of 4 unknowns ; the resulting ideal has dimension 2, which means that this system has two degrees of freedom.

  • n=3,k=2 ; 9 equations of 9 unknowns, the resulting system still has 4 degrees of freedom.

The "obvious" brute-force way (a polynomial system in ai,jbi,j) doesn't work. However, one may try to solve for B given A, i. e. build a system of polynomials in bi,j whose coefficients are taken in (the fraction field of) the ring of polynomials in ai,j. For example, after running :

NN=2
k=2
R1=PolynomialRing(QQ, ["a%d%d"%(u, v) for v in range(NN) for u in range(NN)])
# R1.inject_variables()
A=matrix(NN,R1.gens())
R2=PolynomialRing(FractionField(R1), ["b%d%d"%(u, v) for v in range(NN) for u in range(NN)])
# R2.inject_variables()
B=matrix(NN,R2.gens())
S1=(A^2*B+A*B*A+B*A^2).list()
S2=(B^2*A+B*A*B+A*B^2).list()
# Nilpotency
S3=(B^k-B).list()
J1=R2.ideal(S1+S2+S3)

one gets :

sage: R2.ideal(S1+S2+S3).variety()
[{b11: 0, b01: 0, b10: 0, b00: 0}]
sage: J1.dimension()
0
sage: J1.variety()
[{b11: 0, b01: 0, b10: 0, b00: 0}]

This result is easily repeated for k(2,3,5,7) ; for k=11, the system failed to compute J1.dimension() after about 10 minutes (I threw the towel...).

Similarly, in the case n=3,k=2, the system has been searching the same J1.dimension() for about 3 hours.

FWIW, the (gratis-but-not-free) Wolfram engine's Reduce exhibits a similar behaviour., However, Solve seems to be able to get the (unique) solution (null B) for n=3,k=3 in a reasonable time ; getting the (same) answer for n=4,k=2 needs about a minute. Going beyond n=4 or k=7 leads to unreasonable (=exceeding my patience) times.

This brute-force symbolic approach using only the polynomials machinery (or whatever the Wolfram engine uses) seems bound to fail. An approach using more results of linear algebra is needed.

HTH,