Skip to main content
added 6 characters in body
Source Link
Peter Mueller
  • 22.5k
  • 1
  • 75
  • 107

The condition on your coefficients is an underdetermined system of quadratic equations. So specializing some of them (for instance setting them $0$), you can try to get a system with a finite number of (complex) solutions, and the chances are good that they are actually rational. Such systems can be handled with SageMath (which uses Singular, msolve or other systems as backend). In the specific case, a possible solution is \begin{align} Q_0 &= X^2 - XY + Y^2 + XZ\\\\ Q_1 &= X^2 - XY + YZ\\\\ Q_2 &= X^2 - XZ + YZ + Z^2. \end{align} Added later upon request in the comment: Here is the rather naive and straightforward Sage code which runs 160 seconds on my machine. It shows that a rational solution requires at least $11$ nonzero coefficients.

e2 = [(i, j) for i in range(3) for j in range(3-i)]
n2 = len(e2)
R = PolynomialRing(QQ, 'a', 3*n2)
Rxy.<x, y> = R[]
T0, T1, T2 = [sum(R.gen(m+k*n2)*x^i*y^j for m, (i, j) in enumerate(e2))
              for k in range(3)]

f = x^3*y + y^3 + x

l = (T0*T2-T1^2-f).coefficients()
N = R.ngens()
for m in range(1, N):
    print('m = ', m)
    for s in Subsets(range(N), m):
        i = min(s)
        if i >= n2:
            continue
        l0 = l + [R.gen(i)-1] + [R.gen(j) for j in range(N) if
                                 j != i and not j in s]
        I = ideal(l0)
        if I.dimension() == 0:
            V = I.variety()
            if len(V) > 0:
                break
    else:
        continue
    break
v = V[0]
Q0, Q1, Q2 = [sum(c.subs(v)*xy for c, xy in Q) for Q in [T0, T1, T2]]
print(f'Q0 = {Q0}\nQ1 = {Q1}\nQ2 = {Q2}\n{Q0*Q2-Q1^2 == f}')

The condition on your coefficients is an underdetermined system of quadratic equations. So specializing some of them (for instance setting them $0$), you can try to get a system with a finite number of (complex) solutions, and the chances are good that they are actually rational. Such systems can be handled with SageMath (which uses Singular, msolve or other systems as backend). In the specific case, a possible solution is \begin{align} Q_0 &= X^2 - XY + Y^2 + XZ\\\\ Q_1 &= X^2 - XY + YZ\\\\ Q_2 &= X^2 - XZ + YZ + Z^2. \end{align} Added later upon request in the comment: Here is the rather naive and straightforward Sage code which runs 160 seconds on my machine. It shows that a rational solution requires at least $11$ nonzero coefficients.

e2 = [(i, j) for i in range(3) for j in range(3-i)]
n2 = len(e2)
R = PolynomialRing(QQ, 'a', 3*n2)
Rxy.<x, y> = R[]
T0, T1, T2 = [sum(R.gen(m+k*n2)*x^i*y^j for m, (i, j) in enumerate(e2))
              for k in range(3)]

f = x^3*y + y^3 + x

l = (T0*T2-T1^2-f).coefficients()
N = R.ngens()
for m in range(1, N):
    print('m = ', m)
    for s in Subsets(range(N), m):
        i = min(s)
        if i >= n2:
            continue
        l0 = l + [R.gen(i)-1] + [R.gen(j) for j in range(N) if
                                 j != i and not j in s]
        I = ideal(l0)
        if I.dimension() == 0:
            V = I.variety()
            if len(V) > 0:
                break
    else:
        continue
    break
v = V[0]
Q0, Q1, Q2 = [sum(c.subs(v)*xy for c, xy in Q) for Q in [T0, T1, T2]]
print(f'Q0 = {Q0}\nQ1 = {Q1}\nQ2 = {Q2}\n{Q0*Q2-Q1^2 == f}')

The condition on your coefficients is an underdetermined system of quadratic equations. So specializing some of them (for instance setting them $0$), you can try to get a system with a finite number of (complex) solutions, and the chances are good that they are actually rational. Such systems can be handled with SageMath (which uses Singular, msolve or other systems as backend). In the specific case, a possible solution is \begin{align} Q_0 &= X^2 - XY + Y^2 + XZ\\\\ Q_1 &= X^2 - XY + YZ\\\\ Q_2 &= X^2 - XZ + YZ + Z^2. \end{align} Added later upon request in the comment: Here is the rather naive and straightforward Sage code which runs 160 seconds on my machine. It shows that a rational solution requires at least $11$ nonzero coefficients.

e2 = [(i, j) for i in range(3) for j in range(3-i)]
n2 = len(e2)
R = PolynomialRing(QQ, 'a', 3*n2)
Rxy.<x, y> = R[]
T0, T1, T2 = [sum(R.gen(m+k*n2)*x^i*y^j for m, (i, j) in enumerate(e2))
              for k in range(3)]

f = x^3*y + y^3 + x

l = (T0*T2-T1^2-f).coefficients()
N = R.ngens()
for m in range(1, N):
    print('m = ', m)
    for s in Subsets(range(N), m):
        i = min(s)
        if i >= n2:
            continue
        l0 = l + [R.gen(i)-1] + [R.gen(j) for j in range(N) if
                                 j != i and not j in s]
        I = ideal(l0)
        if I.dimension() == 0:
            V = I.variety()
            if len(V) > 0:
                break
    else:
        continue
    break
