[Python] Problème avec fonction odeint

Fermé
Angharad - 27 déc. 2011 à 16:49
 Angharad - 27 déc. 2011 à 20:54
Bonjour,
Je débute en python et je vais peut etre poser une question très bête
Je voudrais utiliser la fonction odeint. Malheureusement je n'arrive pas à trouver le script de odeint et j'ai l'erreur

File "test.py", line 67, in func
ynew[i]=y[i]
IndexError: list assignment index out of range

Le problème est que je n'ai pas compris comment odeint permet de balayer les matrices avec les indices i et j. Du coup je ne sais pas comment résoudre le problème.
Voici comment ma fonction est définie.

def func(y,time):

i=0
for box in D:
ynew[i]=y[i]
j=0
for to_box in flux[box]:
if box != to_box:
# sortants
ynew[i]=ynew[i]-ftest[i][j]*coeff[i][j]*y[i]
# entrants
ynew[i]=ynew[i]+ftest[j][i]*coeff[j][i]*y[j]

return ynew

Results_t=odeint(func,conditions_initiales,t)

Pouvez vous m'aider ? Merci d'avance

A voir également:

2 réponses

heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 27/12/2011 à 19:37
Bonjour,

Dans une expression d'assignement telle que
ynew[i] = y[i]
l'interpréteur Python commence par évaluer l'expression qui se trouve à droite du signe = .

A priori, l'erreur serait due au fait que la liste y serait vide : l'évaluation de
y[0] 
provoque une erreur.

On ne peut pas en dire plus car on ne connait pas le contexte dans lequel s'inscrit la fonction.

Comme y n'est pas défini comme paramètre de la fonction, l'interpréteur sort de la fonction pour chercher l'identifiant y (qui va lui permettre de trouver l'objet y en mémoire) à l'extérieur: y est alors ce qu'on appelle un identifiant libre

nb: il est préférable d'éviter l'emploi du mot 'variable' qui est ambigu en Python car il n'y a pas de variables en Python, il n'y a que des objets et des identifiants
Perso, je mets en italique les identifiants, et en gras les objets, dans les messages




D'autre part , j'ai trouvé ces liens, sans m'y plonger:

http://math.mad.free.fr/wordpress/wp-content/uploads/ibiomedopy.pdf

http://sicboonline.asia



Je te signale aussi ce site sur lequel on trouve des tas de réponses:
https://stackoverflow.com/
Il y a des intervenants très balèzes
1
Merci pour tous ces conseils.
0