1

The following code:

from sympy import *

a, b = symbols("a b")
eqs = [ a + b - 3j, a - b - 2 ]
print(solve(eqs, [a, b]))

prints:

{a: 1.0 + 1.5*I, b: -1.0 + 1.5*I}

I'd like the results to be returned as complex rational numbers not floating point numbers, e.g.:

{a: 1 + 3/2*I, b: -1 + 3/2*I }

Is there a way to do that?

ErikR
  • 51,541
  • 9
  • 73
  • 124

1 Answers1

2

a + 3j becomse a + 3.0*I when parsed by SymPy; to keep it Rational, use SymPy's I:

>>> from sympy import I
>>> eqs = [ a + b - 3*I, a - b - 2 ]
>>> solve(eqs, [a, b])
{a: 1 + 3*I/2, b: -1 + 3*I/2}
smichr
  • 16,948
  • 2
  • 27
  • 34