# Solve for all values of a variable

Hello,

solve(a*x+b==c*x+d,a,b)

Output: ([a == (c*x - b + d)/x], [1])

I need: [a==c, b==d] for all x.

Thanks!

Solve for all values of a variable

Hello,

solve(a*x+b==c*x+d,a,b)

Output: ([a == (c*x - b + d)/x], [1])

I need: [a==c, b==d] for all x.

Thanks!

add a comment

1

If you want to match coefficients of like terms, you could do something like

```
from collections import defaultdict
def solve_matched_polynomials(eq, coeff_vars):
# get the non-coefficient variables
vv = sorted(set(eq.variables()).difference(coeff_vars))
# make sure they're polynomials
assert all(eq.lhs().is_polynomial(v) and eq.rhs().is_polynomial(v) for v in vv)
d = defaultdict(Integer)
# loop over each term in the equation
for term in (eq.lhs().operands())+(-(eq.rhs())).operands():
# get the degrees of the variables
vsig = tuple(term.degree(v) for v in vv)
# find the non-variable part
d[vsig] += term/(prod(v**vs for v,vs in zip(vv, vsig)))
# get solutions with free variables
return solns = solve(d.values(), coeff_vars)
```

which will return the standard free variables form

```
sage: solve_matched_polynomials(5*a*x^2*y+b*x+y == 4*c*x**2*y-d*y, [a,b,c,d])
[[a == 4/5*r66, b == 0, c == r66, d == -1]]
```

and then if you really wanted to eliminate the free variables, you could.

Asked: **
2011-01-22 19:10:25 -0500
**

Seen: **268 times**

Last updated: **Jan 23 '11**

obtaining all numerical roots of a function in an interval

Newton method for one variable

Plot the level sets of a function

solve equation with double sum

solve a system of two equations for a derivative

Solve behaviour on same equation twice

solve an equation in terms of an expression?

How to make solve to use certain variables on the right side

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.