zu generieren Der Benutzer soll den Wert von "x" und "n" angeben, um cos x unter Verwendung der Taylor-Serienapproximation zu berechnen (die Formel kann hier abgerufen werden: http://campusdematematicas.com/wp-content/uploads/2012/05/serie-taylor-funcion-coseno.gif) wo der "k" -Wert das "i" im folgenden Code ist.Versuch, den Wert von cos x unter Verwendung der Taylor-Formel
Die Sache ist, dass ich nicht weiß, was ich falsch gemacht habe, weil es mir den richtigen Wert von cos x nicht gibt.
Der Eingang, den ich gerade versucht habe, war x = 3,14 und n = 6. Und das Ergebnis es sollte mir cosx = -1,00 Stattdessen war geben, es mir gab: 1,14
By the way, ist es nicht für 0 arbeiten, wie es cos (x) = 1,00, geben sollte und es gibt 0.000000 statt
#include <stdio.h>
int main(){
double x, n, m;
int i = 0, j, l, k = -1;
double g = 0.0;
unsigned long long p = 1;
printf("Introduce the value of x (real): ");
scanf("%lf%*c", &x);
m = x;
printf("\nIIntroduce the value of n (natural): ");
scanf("%lf%*c", &n);
while (i <=n){
for (l=1; l < (i*2); l++){
m *= x;
}
for (j=1; j <= (2*i); j++){
p *=j;
}
if (i%2 == 0){
k = 1;
}
g += (double) (m/p)*(k);
p = 1;
k = -1;
m = x;
i++;
}
printf("\ncos(%.2lf) = %lf\n", x, g);
}
"es gibt mir nicht den richtigen Wert von cos x." ist eine schlechte Problemaussage. Was waren Input, Output und erwarteter Output? Funktioniert es für 0? Warum ist Code-Mixing "float/double"? - Es erschwert nur die Analyse - schlagen Sie nur "doppelt" vor. – chux
Stellen Sie einen [MCVE] bereit. Beachten Sie, dass 'factorial (2 * i)' einen 64-Bit 'unsigned long long' für 'i> 10' überläuft. – EOF