In [1]:
import sympy as sym
import numpy as np
from IPython.display import display, Math
from sympy.abc import w,x,y,z,a,b,c,d
sym.init_printing()
In [2]:
# associative
expr1 = x*(4*y)
expr2 = (x*4)*y

expr1 == expr2
Out[2]:
True
In [3]:
expr1 - expr2
Out[3]:
$$0$$
In [4]:
# commutative
e1 = 4*x*y
e2 = x*4*y
e3 = y*x*4
In [5]:
print(e1.subs({x:3,y:2}))
print(e2.subs({x:3,y:2}))
print(e3.subs({x:3,y:2}))
24
24
24
In [6]:
# distributive
#a,b,c,d = sym.symbols('a,b,c,d')

expr = (a+b)*(c+d)
expr
Out[6]:
$$\left(a + b\right) \left(c + d\right)$$
In [7]:
sym.expand(expr)
Out[7]:
$$a c + a d + b c + b d$$
In [8]:
x = w*(4-w)+1/w**2*(1+w)
f1 = x*(y+z)
f2 = 3/x + x**2

display(f1*f2)
display(sym.simplify(f1*f2))

display(sym.simplify(f1*f2 - f2*f1))
$$\left(y + z\right) \left(w \left(- w + 4\right) + \frac{1}{w^{2}} \left(w + 1\right)\right) \left(\left(w \left(- w + 4\right) + \frac{1}{w^{2}} \left(w + 1\right)\right)^{2} + \frac{3}{w \left(- w + 4\right) + \frac{1}{w^{2}} \left(w + 1\right)}\right)$$
$$\frac{1}{w^{6}} \left(3 w^{6} + \left(- w^{3} \left(w - 4\right) + w + 1\right)^{3}\right) \left(y + z\right)$$
$$0$$