Hallo,
hätte jemand vlt einen Lösungsvorschlag? Bin für jede Hilfe dankbar!
04_harmonischer_oszillator.pdf (126 KB)
Hallo,
hätte jemand vlt einen Lösungsvorschlag? Bin für jede Hilfe dankbar!
04_harmonischer_oszillator.pdf (126 KB)
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
double eigenzust(double x){
return 1/sqrt(sqrt(M_PI))*exp(-x*x/2);
};
double integration(vector<double>X, vector<double>F2X,int n){
double erg=0;
for( int i=0; i<n-2; i++){
erg=erg+(X[i+1]-X[i])*(F2X[i+1]+F2X[i]);
cout << "erg=" << erg << endl;
};
return erg/2.;
}
int main(){
double x=0; //Maximalwert
int n=0; //Anzahl der Intervalle
double dx=0; //Intervallbreite
cout << "n=";
cin >> n;
while(!cin){
cin.clear();
cin.ignore(256,'\n');
cout << "Fehler. n=";
cin >> n;
};
cout << "x=";
cin >> x;
while(!cin){
cin.clear();
cin.ignore(256,'\n');
cout << "Fehler. x=";
cin >> x;
};
//Berechnung Intervallbreite
dx=2*x/(n-1);
//Vektoren müssen wegen des push_back Befehls LEER sein! "vector<double>(n)" führt zu einem Problem!
vector<double>X;
vector<double>F1X;
//Befüllen des Vektors x und φ(x)
for(double i=-x; i<=x; i+=dx){
X.push_back(i);
F1X.push_back(eigenzust(i));
};
//Befüllen des neuen Vektors x²*φ(x)²
vector<double>F2X;
for( int i=0; i<F1X.size();i++){
F2X.push_back(F1X[i]*F1X[i]*X[i]*X[i]);
};
//Ausgabe der Werte der Wellenfunktion an den Punkten -x+s*i
for(int i=0; i<n; i++){
cout << X[i] << " " << F2X[i] << endl;
};
double ergebnis=integration(X, F2X,n);
cout << "ψ(x)=1/∜π*exp(-x²/2) \n⟨x⟩²=" << ergebnis;
}