Dienstag VM 4. Ue

Antworten
ninak95
Beiträge: 6
Registriert: 22.06.2015, 10:48

Dienstag VM 4. Ue

Beitrag von ninak95 »

Hallo,

hätte jemand vlt einen Lösungsvorschlag? Bin für jede Hilfe dankbar!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Mikroskop
Beiträge: 24
Registriert: 02.11.2016, 15:03

Re: Dienstag VM 4. Ue

Beitrag von Mikroskop »

Code: Alles auswählen

#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;
}

Antworten

Zurück zu „Datenverarbeitung für TPH I“