Euler la méthode en python
Je suis en train de mettre en œuvre la méthode d'euler au rapprochement de la valeur de e en python. C'est ce que j'ai à ce jour:
def Euler(f, t0, y0, h, N):
t = t0 + arange(N+1)*h
y = zeros(N+1)
y[0] = y0
for n in range(N):
y[n+1] = y[n] + h*f(t[n], y[n])
f = (1+(1/N))^N
return y
Cependant, lorsque j'essaie d'appeler la fonction, j'obtiens l'erreur "ValueError: forme <= 0". Je crois que cela a quelque chose à voir avec la façon dont je définis f? J'ai essayé de la saisie de f directement lors d'euler est appelé, mais il m'a donné des erreurs liées à des variables n'est pas définie. J'ai aussi essayé la définition de f, comme sa propre fonction, ce qui m'a donné une division par 0 erreur.
def f(N):
for n in range(N):
return (1+(1/n))^n
(pas sûr si N est la variable appropriée à utiliser, ici...)
Il y a un certain nombre de problèmes dans votre code, mais j'aimerais voir d'abord toute trace de votre erreur, copié et collé dans votre question, et aussi comment vous avez appelé
Euler
. Pourriez vous s'il vous plaît compléter votre question avec ces infos? TiaOriginalL'auteur newpythonuser | 2015-01-17
Vous devez vous connecter pour publier un commentaire.
Êtes-vous sûr que vous n'êtes pas d'essayer de mettre en œuvre la méthode de Newton? Parce que la méthode de Newton est utilisée pour approcher les racines.
Dans le cas où vous décidez d'aller avec la méthode de Newton, voici une version légèrement révisée de votre code, qui se rapproche de la racine carrée de 2. Vous pouvez modifier
f(x)
etfp(x)
avec la fonction et de sa dérivée que vous utilisez dans votre rapprochement à la chose que vous voulez.donne
[ 1. 1.5 1.41666667 1.41421569 1.41421356 1.41421356
1.41421356 1.41421356 1.41421356 1.41421356 1.41421356]
qui sont la valeur initiale et les dix premières itérations de la racine carrée de deux.
En outre, le gros problème est l'utilisation de
^
au lieu de**
pour des puissances qui est légal, mais un totalement différentes (bit à bit) de l'opération en python.OriginalL'auteur mty
La formule que vous essayez d'utiliser n'est pas d'Euler est une méthode, mais plutôt la valeur exacte de e comme n approche de l'infini wiki,
La méthode d'Euler est utilisée pour résoudre des equations différentielles du premier ordre.
Voici deux guides qui montrent comment implémenter la méthode d'Euler pour résoudre une simple fonction de test: guide du débutant et numérique ODE guide.
Pour répondre au titre de ce post, plutôt que la question que vous posez, j'ai utilisé la méthode d'Euler pour résoudre habitude décroissance exponentielle:
Qui a la solution,
Code:
De sortie:
Note: je ne suis pas sûr de la façon d'obtenir des LaTeX s'affiche pas correctement.
OriginalL'auteur Paul