Ask Your Question
1

How to properly declare indeterminates so that they exist in the coefficient ring.

asked 2018-02-01 15:48:50 +0100

LAV gravatar image

updated 2018-02-01 15:50:58 +0100

I'm working on a project regarding generalization of symmetric polynomials.

For the sake of simplicity, I will ask my question in the context of a minimalistic (not) working example.

Let say I am working with Symmetric Functions, I'll write an erroneous code so that you get the idea of what I'm looking for

QQt = QQ['t'].fraction_field()
Sym = SymmetricFunctions(QQt); Sym.inject_shorthands()

a0 = var('a0')
expr1 = m[1,1]
expr2 = m[2] + a0*m[1,1]

eqsys = expr1.scalar_jack(expr2)
solve(eqsys, a0)

The I get the error unsupported operand parent(s) for *: 'Symbolic Ring' and 'Symmetric Functions over Fraction Field of Univariate Polynomial Ring in alpha over Rational Field in the monomial basis' OK, so I tried this instead

QQt = QQ['t,a0'].fraction_field()
t, a0 = QQt.gens()
Sym = SymmetricFunctions(QQt); Sym.inject_shorthands()
expr1 = m[1,1]
expr2 = m[2] + a0*m[1,1]
eqsys = expr1.scalar_jack(expr2)
solve(eqsys, a0)

a0 is not a valid variable So then I did the following

 sln = solve(SR(eqsys), SR(a0))

and it works. But the probleme is that I can't convert the solution back

QQt(sln)

('cannot convert {!r}/{!r} to an element of {}', {a0: 2/(t + 1)}, 1, Fraction Field of Multivariate Polynomial Ring in t, a0 over Rational Field)

And anyway this last solution does not seem very canonical. How should I proceed? I guess that somehow what I am asking is how to declare a0, a1, ... as symbols element of QQt.

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
2

answered 2018-02-01 17:54:51 +0100

FrédéricC gravatar image

updated 2018-02-01 17:58:15 +0100

Like that (avoid using var is my best advice)

sage: eqsys = a0*(t+1)-1
sage: sln = solve(SR(eqsys), SR(a0),solution_dict=True)[0]; sln
{a0: 1/(t + 1)}
sage: eqsys.subs({QQt(a): QQt(b) for a, b in sln.items()})
0

A bit heavy of course.

Then you should use subs on every coefficient

edit flag offensive delete link more

Comments

In the end this worked. For future reference, in more general cases I ended up with systems of equations in QQ['alpha, 'a0', 'a1', ...].fraction_field() which produced big expressions that somehow sage was confused about (it tried to expand the fractions as power series instead of factoring and simplifying). Factoring and simplifying did not work since the gcd was not well defined. I ended up sending the system of equation to singular for simplification, then back to sage, converted to symbolic ring, solved, converted the solution back to my ring. It still looks like a crazy workaround to me though, but it does work.

LAV gravatar imageLAV ( 2018-02-06 14:02:07 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2018-02-01 15:48:50 +0100

Seen: 640 times

Last updated: Feb 01 '18