This repository contains Jupyter notebooks for the TensorFlow implementation of PINNs for solving Differential Equations (in a given domain, outside the domain the neural network fails to encapsulate the PDE).
(There is another application, which is to find the parameters of a DE by fitting a PINN to the “data”, which is the solution of the DE. This is not considered here. Rather we have, so far, only considered PINNs to find the solution for a given DE)
The primary idea behind PINNs is to use a neural network to approximate the solution of a PDE. This is based on the Kolmogorov-Arnold representation theorem, which states that any continuous multivariate function can be represented as a finite composition of continuous functions of single variables, and the binary operation of addition. That is, given a function
where
We use the above theorem to represent the solution of a PDE as a neural network, and then train the neural network to minimize the residual of the PDE, i.e., the difference between the left-hand side and the right-hand side of the PDE. Therefore, given a PDE of the form
where
where the
We implement the PINNs using both the TensorFlow and PyTorch libraries.
The project was initially implemented in TensorFlow, but later a PyTorch implementation of the same was also implemented.
For more details, refer the readmes in the respective folders.