1 | initial version |
The function coefficients
may help you, though it is not exactly what you requested for at least three reasons:
sage: e = trm.expand()
sage: e.coefficients(sqrt(2))
[[2*sqrt(2)*c + 3*a + c + 4*d, 0], [3*b + d, 1]]
The three problems:
It is not written in the same way as you want, but you can obtain a closer expression like this:
sage: sum([cc[0] * sqrt(2)^cc[1] for cc in c])
sqrt(2)*(3*b + d) + 2*sqrt(2)*c + 3*a + c + 4*d
The second, more disturbing problem, is that coefficients
seem not to produce what we would like in this case. In particular, we would like to have
sage: e.coefficients(sqrt(2))
[[3*a + c + 4*d, 0], [2*c + 3*b + d, 1]]
I do not now why this is not the case. It may be a bug.
Finally, this works for only one square root as such. Maybe some modification can yield the result with several square roots.