Praktikum 5 (Datenbanken)

Posted by Frank | Posted in Datenbanken, Studium | Posted on 09-01-2012-05-2008

0

Tjaja es ist mal wieder ne Weile her dass ich was gepostet habe und von daher habe ich beschlossen im Rahmen meines Studiums die Praktika für mich festzuhalten um sie nochmal etwas aufzufrischen.
Villeicht hilft mir dass um mich etwas besser auf die Klausur vorzubereiten. Da ich aber wenig Lust habe das ganze Ding von vorne aufzurollen steige ich einfach mittendrin ein.

Read the rest of this entry »

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • Add to favorites
  • Email
  • RSS

Sinus mit der Taylorreihe in C/C++

Posted by Frank | Posted in C/C++, Programmierung, Studium | Posted on 06-05-2009-05-2008

0

Tja da ich mitlerweile schon die 3. Anfrage zu dem Problem hatte obwohl dies recht leicht ist aber auch schnell tricky werden kann, poste ich hier mal einen Beispielprogramm in C bzw C++ (wenn man die Typecasts entfernt gehts auch in Standart C)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<stdio.h>
#include
<math.h>
 
int fak(int f)
{ 
 
    if(f<=0)
        return 1;
    else
        return (f * fak(f-1));
}
 
double mein_sin (double winkel_bogenmass, double summe = 0, int iteration = 0)
{
    // Taylorreihe: x - x^3/3! + x^5/5! + ... +(-1)^(n+1)*x^(2*n+1)/(2*n+1)!
    double term = (pow(winkel_bogenmass, (2 * iteration + 1) )/fak(2 * iteration + 1));
 
    if( fabs(term) >= 0.00001 )
        return mein_sin(winkel_bogenmass, (summe + pow(static_cast<double>(-1), iteration) * term), (iteration + 1));
    else
        return ( summe + pow(static_cast<double>(-1), iteration)*term);
}
 
int main ()
{
double winkel_grd, winkel_bog;
double berechnetersin, echtersin;
 
    // Merke input erfolgt im Gradmaß somit muss es ins Bogenmaß umgeformt werden mit der formel x = a/180 · p wobei x deinem Gradmass entspricht
    // Um das ganze für C Spezifisch umzuformen entweder die Konstate M_PI nutzen oder direkt angeben, sähe dann folgendermaßen aus
    // Wenn man M_PI benutzt kanns sein dass man das dem Compiler mittelein muss er solle doch bitte auch die Mathe Konstaten laden/einbinden
    // bogenmass = gradmass/180*3.1415926535;
    // bogenmass = gradmass/180*M_PI;
    // Die umrechnung in die andere richtung wäre dann
    // a = (x · 180)/pi sprich
    // gradmass = (bogenmass*180)/3.1415926535;
    // gradmass = (bogenmass*180)/M_PI;
    // Wie gesagt Variablen in diesem fall müssen als Bogenmaß übergeben werden sonst kommt nur Grütze raus!
    // In Anlehnung an den Taschenrechner
    // deg = gradmass
    // rad = bogenmass
    printf("Geben sie eine reelle Zahl ein\n");
    scanf("%lf", &winkel_grd);
 
    // Umrechnen in Bogenmaß
    winkel_bog = winkel_grd/180*3.1415926535;
 
    berechnetersin = mein_sin(winkel_bog);
    echtersin = sin(winkel_bog);
 
    printf("mein sinus: %lf, echter sinus:%lf", berechnetersin, echtersin);
 
return 0;
}
#include<stdio.h>
#include
<math.h>

int fak(int f)
{ 

	if(f<=0)
		return 1;
	else
		return (f * fak(f-1));
}

double mein_sin (double winkel_bogenmass, double summe = 0, int iteration = 0)
{
	// Taylorreihe: x - x^3/3! + x^5/5! + ... +(-1)^(n+1)*x^(2*n+1)/(2*n+1)!
	double term = (pow(winkel_bogenmass, (2 * iteration + 1) )/fak(2 * iteration + 1));

	if( fabs(term) >= 0.00001 )
		return mein_sin(winkel_bogenmass, (summe + pow(static_cast<double>(-1), iteration) * term), (iteration + 1));
	else
		return ( summe + pow(static_cast<double>(-1), iteration)*term);
}

int main ()
{
double winkel_grd, winkel_bog;
double berechnetersin, echtersin;

	// Merke input erfolgt im Gradmaß somit muss es ins Bogenmaß umgeformt werden mit der formel x = a/180 · p wobei x deinem Gradmass entspricht
	// Um das ganze für C Spezifisch umzuformen entweder die Konstate M_PI nutzen oder direkt angeben, sähe dann folgendermaßen aus
	// Wenn man M_PI benutzt kanns sein dass man das dem Compiler mittelein muss er solle doch bitte auch die Mathe Konstaten laden/einbinden
	// bogenmass = gradmass/180*3.1415926535;
	// bogenmass = gradmass/180*M_PI;
	// Die umrechnung in die andere richtung wäre dann
	// a = (x · 180)/pi sprich
	// gradmass = (bogenmass*180)/3.1415926535;
	// gradmass = (bogenmass*180)/M_PI;
	// Wie gesagt Variablen in diesem fall müssen als Bogenmaß übergeben werden sonst kommt nur Grütze raus!
	// In Anlehnung an den Taschenrechner
	// deg = gradmass
	// rad = bogenmass
	printf("Geben sie eine reelle Zahl ein\n");
	scanf("%lf", &winkel_grd);

	// Umrechnen in Bogenmaß
	winkel_bog = winkel_grd/180*3.1415926535;

	berechnetersin = mein_sin(winkel_bog);
	echtersin = sin(winkel_bog);

	printf("mein sinus: %lf, echter sinus:%lf", berechnetersin, echtersin);

return 0;
}

ich hoffe das hilf einigen weiter

MfG Frank

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • Add to favorites
  • Email
  • RSS