Funzioni trigonometriche in C
ciao a tutti. Volevo sapere in quale libreria sono definite e qual è il nome della chiamata delle funzioni trigonometriche. Grazie mille!!
Risposte
double exp(double x); exponential of x double log(double x); natural logarithm of x double log10(double x); base-10 logarithm of x double pow(double x, double y); x raised to power y double sqrt(double x); square root of x double ceil(double x); smallest integer not less than x double floor(double x); largest integer not greater than x double fabs(double x); absolute value of x double ldexp(double x, int n); x times 2 to the power n double frexp(double x, int* exp); if x non-zero, returns value, with absolute value in interval [1/2, 1), and assigns to *exp integer such that product of return value and 2 raised to the power *exp equals x; if x zero, both return value and *exp are zero double modf(double x, double* ip); returns fractional part and assigns to *ip integral part of x, both with same sign as x double fmod(double x, double y); if y non-zero, floating-point remainder of x/y, with same sign as x; if y zero, result is implementation-defined double sin(double x); sine of x double cos(double x); cosine of x double tan(double x); tangent of x double asin(double x); arc-sine of x double acos(double x); arc-cosine of x double atan(double x); arc-tangent of x double atan2(double y, double x); arc-tangent of y/x double sinh(double x); hyperbolic sine of x double cosh(double x); hyperbolic cosine of x double tanh(double x); hyperbolic tangent of x
perchè, allora, se lancio questo programma
mi esce un output del tipo:
0
263521932
1465086469
-1098521134
...
eccetera eccetera (altra roba che sembra che non c'entra niente...)
#include <stdio.h> #include <stdlib.h> #include <math.h> FILE *stream; int main(){ double a[90]; int i=0; for (i=0; i<90; i++) {a[i]=cos(i); printf("%d\n", a[i]);} scanf("%d", &a); }[/quote]
mi esce un output del tipo:
0
263521932
1465086469
-1098521134
...
eccetera eccetera (altra roba che sembra che non c'entra niente...)
#include <stdio.h> #include <stdlib.h> #include <math.h> FILE *stream; // dove lo usi? int main() { double a[90]; int i=0; for (i=0; i<90; i++) { a[i]=cos(i); printf("%d\n", a[i]); } return 0; }
Te lo stampa così perche a livello macchina le frazioni non "esistono" ma sono approssimate floating point...
ma non mi sembra una buona approssimazione: i valori del coseno sono compresi tra 0 e 1 mentre questi valori sono dell'ordine di 10^9.
(il file *stream lo avevo usato per fare una cosa prima che poi ho cancellato...)
(il file *stream lo avevo usato per fare una cosa prima che poi ho cancellato...)
sembra quasi non ti inizializzi i valori e ti metta valori random...
Ciao Fransis2,
ho provato a far girare il tuo programmino e mi sono accorto di due cose:
Nella printf dovresti probabilmente passare %f (o %g) anzichè %d per via del fatto che la funzione cos torna double e non int.
Poi guardando la documentazione della funzione cos si legge che l'argomento è espresso in radianti e non gradi.
Ho provato a modificarlo e ottengo risultati che sembrano giusti:
#include
#include
#include
#define PI 3.14159265358979323846264338
int main(){
double a[90]; int i=0; double step=PI/180.0; double j=0.0;
for (i=0; i<90; i++) {a=cos(j); printf("%g\n", a); j+=step;}
scanf("%d", &a);
}
sul mio visual stidio genera una cosa tipo:
1
0.999848
0.999391
0.99863
0.997564
0.996195
0.994522
0.992546
0.990268
0.987688
0.984808
ho provato a far girare il tuo programmino e mi sono accorto di due cose:
Nella printf dovresti probabilmente passare %f (o %g) anzichè %d per via del fatto che la funzione cos torna double e non int.
Poi guardando la documentazione della funzione cos si legge che l'argomento è espresso in radianti e non gradi.
Ho provato a modificarlo e ottengo risultati che sembrano giusti:
#include
#include
#include
#define PI 3.14159265358979323846264338
int main(){
double a[90]; int i=0; double step=PI/180.0; double j=0.0;
for (i=0; i<90; i++) {a=cos(j); printf("%g\n", a); j+=step;}
scanf("%d", &a);
}
sul mio visual stidio genera una cosa tipo:
1
0.999848
0.999391
0.99863
0.997564
0.996195
0.994522
0.992546
0.990268
0.987688
0.984808