Imports
/- Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Joseph Tooby-Smith -/ module public import Physlib.QuantumMechanics.HarmonicOscillator.OneDimension.Eigenfunction

The time-independent Schrodinger equation

@[expose] public section

Derivatives of the eigenfunctions

Q:HarmonicOscillatorx:h1:deriv (fun x => Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) x = -x / Q.ξ ^ 2 * Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2))1 / (Real.pi * Q.ξ) * (-x / Q.ξ ^ 2 * Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) = -1 / (Q.ξ ^ 2) * (x * (1 / (Real.pi * Q.ξ) * Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorx:h1:deriv (fun x => Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) x = -x / Q.ξ ^ 2 * Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2))(↑Q.ξ)⁻¹ * (↑Real.pi)⁻¹ * (-x / Q.ξ ^ 2 * Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) = -1 / Q.ξ ^ 2 * (x * ((↑Q.ξ)⁻¹ * (↑Real.pi)⁻¹ * Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) All goals completed! 🐙Q:HarmonicOscillator(-1 / Q.ξ ^ 2) Complex.ofReal * Q.eigenfunction 0 = (-2 / (2 * Q.ξ)) Q.eigenfunction 1 Q:HarmonicOscillatorx:((-1 / Q.ξ ^ 2) Complex.ofReal * Q.eigenfunction 0) x = ((-2 / (2 * Q.ξ)) Q.eigenfunction 1) x Q:HarmonicOscillatorx:-1 / Q.ξ ^ 2 * x * ((↑Q.ξ)⁻¹ * (↑Real.pi)⁻¹ * Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) = -2 / (2 * Q.ξ) * ((↑2)⁻¹ * ((↑Q.ξ)⁻¹ * (↑Real.pi)⁻¹) * (2 * (x / Q.ξ) * Complex.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorx:-((↑Q.ξ)⁻¹ ^ 2 * x * (↑Q.ξ)⁻¹ * (↑Real.pi)⁻¹ * Complex.exp ((↑Q.ξ)⁻¹ ^ 2 * x ^ 2 * (-1 / 2))) = -((↑Q.ξ)⁻¹ ^ 2 * x * (↑Q.ξ)⁻¹ * (↑Real.pi)⁻¹ * Complex.exp ((↑Q.ξ)⁻¹ ^ 2 * x ^ 2 * (-1 / 2)) * 2 * (↑2)⁻¹) All goals completed! 🐙Q:HarmonicOscillatorn:x:hd:DifferentiableAt (fun x => (fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) x(2 * n * (fun x => (Polynomial.aeval x) (physHermite (n - 1))) (x / Q.ξ) * deriv (fun x => x / Q.ξ) x) = (1 / Q.ξ) * 2 * n * ((fun x => (Polynomial.aeval x) (physHermite (n - 1))) (x / Q.ξ)) Q:HarmonicOscillatorn:x:hd:DifferentiableAt (fun x => (fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) x(2 * n * (Polynomial.aeval (x / Q.ξ)) (physHermite (n - 1)) * (1 / Q.ξ)) = (1 / Q.ξ) * 2 * n * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n - 1))) Q:HarmonicOscillatorn:x:hd:DifferentiableAt (fun x => (fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) x2 * n * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n - 1))) * (1 / Q.ξ) = 1 / Q.ξ * 2 * n * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n - 1))) All goals completed! 🐙Q:HarmonicOscillatorn:x:(↑(n + 1)!)⁻¹ * (↑(2 ^ (n + 1)))⁻¹ * (fun x => (1 / Q.ξ) * 2 * (n + 1) * ((fun x => (Polynomial.aeval x) (physHermite (n + 1 - 1))) (x / Q.ξ))) x * Q.eigenfunction 0 x + (↑(n + 1)!)⁻¹ * (↑(2 ^ (n + 1)))⁻¹ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1))) * ((-1 / Q.ξ ^ 2) Complex.ofReal * Q.eigenfunction 0) x = (↑(n + 1)!)⁻¹ * (↑(2 ^ (n + 1)))⁻¹ * (↑Q.ξ)⁻¹ * ((2 * (n + 1) * ((Polynomial.aeval (x / Q.ξ)) (physHermite n)) - x / Q.ξ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) * Q.eigenfunction 0 x) Q:HarmonicOscillatorn:x:(↑(n + 1)!)⁻¹ * (↑(2 ^ (n + 1)))⁻¹ * ((↑Q.ξ)⁻¹ * 2 * (n + 1) * ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) * Q.eigenfunction 0 x + (↑(n + 1)!)⁻¹ * (↑(2 ^ (n + 1)))⁻¹ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1))) * (-1 / Q.ξ ^ 2 * x * Q.eigenfunction 0 x) = (↑(n + 1)!)⁻¹ * (↑(2 ^ (n + 1)))⁻¹ * (↑Q.ξ)⁻¹ * ((2 * (n + 1) * ((Polynomial.aeval (x / Q.ξ)) (physHermite n)) - x / Q.ξ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) * Q.eigenfunction 0 x) All goals completed! 🐙

