Source code for qiskit_metal.analyses.hamiltonian.HO_wavefunctions
# -*- coding: utf-8 -*-# This code is part of Qiskit.## (C) Copyright IBM 2017, 2021.## This code is licensed under the Apache License, Version 2.0. You may# obtain a copy of this license in the LICENSE.txt file in the root directory# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.## Any modifications or derivative works of this code must retain this# copyright notice, and modified files need to carry a notice indicating# that they have been altered from the originals."""This code calculations the wavefunction(s) of the simple harmonic oscillatorcorresponding to an LC circuit.Key References: - *R. Shankar*, "Principles of Quantum Mechanics", Second Edition, Springer (1994) - or any other undergraduate quantum mechanics textbook)"""importmatplotlib.pyplotaspltimportnumpyasnpfrommathimport*__all__=['wavefunction']
[docs]defwavefunction(L,C,n,x):"""This function calculates the nth wavefunction of the harmonic oscillator for a given value of inductance (L) and capacitance (C) at a charge x. Args: L (float): The inductance of the inductor in an LC circuit. C (float): The capacitance of the capacitor in an LC circuit. n (int): The energy state of the harmonic oscillator. x (float): The value of charge (independent variable) for which the wavefunction is calculated. Returns: float: Calculated wavefunction """# This is the fundamental frequency of the LC circuitomega=(L*C)**(0.5)# For simplicity, let's work in units where hbar=1hbar=1.0# these are two terms in the expression for wavefunction which do not depend on charge (x)prefactor=np.sqrt(1.0/((2.0**n)*(np.math.factorial(n))))qubic_root=((L*omega)/(np.pi*hbar))**(0.25)# these are the terms in the expression for the wavefunction which depend on charge (x) and energy state (n)ifn==0:Hermitian_term=prefactor*qubic_root*(2.71828**((-L*omega*x**2.0)/(2.0*hbar)))*1.0ifn==1:Hermitian_term=prefactor*qubic_root*(2.71828**((-L*omega*x**2.0)/(2.0*hbar)))*(2.0*x)ifn==2:Hermitian_term=prefactor*qubic_root*(2.71828**((-L*omega*x**2.0)/(2.0*hbar)))*(4.0*x**2.0-2.0)ifn==3:Hermitian_term=prefactor*qubic_root*(2.71828**((-L*omega*x**2.0)/(2.0*hbar)))*(8.0*x**3.0-12.0*x)ifn==4:Hermitian_term=prefactor*qubic_root*(2.71828**((-L*omega*x**2.0)/(2.0*hbar)))*(16.0*x**4.0-48.0*x**2.0+12.0)# the final wavefunction is the product of these termsreturn(prefactor)*(qubic_root)*(Hermitian_term)