Der Daedalus
Commander
- Registriert
- Jan. 2002
- Beiträge
- 2.266
Hallo,
musste mir für die Arbeit ein kleines Progrämmchen schreiben um berechnen, wie viele Ausschussteile bei bestimmten Prozessbedingungen produziert werden.
Normalverteilung der Messwerte wird angenommen.
Eingabegrößen sind:
Standardabweichung (s), Mittelwert (xm), Obere Toleranz (OT), Untere Toleranz (UT).
An einem Beispiel:
Bei eine Toleranz von +/- 0.75, einer Standardabweichung von 0.3 und einem Mittelwert von 0.2 sind laut Programm 3,41% Ausschuss! (erscheint mir sehr wenig)
Könnte das vllt. jemand kontrollieren? Ich wüsst nicht, wie ich das so von Hand machen kann.
Hier das Programm:
musste mir für die Arbeit ein kleines Progrämmchen schreiben um berechnen, wie viele Ausschussteile bei bestimmten Prozessbedingungen produziert werden.
Normalverteilung der Messwerte wird angenommen.
Eingabegrößen sind:
Standardabweichung (s), Mittelwert (xm), Obere Toleranz (OT), Untere Toleranz (UT).
An einem Beispiel:
Bei eine Toleranz von +/- 0.75, einer Standardabweichung von 0.3 und einem Mittelwert von 0.2 sind laut Programm 3,41% Ausschuss! (erscheint mir sehr wenig)
Könnte das vllt. jemand kontrollieren? Ich wüsst nicht, wie ich das so von Hand machen kann.
Hier das Programm:
#include <math.h>
#include <iostream.h>
double gauss (double s, double xm, double x)
{
double ergebnis, zw1, zw2;
zw1=1/(s*sqrt(2*3.141592654));
zw2=exp(-1*((x-xm)*(x-xm))/(2*(s*s)));
ergebnis=zw1*zw2;
// cout<<zw1<<"\t"<<zw2<<"\t";
return(ergebnis);
}
double flaeche (double y, double a, double b)
{
double flaeche=0;
flaeche=(a-b)*y;
if (flaeche<0) flaeche=flaeche*(-1);
return(flaeche);
}
void main ()
{
double xm, s, OT, UT, bereich, x, f1=0, a, b, y, f2;
int i;
const int n=100;
cout<<"Bitte geben sie die obere Toleranz an: ";
cin>>OT;
cout<<"Bitte geben sie die untere Toleranz an: ";
cin>>UT;
cout<<"Bitte geben sie den Mittelwert an: ";
cin>>xm;
cout<<"Bitte geben sie die Standardabweichung (1*Sigma) an: ";
cin>>s;
bereich=(OT-UT)/(2*n);
x=UT+bereich;
a=UT;
b=UT+(2*bereich);
for(i=0;i<n;i++)
{
y=gauss(s,xm,x);
f1=f1+flaeche(y,a,b);
a=b;
b=b+(bereich*2);
x=x+(bereich*2);
// cout<<"\t"<<a<<"\t"<<y<<"\n";
}
f2=1-f1;
cout<<"\n\nDie Flaeche im Breich ausserhalb der Toleranz betraegt: "<<f2<<"\n";
}