## What is symbolic computation?

"Symbolic computation deals with the computation of mathematical objects symbolically. This means that the mathematical objects are represented exactly, not approximately, and mathematical expressions with unevaluated variables are left in symbolic form."

- [SymPy Documentation](https://docs.sympy.org/latest/tutorial/intro.html)

### A More Interesting Example


```python
from sympy import *
init_printing()
```


```python
#Definimos los símbolos (SymPy) 'x' e 'y' y los definimos en las 
#variables (Python) 'x' e 'y'
x,y=symbols('x y')

expr=x+2*y
expr
```


```python
type(x)
```




    sympy.core.symbol.Symbol




```python
expr+1
```


```python
expr-x
```


```python
#No expande automáticamente
x*expr
```


```python
#Podemos expandir una expresión o factorizarla de la siguiente forma+
from sympy import expand, factor
expanded_expr=expand(x*expr)
expanded_expr
```


```python
factor_expr=factor(expanded_expr)
factor_expr
```

### The Power of Symbolic Computation


```python
x,t,z,nu=symbols('x t z nu')
```


```python
#Tomamos la derivsada de cos(x**2)/x
diff(cos(x**2)/x,x)
```


```python
#Podemos ver la versión simbólica de output anterior usando 
#la función print()
print(_)
```

    -2*sin(x**2) - cos(x**2)/x**2



```python
#Calculemos la integral de exp(x)*sin(x)+exp(x)*cos(x)
integrate(exp(x)*sin(x)+exp(x)*cos(x),x)
```


```python
#Calculemos la integral de exp(-x**2) desde -oo hatsta +oo
integrate(exp(-x**2),(x,-oo,+oo))
```


```python
#Calcular el límite de (sin(x+t)-sin(x))/t cuando t va a 0
limit((sin(x+t)-sin(x))/t,t,0)
```


```python
#De igual forma
limit((cos(x+t)-cos(x))/t,t,0)
```


```python
#Por defecto el límite se toma por la derecha. 
#Por ejemplo, calculemos el límite cuando 'x' va a cero,
#luego por la derecha e izquierda de la siguiente expresión

abs(sin(x))/sin(x)
```


```python
limit(_,x,0)
```


```python
limit(abs(sin(x))/sin(x),x,0,'+')
```


```python
limit(abs(sin(x))/sin(x),x,0,'-')
```


```python
#También podemos imprimir las expresiones que vamos a computar
Integral(cos(z)*sin(nu),z,nu)
```


```python
r,phi,theta,R=symbols('r phi theta R')
```


```python
Integral(r**2*sin(theta),(theta,0,pi),(phi,0,2*pi),(r,0,R))
```


```python
integrate(r**2*sin(theta),(theta,0,pi),(phi,0,2*pi),(r,0,R))
```


```python
Limit(exp(cos(t**2)),t,5,'+')
```


```python
#Podemos resolver ecuaciones introduciendo en el código la expresión
#que es igual a cero. Por ejemplo, resolvamos la siguiente expresión
```

$x^2-2=0\quad\quad\quad\quad(1)$


```python
solve(x**2-2,x)
```


```python
#Otra forma de igualar la parte izqueirda y derecha de la ecuación (1)
#es mediante la instrucción 'Eq()'
```


```python
Eq(x**2-2,0)
```


```python
solve(_,x)
```


```python
#Resolvamos la siguiente ecuación diferencial
```

$y''-y=e^t\quad\quad\quad\quad(2)$


```python
#Primero definimos 'y' como una función y a continuación establecemos
#su argumento
y=Function('y')

#Ahora aplicamos la primera derivada
y(t).diff(t)
```


```python
#Ahora aplicamos la segunda derivada
y(t).diff(t,t)
```


```python
#Veamos el código simbólico
print(_)
```

    Derivative(y(t), (t, 2))



```python
#Ahora sí, a resolver la ecuación diferencial usando 'Eq()'
dsolve(Eq(y(t).diff(t,t)-y(t),exp(t)),y(t))
```


```python
Eq(4*t*y(t).diff(t,t)+y(t).diff(t)-y(t),0)
```


```python
dsolve(_)
```


```python
print(latex(_))
```

    y{\left(t \right)} = t^{\frac{3}{8}} \left(C_{1} J_{\frac{3}{4}}\left(i \sqrt{t}\right) + C_{2} Y_{\frac{3}{4}}\left(i \sqrt{t}\right)\right)



```python
#Calculemos los autovalores de la siguiente matriz
```

$\begin{pmatrix}
0 & -i\\
i & 0
\end{pmatrix}
$


```python
Matrix([[0,-I],[I,0]]).eigenvals()
#En el resultado tenemos un diccionario donde el 'key' es el autovalor
#y el 'value' es la multiplicidad
```


```python
#Por úñtimo podemos imprimir en código LaTeX para poder copiar
#directamente a nuestro documento. Para ello usamos 'print()' y 'latex()'
Integral(cos(x)**2, (x, 0, pi))

```


```python
print(latex(_))
```

    \int\limits_{0}^{\pi} \cos^{2}{\left(x \right)}\, dx



```python
print(Integral(cos(x)**2, (x, 0, pi)))
```

    Integral(cos(x)**2, (x, 0, pi))


b9383235d504cea9fefb62088498f7dc6b33ed21
ipynb
Jupyter Notebook
IntroToSciPy/SymPy/SymPyTutorial/Introduction.ipynb
migueloayza/LearningPython
00fe5e0072d16cb5caa10f546d2708b1beb8c30b
MIT
IntroToSciPy/SymPy/SymPyTutorial/Introduction.ipynb
migueloayza/LearningPython
00fe5e0072d16cb5caa10f546d2708b1beb8c30b
MIT
IntroToSciPy/SymPy/SymPyTutorial/Introduction.ipynb
migueloayza/LearningPython
00fe5e0072d16cb5caa10f546d2708b1beb8c30b
MIT
Qwen/Qwen-72B
1. YES
2. YES