2009-11-15 3 views
0

J'ai poster la même question avant, mais cette fois le problème est différent, je me suis coincé avec les quelqu'un code..can suivants y aider? Merci à l'avanceaide! Pour la fonction

Je code fixe mu comme l'a suggéré, grâce

from numpy import * 
#vs,fs,rs are all m*n matrixs,got initial values in,i.e vs[0],fs[0],rs[0] are known 
#want use this foor loop to update them 
vs=zeros((10,3)) 
vs[0]=([1,2,3]) 
fs=zeros((10,3)) 
fs[0]=([2,3,4]) 
vs=zeros((10,3)) 
vs[0]=([3,4,5]) 
for i in range(5): 
    #start looping.. 
    vs[i+1]=vs[i]+fs[i] 
    fs[i+1]=(rs[i]-re[i]) 
    rs[i+1]=rs[i]+vs[i] 
print vs,fs,rs 

alors ce code donne vs fs rs dans différents i, mais pas mis à jour chaque rangées de rs, fs, vs et me renvoient un seul tableau de rs, fs, vs (entièrement mis à jour). quel est le problème ici? .. que dois-je ajouter? merci

Répondre

2

Mettez votre initialisation en dehors de la boucle! En ce moment, vous réinitialisez les tableaux à tous les zéros chaque fois à travers la boucle, encore et encore, ce qui est absurde. Vous semblez également avoir une faute de frappe - vous avez mis vs deux fois et rs jamais - alors j'ai essayé de deviner ce que vous vouliez dire.

from numpy import * 

#vs,fs,rs are all m*n matrixs,got initial values in,i.e vs[0],fs[0],rs[0] are known 
#want use this foor loop to update them 
vs=zeros((10,3)) 
vs[0]=([1,2,3]) 
fs=zeros((10,3)) 
fs[0]=([2,3,4]) 
rs=zeros((10,3)) 
rs[0]=([3,4,5]) 

for i in range(5): 
    #start looping.. 
    vs[i+1]=vs[i]+fs[i] 
    fs[i+1]=rs[i]-re[i] 
    rs[i+1]=rs[i]+vs[i] 
    print vs,fs,rs 
+0

Alex a raison - pensez d'abord, puis codez. – PaulMcG

+0

Alex a raison. L'initialisation doit être en dehors de la boucle. Il réinitialise vos matrices à chaque fois et cela vous fait mal ... BEAUCOUP. – inspectorG4dget

+0

Il est difficile de se tromper lorsque vous commencez votre commentaire avec "Alex a raison". :) – PaulMcG

0

Vous ne commencez pas en boucle où le commentaire l'indique, mais à la ligne for i in range(5):. Tout dans le bloc indenté (le "corps de la boucle for") est fait à plusieurs reprises pour chaque i. La définition de vs et fs à zéro est répétée, chaque fois que vous supprimez ce qui a été calculé auparavant. Ces initialisations doivent être effectuées avant le for.

également vs est initialisé deux fois pendant rs n'est pas du tout initialisés, c'est probablement une faute de frappe et il devrait ressembler à ceci:

vs=zeros((10,3)) 
vs[0]=([1,2,3]) 
fs=zeros((10,3)) 
fs[0]=([2,3,4]) 
rs=zeros((10,3)) 
rs[0]=([3,4,5]) 

for i in range(5): 
    #start looping.. 
    ... 
0

Je ne sais pas exactement ce que vous voulez imprimer. Si vous voulez imprimer chaque matrice chaque fois qu'elle est mise à jour, alors tout va bien. Mais si vous voulez imprimer les matrices après que toutes les mises à jour ont été complétées, alors vous devez sortir cette instruction d'impression de la boucle for. Ceci et ce qu'Alex et sth ont dit devraient fixer votre code entièrement