Type changing after substitution

Does anyone knows why after the substitution below, the scaled_s21 variable becomes of type 'sage.symbolic.expression.Expression' instead of continuing as 'sage.rings.fraction_field_element.FractionFieldElement_1poly_field'?

I'm confused. I just wanted to use the numerator() and denominator() methods, but with the type changing, I'm unable.

Thnak you!

s = polygen(CC, "s")
p = 0.894289785676221
e = s^4 + 2.14081977623463*s^3 + 3.15237117897600*s^2 + 2.31898630138664*s + 0.902488008823108
s21 = p/e
print(s21)
print(type(s21))
print(s21.parent())
omega0 = sqrt(2*pi*750e6*2*pi*1250e6)
scaled_s21 = s21.subs(s=omega0/(2*pi*1250e6-2*pi*750e6)*(s/omega0 + omega0/s))
print(scaled_s21)
print(type(scaled_s21))
print(scaled_s21.parent())


Output:

0.894289785676221/(s^4 + 2.14081977623463*s^3 + 3.15237117897600*s^2 + 2.31898630138664*s + 0.902488008823108)
<class 'sage.rings.fraction_field_element.FractionFieldElement_1poly_field'>
Fraction Field of Univariate Polynomial Ring in s over Complex Field with 53 bits of precision
0.894289785676221/(1.00000000000000*(3.75000000000000e9*pi/s + (1.00000000000000e-9)*s/pi)^4 + 2.14081977623463*(3.75000000000000e9*pi/s + (1.00000000000000e-9)*s/pi)^3 + 3.15237117897600*(3.75000000000000e9*pi/s + (1.00000000000000e-9)*s/pi)^2 + 8.69619863019990e9*pi/s + (2.31898630138664e-9)*s/pi + 0.902488008823108)
<type 'sage.symbolic.expression.Expression'>
Symbolic Ring

edit retag close merge delete

Sort by ยป oldest newest most voted

This is because in Sage, pi lives in the Symbolic Ring.

Define pi as an element of CC before defining omega0, as follows:

pi = CC.pi()


and you will obtain the desired behaviour.

sage: pi = CC.pi()
sage: s = polygen(CC)
sage: p = 0.894289785676221
sage: e = s^4 + 2.14081977623463*s^3 + 3.15237117897600*s^2 + 2.31898630138664*s + 0.902488008823108
sage: s21 = p/e
sage: s21
0.894289785676221/(x^4 + 2.14081977623463*x^3 + 3.15237117897600*x^2 + 2.31898630138664*x + 0.902488008823108)
sage: s21.parent()
Fraction Field of Univariate Polynomial Ring in x over Complex Field with 53 bits of precision
sage: omega0 = sqrt(2*pi*750e6*2*pi*1250e6)
sage: scaled_s21 = s21.subs(s=omega0/(2*pi*1250e6-2*pi*750e6)*(s/omega0 + omega0/s))
sage: scaled_s21
0.894289785676221/(x^4 + 2.14081977623463*x^3 + 3.15237117897600*x^2 + 2.31898630138664*x + 0.902488008823108)
sage: scaled_s21.parent()
Fraction Field of Univariate Polynomial Ring in x over Complex Field with 53 bits of precision
sage: scaled_s21.numerator()
0.894289785676221
sage: scaled_s21.denominator()
x^4 + 2.14081977623463*x^3 + 3.15237117897600*x^2 + 2.31898630138664*x + 0.902488008823108

more

Thank you, I was never going to find this out.

( 2018-06-14 07:57:48 -0600 )edit