2017-04-04 4 views
1

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); 
} 
+2

"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

+0

Stellen Sie einen [MCVE] bereit. Beachten Sie, dass 'factorial (2 * i)' einen 64-Bit 'unsigned long long' für 'i> 10' überläuft. – EOF

Antwort

1

Falsche Initialisierung für m. Code summiert ungerade Potenzen von x statt der geraden.

// m = x; 
m = 1.0; 

Ausgabe

cos(0.00) = 1.000000 
cos(1.05) = 0.500460 // cos(60 degrees) --> 0.5 
cos(1.57) = 0.000796 // cos(90 degrees) --> 0.0 
cos(3.14) = -0.999899 
+0

Vielen Dank für Ihre Zeit –

Verwandte Themen