embedded-schrodinger
Solveur de l'équation de Schrödinger indépendante du temps en 1D conçu
pour les systèmes embarqués (no_std, sans libm, sans liaison C,
sans unsafe).
Méthode numérique
La résolution repose sur la méthode de tir (shooting method) :
- Pour une énergie candidate
E, la fonction d'ondeψest propagée de gauche à droite via la relation de récurrence des différences finies centrées :
ψᵢ₊₁ = 2ψᵢ − ψᵢ₋₁ − (2m·dx²/ħ²)(E − V(xᵢ))ψᵢ
- Une dichotomie binaire (30 itérations) ajuste
Ejusqu'à ce queψ(xₙ) ≈ 0(condition aux limites du puits infini). La logique de signe est la suivante :ψ(xₙ) > 0→Eest trop faible → on relèvee_minψ(xₙ) < 0→Eest trop élevé → on abaissee_max
- La fonction d'onde convergée est normalisée :
∫|ψ|² dx = 1.
Caractéristiques
| Propriété | Valeur |
|---|---|
no_std |
✅ oui |
libm |
❌ aucun recours |
| Liaison C | ❌ aucune |
unsafe |
❌ #![forbid(unsafe_code)] |
| Racine carrée | Newton-Raphson via embedded-f32-sqrt |
| Précision | f32 (IEEE 754 simple précision) |
| Cibles validées | Cortex-M33, Cortex-M4F et hôte |
Installation
Dans votre Cargo.toml :
[]
= "0.1"
Exemple rapide
use SchrodingerSolver;
const N: usize = 200;
// Puits de potentiel infini (V = 0 à l'intérieur)
let potential = ;
// Unités atomiques : ħ = 1, m = 1, dx = L/N avec L = 1
let solver = new;
let mut psi = ;
let energy = solver
.find_eigenstate
.expect;
// E₁ = π²/2 ≈ 4.935 en unités atomiques pour L = 1
println!;
Dépendances
| Crate | Rôle |
|---|---|
embedded-f32-sqrt |
Racine carrée f32 Newton-Raphson, no_std |
Aucune autre dépendance. Aucun accès au système d'exploitation.
Licence
Ce logiciel est distribué sous les termes de la GNU General Public License version 2 (GPL-2.0-only).
Voir https://www.gnu.org/licenses/old-licenses/gpl-2.0.html pour le texte complet de la licence.
Copyright (C) 2025 Jorge Andre Castro.