I've used CoefficientArrays for stuff like this.
I.e. CoefficientArrays[expression, t] will give a list of sparse-arrays of coefficients of $t^n$ in expression, where $n$ ranges from $0$ to the highest power of $t$ present.
So Flatten[Normal/@CoefficientArrays[a t == 1,t]] yields:
{-1, a}
All of which you want to be zero. So you can apply #==0&/@ the output and have all the equations you want available to pipe into Reduce or the favorite solver of your choice.
All the zeros in sparse matrices from complete set of possible monomials can be a little overwhelming especially at higher orders, so I tend to use ArrayRules as follows:
treatAsBasisPolys[expr_, vars_] := Map[Last[#] == 0 &,
Flatten[(ArrayRules /@ CoefficientArrays[expr, Flatten[{vars}]]) /.
ArrayRules[a_] :> {} -> a
(* This last rule is a cheap hack to deal with the fact:
first element returned by CoefficientArrays is a scalar *)
]
]
Examples:
treatAsBasisPolys[a T == 1, T] // Reduce $\mapsto$
False
treatAsBasisPolys[a T == b, T] // Reduce $\mapsto$
b == 0 && a == 0
treatAsBasisPolys[a U + b V == c, {U, V}] // Reduce $\mapsto$
b == 0 && c == 0 && a == 0
treatAsBasisPolys[a u + b v + c u v == 15 u v, {u, v}] // Reduce
$\mapsto$
b == 0 && c == 15 && a == 0
treatAsBasisPolys[a U + b V + c U V + d + q U^18 == (13 + g U) (-3 + k V),
{U, V}] // Reduce $\mapsto$
d == -39 && q == 0 && c == g k && b == 13 k && a == -3 g
tto be a given polynomial of orderninaby completing the system of equations and then there will ben+1complex solutions to the equations. Otherwise the system will not try to guess what you might want. Nontheless there are some options inSolvelikeMaxExtraConditions,Method->Reduceetc.. Take a look e.g. at What is the difference between Reduce and Solve? – Artes Aug 08 '17 at 18:04SolveAlways[a t == 1, t]orSolveAlways[a + b t ==t, t]? – Carl Woll Aug 08 '17 at 18:14Out[831]= t != 0 && a == 1/t` ??
– Daniel Lichtblau Aug 16 '17 at 18:30