PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Suche mathematische Funktionen



BigOne
03-05-2002, 19:18
Salve!

Ich suche Funktionen für Sinus/Cosinus/Tangens, Potenzen, Logarithmen. Die sind sicher in math.h enthalten, oder? Ich weiß nicht wie sie heißen. Sie sollen ungefähr wie folgt aussehen:

double sin(winkel_in_grad);
double cos(winkel_in_grad);
double tan(winkel_in_grad);
double potenz(basis, exponent);
double log(exponent, basis);

Danke im Vorraus.

anda_skoa
03-05-2002, 20:57
die heißen

double sin(double phi);
double cos(double phi);
double tan(double phi);

Winkelargument in Radiant.
Einfache Umrechnung:


double phi_rad = (phi_grad / 180.0) * M_PI;


Die Potenzfunktion heißt
double pow(double basis, double exponent);

Logaritnmus:
double log10(double x); // Zehner Logarithus
double log(double x); // natürlicher Log

Logs andere Basen kann man auch umrechnen, müßte aber nachschaun wie das geht.

Die ersten drei Funktionen werden in einer gemeinsamen Manpage beschrieben, die anderen drei auch in einer gemeinsamen.
#> man 3 sin
#> man 3 pow

hth,
_

BigOne
04-05-2002, 10:46
Danke!

Die Sache mit dem Winkelargument hab ich nicht verstanden. Wäre nett, wenn du das noch etwas erklären könntest.

Ich programmiere an einem Programm, dass einen Funktionsgraphen auf den Bildschirm zeichnen kann, und in eine .png-Datei speichern. Ich muss also wissen, wie ich "cs" ("sinus von c") ausrechnen kann.

anda_skoa
04-05-2002, 15:30
Das ist eine einfache Umformung.

In Radian geht der Winkel von 0 bis 2 Pi.
In Grad von 0 bis 360

Der halbe Kreisbogen hat also einen Winkel von Pi bzw 180

Daher die Umrechnung:
Du dividierst den Winkel in Grad durch 180 und multiplizierst dann mit Pi

Du kannst dafür ja ein Makro schreiben (oder eine inline function in C++)

Als C Funktion sieht das so aus:


double winkelInRad(double winkelInGrad) {
return (winkelInGrad / 180.0) * M_PI:
}

double sinVonC = sin(winkelInRad(c));


Ciao,
_

niktequik
04-05-2002, 18:53
Um einen Logarithmus zu ner beliebigen Basis x auszurechnen muss man so vorgehen:

[log (basis=2) von 8 ]= [lg von 8] / [lg von 2]

bzw.

[log (basis=x) von 8 ]= [lg von 8] / [lg von x]

lg steht für den Zehnerlogarithmus. natrülich kann man stattdessen auch jede andere Basis nehmen.

Niki

BigOne
05-05-2002, 09:52
Salve niktequik!

Stimmt, das hätte ich auch wissen müssen. Hab ich mal in der 9. Klasse gelernt, oder so. Aber trotzdem irgendwie dumm, dass es keine Funktion in der Standartbibliothek gibt, die genau das macht.

Salve anda_skoa!

Habs jetzt verstanden.

Danke nochmal. Ihr habt mir echt sehr weitergeholfen.