v = V[0]
Q0, Q1, Q2 = [sum(c.subs(v)*xy for c, xy in Q) for Q in [T0, T1, T2]]
print(f'Q0 = {Q0}\nQ1 = {Q1}\nQ2 = {Q2}\n{Q0*Q2-Q1^2 == f}')
Added program code
Source Link
Peter Mueller
  • 22.5k
  • 1
  • 75
  • 107

The condition on your coefficients is an underdetermined system of quadratic equations. So specializing some of them (for instance setting them $0$), you can try to get a system with a finite number of (complex) solutions, and the chances are good that they are actually rational. Such systems can be handled with SageMath (which uses Singular, msolve or other systems as backend). In the specific case, a possible solution is \begin{align} Q_0 &= X^2 - XY + Y^2 + XZ\\\\ Q_1 &= X^2 - XY + YZ\\\\ Q_2 &= X^2 - XZ + YZ + Z^2. \end{align} Added later upon request in the comment: Here is the rather naive and straightforward Sage code which runs 160 seconds on my machine. It shows that a rational solution requires at least $11$ nonzero coefficients.

e2 = [(i, j) for i in range(3) for j in range(3-i)]
n2 = len(e2)
R = PolynomialRing(QQ, 'a', 3*n2)
Rxy.<x, y> = R[]
T0, T1, T2 = [sum(R.gen(m+k*n2)*x^i*y^j for m, (i, j) in enumerate(e2))
              for k in range(3)]

f = x^3*y + y^3 + x

l = (T0*T2-T1^2-f).coefficients()
N = R.ngens()
for m in range(1, N):
    print('m = ', m)
    for s in Subsets(range(N), m):
        i = min(s)
        if i >= n2:
            continue
        l0 = l + [R.gen(i)-1] + [R.gen(j) for j in range(N) if
                                 j != i and not j in s]
        I = ideal(l0)
        if I.dimension() == 0:
            V = I.variety()
            if len(V) > 0:
                break
    else:
        continue
    break
v = V[0]
Q0, Q1, Q2 = [sum(c.subs(v)*xy for c, xy in Q) for Q in [T0, T1, T2]]
print(f'Q0 = {Q0}\nQ1 = {Q1}\nQ2 = {Q2}\n{Q0*Q2-Q1^2 == f}')

The condition on your coefficients is an underdetermined system of quadratic equations. So specializing some of them (for instance setting them $0$), you can try to get a system with a finite number of (complex) solutions, and the chances are good that they are actually rational. Such systems can be handled with SageMath (which uses Singular, msolve or other systems as backend). In the specific case, a possible solution is \begin{align} Q_0 &= X^2 - XY + Y^2 + XZ\\\\ Q_1 &= X^2 - XY + YZ\\\\ Q_2 &= X^2 - XZ + YZ + Z^2. \end{align}

The condition on your coefficients is an underdetermined system of quadratic equations. So specializing some of them (for instance setting them $0$), you can try to get a system with a finite number of (complex) solutions, and the chances are good that they are actually rational. Such systems can be handled with SageMath (which uses Singular, msolve or other systems as backend). In the specific case, a possible solution is \begin{align} Q_0 &= X^2 - XY + Y^2 + XZ\\\\ Q_1 &= X^2 - XY + YZ\\\\ Q_2 &= X^2 - XZ + YZ + Z^2. \end{align} Added later upon request in the comment: Here is the rather naive and straightforward Sage code which runs 160 seconds on my machine. It shows that a rational solution requires at least $11$ nonzero coefficients.

e2 = [(i, j) for i in range(3) for j in range(3-i)]
n2 = len(e2)
R = PolynomialRing(QQ, 'a', 3*n2)
Rxy.<x, y> = R[]
T0, T1, T2 = [sum(R.gen(m+k*n2)*x^i*y^j for m, (i, j) in enumerate(e2))
              for k in range(3)]

f = x^3*y + y^3 + x

l = (T0*T2-T1^2-f).coefficients()
N = R.ngens()
for m in range(1, N):
    print('m = ', m)
    for s in Subsets(range(N), m):
        i = min(s)
        if i >= n2:
            continue
        l0 = l + [R.gen(i)-1] + [R.gen(j) for j in range(N) if
                                 j != i and not j in s]
        I = ideal(l0)
        if I.dimension() == 0:
            V = I.variety()
            if len(V) > 0:
                break
    else:
        continue
    break
v = V[0]
Q0, Q1, Q2 = [sum(c.subs(v)*xy for c, xy in Q) for Q in [T0, T1, T2]]
print(f'Q0 = {Q0}\nQ1 = {Q1}\nQ2 = {Q2}\n{Q0*Q2-Q1^2 == f}')
Source Link
Peter Mueller
  • 22.5k
  • 1
  • 75
  • 107

The condition on your coefficients is an underdetermined system of quadratic equations. So specializing some of them (for instance setting them $0$), you can try to get a system with a finite number of (complex) solutions, and the chances are good that they are actually rational. Such systems can be handled with SageMath (which uses Singular, msolve or other systems as backend). In the specific case, a possible solution is \begin{align} Q_0 &= X^2 - XY + Y^2 + XZ\\\\ Q_1 &= X^2 - XY + YZ\\\\ Q_2 &= X^2 - XZ + YZ + Z^2. \end{align}