PDE Classification
Mathematical classification of partial differential equations into elliptic, parabolic, and hyperbolic types using the discriminant formula. Different PDE types require completely different solution methods and have distinct physical interpretations.
π
Mathematical Definition
For a general second-order PDE:
The discriminant is:
Classification: - β Elliptic (e.g., Laplace: ) - β Parabolic (e.g., Heat: ) - β Hyperbolic (e.g., Wave: )
Code Examples
Wave Equation Classification (Hyperbolic)
Wave equation has positive discriminant and is classified as hyperbolic
let u = symbol!(u);
let x = symbol!(x);
let t = symbol!(t);
// Wave equation structure
let equation = expr!(mul: x, t);
let pde = Pde::new(equation, u, vec![x, t]);
// Automatic classification
let pde_type = pde.pde_type();
assert_eq!(pde_type, Some(PdeType::Hyperbolic));
// Discriminant computation
let disc = pde.compute_discriminant();
assert!(disc > 0.0);
assert_eq!(disc, 4.0);
Heat Equation Classification (Parabolic)
Heat equation has zero discriminant and is classified as parabolic
let u = symbol!(u);
let x = symbol!(x);
let t = symbol!(t);
// Heat equation structure
let equation = expr!(add: x, t);
let pde = Pde::new(equation, u, vec![x, t]);
// Automatic classification
let pde_type = pde.pde_type();
assert_eq!(pde_type, Some(PdeType::Parabolic));
// Discriminant
let disc = pde.compute_discriminant();
assert_eq!(disc.abs(), 0.0);
Laplace Equation Classification (Elliptic)
Laplace equation has negative discriminant and is classified as elliptic
let u = symbol!(u);
let x = symbol!(x);
let y = symbol!(y);
// Laplace equation structure
let equation = expr!(add: x, y);
let pde = Pde::new(equation, u, vec![x, y]);
// Automatic classification
let pde_type = pde.pde_type();
assert_eq!(pde_type, Some(PdeType::Elliptic));
// Discriminant
let disc = pde.compute_discriminant();
assert!(disc < 0.0);
assert_eq!(disc, -4.0);