Second derivatives of the eigenfunctions.

Q:HarmonicOscillatorx:-(1 / (Q.ξ ^ 2)) * (1 * Q.eigenfunction 0 x + x * ((-1 / Q.ξ ^ 2) Complex.ofReal * Q.eigenfunction 0) x) = -1 / Q.ξ ^ 2 * (1 + -1 / Q.ξ ^ 2 * x ^ 2) * Q.eigenfunction 0 x Q:HarmonicOscillatorx:-(1 / (Q.ξ ^ 2) * (1 * Q.eigenfunction 0 x + x * (-1 / (Q.ξ ^ 2) * x * Q.eigenfunction 0 x))) = -1 / Q.ξ ^ 2 * (1 + -1 / Q.ξ ^ 2 * x ^ 2) * Q.eigenfunction 0 x Q:HarmonicOscillatorx:-(1 / Q.ξ ^ 2 * (1 * Q.eigenfunction 0 x + x * (-1 / Q.ξ ^ 2 * x * Q.eigenfunction 0 x))) = -1 / Q.ξ ^ 2 * (1 + -1 / Q.ξ ^ 2 * x ^ 2) * Q.eigenfunction 0 x All goals completed! 🐙Q:HarmonicOscillatorn:x:2 * (n + 1) * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) x - (deriv (fun x => x / Q.ξ) x * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1))) + x / Q.ξ * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) x) + (2 * (n + 1) * ((Polynomial.aeval (x / Q.ξ)) (physHermite n)) - x / Q.ξ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) * (-1 / (Q.ξ ^ 2)) * x = 2 * (n + 1) * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) x + -((Q.ξ ^ 2)⁻¹ * 4 * (n + 1) * x * ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) + -((↑Q.ξ)⁻¹ * (1 + -((Q.ξ ^ 2)⁻¹ * x ^ 2)) * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) Q:HarmonicOscillatorn:x:2 * (n + 1) * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) x - ((↑Q.ξ)⁻¹ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1))) + x / Q.ξ * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) x) + (2 * (n + 1) * ((Polynomial.aeval (x / Q.ξ)) (physHermite n)) - x / Q.ξ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) * (-1 / Q.ξ ^ 2) * x = 2 * (n + 1) * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) x + -((Q.ξ ^ 2)⁻¹ * 4 * (n + 1) * x * ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) + -((↑Q.ξ)⁻¹ * (1 + -((Q.ξ ^ 2)⁻¹ * x ^ 2)) * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) Q:HarmonicOscillatorn:x:2 * (n + 1) * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) x - ((↑Q.ξ)⁻¹ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1))) + x / Q.ξ * (fun x => (1 / Q.ξ) * 2 * (n + 1) * ((fun x => (Polynomial.aeval x) (physHermite (n + 1 - 1))) (x / Q.ξ))) x) + (2 * (n + 1) * ((Polynomial.aeval (x / Q.ξ)) (physHermite n)) - x / Q.ξ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) * (-1 / Q.ξ ^ 2) * x = 2 * (n + 1) * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) x + -((Q.ξ ^ 2)⁻¹ * 4 * (n + 1) * x * ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) + -((↑Q.ξ)⁻¹ * (1 + -((Q.ξ ^ 2)⁻¹ * x ^ 2)) * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) Q:HarmonicOscillatorn:x:2 * (n + 1) * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) x - ((↑Q.ξ)⁻¹ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1))) + x / Q.ξ * ((↑Q.ξ)⁻¹ * 2 * (n + 1) * ((Polynomial.aeval (x / Q.ξ)) (physHermite n)))) + (2 * (n + 1) * ((Polynomial.aeval (x / Q.ξ)) (physHermite n)) - x / Q.ξ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) * (-1 / Q.ξ ^ 2) * x = 2 * (n + 1) * deriv (fun x => ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) x + -((Q.ξ ^ 2)⁻¹ * 4 * (n + 1) * x * ((Polynomial.aeval (x / Q.ξ)) (physHermite n))) + -((↑Q.ξ)⁻¹ * (1 + -((Q.ξ ^ 2)⁻¹ * x ^ 2)) * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1)))) All goals completed! 🐙Q:HarmonicOscillatorn✝:x:n:(1 / (2 ^ (n + 1) * (n + 1)!)) * (-1 / Q.ξ ^ 2 * (2 * (n + 1) + (1 + -1 / Q.ξ ^ 2 * x ^ 2)) * ((fun x => (Polynomial.aeval x) (physHermite (n + 1))) (x / Q.ξ)) * Q.eigenfunction 0 x) = -1 / Q.ξ ^ 2 * (2 * (n + 1) + 1 + -1 / Q.ξ ^ 2 * x ^ 2) * (fun x => (1 / (2 ^ (n + 1) * (n + 1)!)) * ((fun x => (Polynomial.aeval x) (physHermite (n + 1))) (x / Q.ξ)) * Q.eigenfunction 0 x) x Q:HarmonicOscillatorn✝:x:n:(↑(n + 1)!)⁻¹ * (↑(2 ^ (n + 1)))⁻¹ * (-1 / Q.ξ ^ 2 * (2 * (n + 1) + (1 + -1 / Q.ξ ^ 2 * x ^ 2)) * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1))) * Q.eigenfunction 0 x) = -1 / Q.ξ ^ 2 * (2 * (n + 1) + 1 + -1 / Q.ξ ^ 2 * x ^ 2) * ((↑(n + 1)!)⁻¹ * (↑(2 ^ (n + 1)))⁻¹ * ((Polynomial.aeval (x / Q.ξ)) (physHermite (n + 1))) * Q.eigenfunction 0 x) All goals completed! 🐙

