000
30.09.2006, 11:16 Uhr
Frido
|
Moin. Ich habe da ein Problem mit Zeitmessung. Das Programm soll ein paar Rechnungen durchlaufen und dabei die Zeitmessen wie lang jede Rechenart braucht bis zur Lösung. Nun das Problem ist als Zeit bekomm ich nur Nullen. Egal ob Start- oder Endzeit. Um di CPU Zeit zu Messen habe ich clock_t genommen.
Kann mir jemand helfen warum ich keine zeiten bekomme.
Code: |
#include <stdio.h> #include <math.h> #include <time.h> #include <windows.h>
int main (int argc, char *argv[]){
int i = 0; double Intervall_A = 0, Intervall_B = 2; double A = 0, B = 2, Cneu = 0, Calt = 0; double E = 0.00000000000001; // 1*10^14 clock_t Startzeit, Endzeit; double Zeit = 0;
// Vorzeichenwechsel überprüfung if( ((pow(A,2) - 2) * (pow(B,2) - 2)) < 0 ){ printf("Es gibt ein Vorzeichenwechsel.\nBisektion und Regula Falsi koennen angewandt werden.\n\n"); i++; } else{ printf("Es gibt kein Vorzeichenwechsel.\nBisektion und Regula Falsi koennen nicht angewandt werden.\n\n"); }
if( i == 1 ){ // Bisektionsverfahren Startzeit = clock(); do{ Calt = Cneu; Cneu = (A + B) / 2;
if( ((pow(A,2) - 2) * (pow(Cneu,2) - 2)) < 0 ) B = Cneu; else A = Cneu; i++; }while(fabs(Calt - Cneu) > E); Endzeit = clock(); Zeit = (double)((Endzeit - Startzeit)); printf("Bisektions-Verfahren Ergebnis : %1.14lf\n",Cneu); printf("Bisektion Schritte : %i\n",i); printf("Bisektion Zeit : %1.50lf ms\n",Zeit); printf("Startzeit : %1.50lf ms\n",(double)Startzeit); printf("Endzeit : %1.50lf ms\n\n",(double)Endzeit); Cneu = 0; Calt = 0; A = Intervall_A; B = Intervall_B; i = 0;
// Regula Falsi Startzeit = clock(); do{ Calt = Cneu; Cneu = A - (pow(A,2) - 2) * ((A - B) / ( (pow(A,2) - 2) - (pow(B,2) - 2) ));
if( ((pow(A,2) - 2) * (pow(Cneu,2) - 2)) < 0 ) B = Cneu; else A = Cneu; i++; }while(fabs(Calt - Cneu) > E);
Endzeit = clock(); Zeit = (double)((Endzeit - Startzeit)); printf("Regula Falsi Ergebniss : %1.14lf\n",Cneu); printf("Regula Falsi Schritte : %i \n",i); printf("Regula Falsi Zeit : %1.50lf ms\n",Zeit); printf("Startzeit : %1.50lf ms\n",(double)Startzeit); printf("Endzeit : %1.50lf ms\n\n",(double)Endzeit); } Calt = 0; Cneu = 0; A = Intervall_A; B = Intervall_B; i = 0;
// Sekanten-Verfahren Startzeit = clock(); do{ if( ((pow(A,2) - 2) - (pow(B,2) - 2)) == 0 ){ printf("Sekanten-Verfahren Abgebrochen, weil A == B. Daher Nenner 0.\n\n"); } Calt = Cneu;
Cneu = B - (pow(B,2) - 2) * ((B - A) / ( (pow(B,2) - 2) - (pow(A,2) - 2) )); A = B; B = Cneu;
i++;
}while(fabs(Calt - Cneu) > E);
Endzeit = clock(); Zeit = (double)((Endzeit - Startzeit)); printf("Sekanten-Verfahren Ergebniss : %1.14lf\n",Cneu); printf("Sekanten-Verfahren Schritte : %i\n",i); printf("Sekanten-Verfahren Zeit : %1.50lf ms\n",Zeit); printf("Startzeit : %1.50lf ms\n",(double)Startzeit); printf("Endzeit : %1.50lf ms\n\n",(double)Endzeit); }
|
-- http://spielwelt14.monstersgame.net/?ac=vid&vid=28103555 |