diff --git a/README.md b/README.md index 10f0fd8a..79653fbc 100644 --- a/README.md +++ b/README.md @@ -70,11 +70,13 @@ Flux.@epochs 50 Flux.train!(loss, params(model), data, opt) PDE training examples are provided in `example` folder. -### One-dimensional Fourier neural operator +### One-dimensional Fourier Neural Operator [Burgers' equation](example/Burgers) -### Two-dimensional with time Navier-Stokes equation +### Two-dimensional Fourier Neural Operator + +[Double Pendulum](example/DoublePendulum) ### Markov Neural Operator diff --git a/example/DoublePendulum/README.md b/example/DoublePendulum/README.md new file mode 100644 index 00000000..f7019f61 --- /dev/null +++ b/example/DoublePendulum/README.md @@ -0,0 +1,20 @@ +# Double pendulum + +A [double pendulum](https://www.wikiwand.com/en/Double_pendulum) is a pendulum with another pendulum attached to its end. +In is example, instead of learning from a well-described equation of motion, +we train the model with the famous dataset provided by IBM. +The equation of motion to the real experiments of double pendulum is learned by a two-dimensional Fourier neural operator. +It learns to inference the next 30 steps with the given first 30 steps. +The result of this example can be found [here](https://foldfelis.github.io/NeuralOperators.jl/dev/assets/notebook/double_pendulum.jl.html). + +![](gallery/result.gif) + +By inference the result recurrently, we can generate up to 150 steps with the first 30 initial steps. + +Change directory to `example/DoublePendulum` and use following commend to train model: + +```julia +$ julia --proj + +julia> using DoublePendulum; DoublePendulum.train() +```