Related Articles

Solve Linear Equations using eval() in Python

• Last Updated : 26 Mar, 2021

Linear equations using one variable of the form a + bx = c + dx can be solved in Python using eval() function. The input type will be a linear equation in the form of a string.

Syntax:

`eval(expression, globals=None, locals=None)`

Here, we will transform the equation into an expression of real and imaginary numbers such that eval can easily process it.

For example, 5x + 4 = 2x + 10 becomes 5j + 4 – (2j + 10) by shifting all the terms on the right side to the left. We are transforming this equation into a complex equation because eval() is unable to otherwise process the equations. Transforming it into a complex number helps in faster evaluation.

Step 1: We will use the replace() in python to replace “=” with “-(” and replace “x” with “j”.

Step 2: The string is then added with “+)” to complete the expression.

Step 3: Then { “j” : 1j} is done to change the equation into a format that can be easily evaluated by the eval() function. In this step all the constant terms are evaluated and the x terms or the imaginary terms as well.

Step 4: Then the evaluated expression is simply broken down into the real and imaginary parts. If the imaginary part exists or the x is true and not zero the answer is printed else if the imaginary part is 0 and the real part is true there is no solution or else there are infinite solutions. Here,

`x = 2.000000`

is the final solution.

Example 1:

Python3

 `def` `solve(equation):``   ` `    ``# replacing all the x terms with j ``    ``# the imaginary part``    ``s1 ``=` `equation.replace(``'x'``, ``'j'``)``     ` `    ``# shifting the equal sign to start ``    ``# an opening bracket``    ``s2 ``=` `s1.replace(``'='``, ``'-('``)``     ` `    ``# adding the closing bracket to form ``    ``# a complete expression``    ``s ``=` `s2``+``')'``     ` `    ``# mapping the literal j to the complex j``    ``z ``=` `eval``(s, {``'j'``: ``1j``})``    ``real, imag ``=` `z.real, ``-``z.imag``     ` `    ``# if the imaginary part is true return the``    ``# answer``    ``if` `imag:``        ``return` `"x = %f"` `%` `(real``/``imag)``    ``else``:``        ``if` `real:``            ``return` `"No solution"``        ``else``:``            ``return` `"Infinite solutions"`` ` ` ` `equation ``=` `"2+3x=5x-7"``print``(solve(equation))`
Output
`x = 4.500000`

Example 2:

Python3

 `def` `solve(equation):``   ` `    ``# replacing all the x terms with j ``    ``# the imaginary part``    ``s1 ``=` `equation.replace(``'x'``, ``'j'``)``     ` `    ``# shifting the equal sign to start ``    ``# an opening bracket``    ``s2 ``=` `s1.replace(``'='``, ``'-('``)``     ` `    ``# adding the closing bracket to form ``    ``# a complete expression``    ``s ``=` `s2``+``')'``     ` `    ``# mapping the literal j to the complex j``    ``z ``=` `eval``(s, {``'j'``: ``1j``})``    ``real, imag ``=` `z.real, ``-``z.imag``     ` `    ``# if the imaginary part is true return the``    ``# answer``    ``if` `imag:``        ``return` `"x = %f"` `%` `(real``/``imag)``    ``else``:``        ``if` `real:``            ``return` `"No solution"``        ``else``:``            ``return` `"Infinite solutions"`` ` ` ` `equation ``=` `"x=x+10"``print``(solve(equation))`
Output
`No solution`

Example 3:

Python3

 `def` `solve(equation):``   ` `    ``# replacing all the x terms with j``    ``# the imaginary part``    ``s1 ``=` `equation.replace(``'x'``, ``'j'``)``     ` `    ``# shifting the equal sign to start ``    ``# an opening bracket``    ``s2 ``=` `s1.replace(``'='``, ``'-('``)``     ` `    ``# adding the closing bracket to form ``    ``# a complete expression``    ``s ``=` `s2``+``')'``     ` `    ``# mapping the literal j to the complex j``    ``z ``=` `eval``(s, {``'j'``: ``1j``})``    ``real, imag ``=` `z.real, ``-``z.imag``     ` `    ``# if the imaginary part is true return the``    ``# answer``    ``if` `imag:``        ``return` `"x = %f"` `%` `(real``/``imag)``    ``else``:``        ``if` `real:``            ``return` `"No solution"``        ``else``:``            ``return` `"Infinite solutions"`` ` ` ` `equation ``=` `"2x=2x"``print``(solve(equation))`
Output
`Infinite solutions`

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up