# Using sympy for a PDE

## Contents

# Using `sympy`

for a PDE¶

If we already know the form of the solution to a PDE, then there is no difference from the approach we just demonstrated with the simple harmonic oscillator.

However, PDEs are more diverse and difficult to solve in general and it is
very unlikely that you will be able to treat `sympy`

as a black box for this.
The documentation for the PDE solvers is here: https://docs.sympy.org/latest/modules/solvers/pde.html

\[
\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2}
\]

Let’s just check to see that we can write this in the appropriate symbolic form that we can form the relevant derivatives

```
import sympy
import math
import numpy as np
```

## Symbolic approach¶

```
from sympy.core.symbol import Symbol
from sympy.core.function import Function
t = Symbol('t')
x = Symbol('x')
c = Symbol('c', positive=True)
omega = Symbol('omega', positive=True)
k = Symbol('k', positive=True)
U = Function('U')
# Potential solution
X = sympy.exp(-sympy.I * omega * t -sympy.I * k * x)
X
```

```
F = U(t,x).diff(t,2) - c**2 * U(t,x).diff(x,2)
eq=sympy.Eq(F, 0)
eq
```

```
eq=sympy.Eq(F, 0)
eq
```

```
eq2 = eq.replace(U(t,x), X).simplify()
eq2
```

```
sympy.solve(eq2, k)
```

```
eq2.subs(k, omega/c )
```