Maybe the following is what you want.
Having defined:
sage: R2.<a0, a1, a2, a3, a4, b0, b1, b2, b3, b4, z, w, l, E, E1, v, t> = QQ[]
sage: R.<x> = PowerSeriesRing(R2)
sage: p = a1 * x - a1 * z * x^2 + a3 * x^3 + a4 * x^4 + O(x^12)
sage: p1 = p.derivative()
sage: p2 = p1.derivative()
sage: k = b1 * x + b2 * x^2 + b3 * x^3 + b4 * x^4 + O(x^12)
sage: y = 2/x * (z - v * x) - E
sage: g = x * (p2 + y * p - x - E1 * k)
we get:
sage: g
(-2*a1*z^2 - a1*E - b1*E1 - 2*a1*v + 6*a3 - 1)*x^2
+ (a1*z*E + 2*a1*z*v + 2*a3*z - b2*E1 + 12*a4)*x^3
+ (2*a4*z - a3*E - b3*E1 - 2*a3*v)*x^4
+ (-a4*E - b4*E1 - 2*a4*v)*x^5
+ O(x^11)
Let's look at the coefficients of g
, and specifically the constant one:
sage: cc = g.coefficients()
sage: cc
[-2*a1*z^2 - a1*E - b1*E1 - 2*a1*v + 6*a3 - 1,
a1*z*E + 2*a1*z*v + 2*a3*z - b2*E1 + 12*a4,
2*a4*z - a3*E - b3*E1 - 2*a3*v,
-a4*E - b4*E1 - 2*a4*v]
sage: c = cc[0]
sage: c
-2*a1*z^2 - a1*E - b1*E1 - 2*a1*v + 6*a3 - 1
Dirty trick: to solve, move to the symbolic ring via strings:
sage: eq = SR(str(c))
sage: eq
-2*a1*z^2 - E*a1 - E1*b1 - 2*a1*v + 6*a3 - 1
sage: symbolic_a3 = SR('a3')
sage: sol = solve([eq], symbolic_a3, solution_dict=True)
sage: sol
[{a3: 1/3*a1*z^2 + 1/6*E*a1 + 1/6*E1*b1 + 1/3*a1*v + 1/6}]
Extract the value and take it back to the polynomial ring:
sage: s = sol[0]
sage: s
{a3: 1/3*a1*z^2 + 1/6*E*a1 + 1/6*E1*b1 + 1/3*a1*v + 1/6}
sage: my_symbolic_a3 = s[symbolic_a3]
sage: my_symbolic_a3
1/3*a1*z^2 + 1/6*E*a1 + 1/6*E1*b1 + 1/3*a1*v + 1/6
sage: my_a3 = R2(my_symbolic_a3)
sage: my_a3
1/3*a1*z^2 + 1/6*E*a1 + 1/6*E1*b1 + 1/3*a1*v + 1/6
solve
is supposed to have (a listof) symbolic expressions (or symbolic expressions) as first argument, and (al list of) symbolic variables as second argument. in the callsolve(v1[0], a3)
, both arguments are polynomials :A possible workaround is :
but note that
I do not understand what
is supposed to mean...
By
x = 2/x * a1 * w * x**2
do you mean that2*a1*w
should be considered equal to1
?