[Python] Problème avec fonction odeint
Angharad
-
Angharad -
Angharad -
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
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:
- Fonction odeint python
- Fonction si et - Guide
- Citizen code python avis - Accueil - Outils
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
2 réponses
Bonjour,
Dans une expression d'assignement telle que
A priori, l'erreur serait due au fait que la liste y serait vide : l'évaluation de
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
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