0

i want to get forward euler, backward euler and trapezoidal method to be implemented and plotted in python for 1s and 2nd order ODE's especially for harmonic oscillator and exponential decay.

As of now I have this much done on code.

import math
import mathplotlib
import numpy
import scipy
# First Order ODE (y' = f(x, y)) Solver using Euler method
# xa: initial value of independent variable
# xb: final value of independent variable
# ya: initial value of dependent variable
# n : number of steps (higher the better)
# Returns value of y at xb. 
def Euler1(f, xa, xb, ya, n):
      h = (xb - xa) / float(n)
      x = xa
      y = ya
      for i in range(n):
          y += h * f(x, y)
          x += h
      return y
# Second Order ODE (y'' = f(x, y, y')) Solver using Euler method
# y1a: initial value of first derivative of dependent variable
def Euler2(f, xa, xb, ya, y1a, n):
      h = (xb - xa) / float(n)
      x = xa
      y = ya
      y1 = y1a
      for i in range(n):
          y1 += h * f(x, y, y1)
          y += h * y1
          x += h
      return y

if __name__ == "__main__":
    print Euler1(lambda x, y: math.cos(x) + math.sin(y), 0, 1, 1, 1000)
    print Euler2(lambda x, y, y1: math.sin(x * y) - y1, 0, 1, 1, 1, 1000)

it's giving me an error on print Euler1 saying SyntaxError: invalid syntax

Can anyone help me out with what else needs to be done and a guidance on doing trapezoidal method in python

0 Answers0