2016-02-03 9 views
-1

La première partie du code fonctionne correctement et imprime les valeurs pour sin par incréments de .01 radians. Entre 0-25 (degrés) soit 2500 valeurs. La deuxième partie du code tente d'évaluer sin(x) en utilisant la méthode de différence centrale, tout en appliquant les mêmes étapes incrémentales.Création de valeurs incrémentielles pour la différence centrale

Cette deuxième partie renvoie un seul nombre. Il ne génère pas la liste incrémentielle. C'est ma première tentative de coder un différentiel; Qu'est-ce que je fais mal?

#1 evaluation of sin 

import numpy as np 
import math 
def sin(x): 
    return math.sin(math.radians(x)) 

for i in np.arange(0, 25, .01): 
    print sin(i) 

#Evaluation of sin(x) using CDM, which would yield cos 

def dfdxsin(f, a, b, n): 
    h=float(b-a)/n 
    dfdx=0.0 
    for i in np.arange(0,25,.01): 
     dfdx += (f(a+h)+i)-f((a-h)+i)/(2*h) 
    return dfdx 

def f(x): 
    return math.sin(math.radians(x)) 

print dfdxsin(f,0,25,2500) 
+0

Pourriez-vous fournir un meilleur problème de description que * "m'a un peu perdu" *? – jonrsharpe

+0

Vous voulez dire la description du paragraphe juste au-dessus de cette citation? – runnerrunner

+0

"Je ne récupère qu'un seul numéro et je n'arrive pas à générer la liste incrémentale" - qu'est-ce que vous attendez de la sortie de 'dfdxsin'? Une liste ou un numéro? –

Répondre

0

Vous augmentez simplement le flottant 0.0 pour chaque valeur récupérée. Vous allez vouloir créer une liste, et ajouter, ne pas ajouter.

dfdx = [] 

for i in np.arange(0,25,.01): 
    dfdx.append((f(a+h)+i)-f((a-h)+i)/(2*h)) 
return dfdx