using System; using Science.Mathematics; using L = Science.Physics.QuantumMechanics; namespace ScienceTest.PhysicsTest.QuantumMechanicsTest { /// /// We solve the differential equation : R(r) = r^|m| \Psi(r) /// -0.5{\Psi''(r) + (2m+1)/r\Psi'(r)} + V(r)\Psi(r) = E\Psi(r) /// public class SchroedingerEq2DTest { public SchroedingerEq2DTest() { } private string result; public string Result { get{return result;} } public void Compute() { L.SchroedingerEquation2D equation = new L.SchroedingerEquation2D(); Function.DoubleToDouble func = new Function.DoubleToDouble(V); equation.PotentialEnergy = func; equation.RadialBoundary = 12.0; // radius should be large enough for wavefunction to be 0 equation.EnergyGuess = 4.87; // change as you wish equation.SlopeGuess = -5.0E-20; // change to adjust \Psi(r) equation.ValueAtOriginGuess = 12.0; // change as you wish equation.Solve(); for(int k = 0; k < equation.WaveFunction.Length; k++) result += Convert.ToString(equation.WaveFunctionRadialCoordinate[k])+"\t" // position + Convert.ToString(equation.WaveFunction[k])+"\t" // value + Convert.ToString(equation.WaveFunctionDerivative[k])+"\r\n"; // derivative result += "Energy="+Convert.ToString(equation.Energy)+"\r\n"; } private double V(double r) { return 0.5*r*r; // change as you wish } } }