Application of the schrodingerOperator

The nth eigenfunction satisfies the time-independent Schrodinger equation with respect to the nth eigenvalue. That is to say for Q a harmonic oscillator,

Q.schrodingerOperator (Q.eigenfunction n) x = Q.eigenValue n * Q.eigenfunction n x.

The proof of this result is done by explicit calculation of derivatives.

Q:HarmonicOscillatorn:x:hm':Q.m 0hℏ': 0 ^ 2 / (2 * Q.m) * (-(-1 / Q.ξ ^ 2 * (2 * n + 1 + -1 / Q.ξ ^ 2 * x ^ 2) * Q.eigenfunction n x) + (Q.ξ ^ 2)⁻¹ ^ 2 * x ^ 2 * Q.eigenfunction n x) = ((n + 1 / 2) * * Q.ω) * Q.eigenfunction n x Q:HarmonicOscillatorn:x:hm':Q.m 0hℏ': 0( ^ 2) / (2 * Q.m) * (-(-1 / ( / (Q.m * Q.ω)) * (2 * n + 1 + -1 / ( / (Q.m * Q.ω)) * (x ^ 2)) * Q.eigenfunction n x) + (↑( / (Q.m * Q.ω)))⁻¹ ^ 2 * (x ^ 2) * Q.eigenfunction n x) = ((n + 1 / 2) * * Q.ω) * Q.eigenfunction n x Q:HarmonicOscillatorn:x:hm':Q.m 0hℏ': 0 ^ 2 / (2 * Q.m) * (-(-1 / ( / (Q.m * Q.ω)) * (2 * n + 1 + -1 / ( / (Q.m * Q.ω)) * x ^ 2) * Q.eigenfunction n x) + (Q.m * Q.ω / ) ^ 2 * x ^ 2 * Q.eigenfunction n x) = (n + 2⁻¹) * * Q.ω * Q.eigenfunction n x Q:HarmonicOscillatorn:x:hm':Q.m 0hℏ': 0Q.eigenfunction n x * ( * (2 * n + 1) + -(Q.m * Q.ω * x ^ 2) + Q.m * Q.ω * x ^ 2) = * (2 * n + 1) * Q.eigenfunction n x All goals completed! 🐙