<- previous index next ->
Some of the most difficult to solve PDE's have an
"order" greater than one. These are nonlinear PDE's.
A specific problem, challenge if you prefer, is the
possibility of "non physical solutions" and
"bifurcating solutions" in addition to no possible solution.
A small change in the boundary conditions or a different
starting vector for the nonlinear solver can produce
different results with no way of knowing the result is
ambiguous.
A PDE having any product or ratio of U, Ux, Uxx, etc.
is nonlinear.
Several nonlinear PDE of interest are:
Second order, third degree:
U^2 U'' + 2 U U' + 3U = f(x)
Reciprocal nonlinear:
D U' - E(x) U'/U^2 - F U'' = f(x)
An example that can handle up to third degree nonlinear systems of
equations is shown by using a Newton iteration based on the inverse
of the Jacobian:
x_next = x_prev - J^-1 * ( A * x_prev - Y)
Java nonlinear
simeq_newton5.java basic solver
test_simeq_newton5.java test program
test_simeq_newton5_java.out test_output
on four test cases (automatic adjusting heuristic used)
A linear PDE using conventional Finite Element Method, FEM, works:
source code fem_nl11_la.java
output fem_nl11_la_java.out
A nonlinear PDE using conventional FEM does not work.
source code fem_nl12_la.java
output fem_nl12_la_java.out
(very similar, nonlinear, fails)
Discretization works on nonlinear PDE's:
source code pde_nl21.java
output pde_nl21_java.out
source code pde_nl22.java
output pde_nl22_java.out
solver simeq_newton5.java
Ada nonlinear PDE
simeq_newton5.adb basic solver
test_simeq_newton5.adb test program
test_simeq_newton5_ada.out test_output
on five test cases (automatic adjusting heuristic used)
hard coded nonlinear coefficients, non unique solution
source code pde_nl13.adb
output pde_nl13_ada.out
solver simeq_newton5.adb
automated computation of nonlinear coefficients, still non unique solution
source code pde_nl13a.adb
output pde_nl13a_ada.out
solver simeq_newton5.adb
More examples with many checks:
source code pde_nl21.adb
output pde_nl21_ada.out
source code pde_nl22.adb
output pde_nl22_ada.out
Third order PDE in 3 dimensions with 3rd degree nonlinearity.
Demonstrates use of least square fit of boundary as an
initial guess to solve nonlinear system of equations.
See Lecture 4 for lsfit.ads, lsfit.adb
source code pde_nl33.adb
output pde_nl33_ada.out
C nonlinear
source code pde_nl13.c
output pde_nl13_c.out
solver simeq_newton5.c
header simeq_newton5.h
difficulties
The nonlinear PDE can not be solved by simple application
of Finite Element Method, covered in lecture 32.
For example, the above nonlinear PDE is not solved by:
source code fem_checknl_la.c
output fem_checknl_la_c.out
Using discretization with a nonlinear solver, such as simeq_newton5,
works accurately and efficiently.
Kuramoto-Sivashinsky nonlinear
There seem to be many variations of the Kuramoto-Sivashinsky
non linear, fourth order PDE, depending on the physical problem.
I have seen in various reference papers:
Ut + Uxxxx + Uxx + 1/2 (Ux)^2 = 0 mainly variations in the last term, and
∂U(x,t)/∂t + ∂^4 U(x,t)/∂x^4 + ∂^2 U(x,t)/∂x^2 -(∂U(x,t)/∂x)^2 = 0
In the figure below, read h as U, read y as t.
For nonlinear PDE to be solved by solving a system of equations,
the simultaneous equations are non linear.
To solve a system of nonlinear equations reasonably efficiently,
use a Jacobian matrix and an iterative solution and adaptive
solver such as simeq_newton5, available in a few languages.
<- previous index next ->