Programming Euler's Method into Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg82167] Programming Euler's Method into Mathematica
- From: Tara.Ann.Lorenz at gmail.com
- Date: Sat, 13 Oct 2007 04:03:15 -0400 (EDT)
I am trying to use Euler's Update Method to Numerically Integrate a Function (I know how to use NDSolve for this case, but I want to demonstrate an approximation method as well). For those familiar with neuroscience, I am trying to model the Hodgkin Huxley Equations. I have four ordinary differential equations (ODE) that I have written in discrete form using Euler's Method. I am trying to solve for one of these discrete equations, V, which is a function of the other three differential equations (n, m, and h). All four equations are also a function of time. Essentially, the command for NDSolve for this case is in the following form: NDSolve[{ODE1, ODE2, ODE3, ODE4, V[0]==0,n[0]==1, m[0]==2, h[0]==3},{V,n,m,h},{t,0,50},MaxSteps->1000] Instead of the above ODE input, I want to use Euler's Method. (i.e. V(t +delta_t)=V(t)+delta_t("stuff"). Now, the code below works for a function of x and y. MY QUESTION IS: how would I change this code to apply to my situation in which I want to solve for V[t] but it is a function of n[t], m[t], and h[t]. I would appreciate any hints/clues/suggested programs. I know that Mathematica has a built-in "Explicit Euler" Method, but I would like to develop the program myself. I believe I am making a small mistake that is preventing my success. Thank you, Tara The following program code works for a function f(x,y): euler[f_,{x_,x0_,xn_},{y_,y0_},steps_]:= Block[{ xold=x0, yold=y0, sollist={{x0,y0}}, x,y,h }, h=N[(xn-x0)/steps]; Do[ xnew=xold+h; ynew=yold+h*(f/.{x->xold,y->yold}); sollist=Append[sollist,{xnew,ynew}]; xold=xnew; yold=ynew, {steps} ]; Return[sollist]
- Follow-Ups:
- Re: Programming Euler's Method into Mathematica
- From: Murray Eisenberg <murray@math.umass.edu>
- Re: Programming Euler's Method into Mathematica