#! /usr/bin/env python3

import math

def main():
    x0 = 100
    y0 = 15
    alpha = 0.1
    beta = 0.02
    gamma = 0.5
    delta = 0.02
    t0 = 0
    tmax = 300
    n_t_steps = 1000
    dt = (tmax - t0) / n_t_steps
    # start at initial values
    time = t0
    x = x0
    y = y0
    while time < tmax:
        x = x + dt * prey_deriv(x, y, alpha, beta)
        y = y + dt * predator_deriv(x, y, gamma, delta)
        print(f'{time:<22.16g}   {x:<22.16g}   {y:<22.16g}')
        time += dt
        

def prey_deriv(x, y, alpha, beta):
    return alpha * x - beta*x*y

def predator_deriv(x, y, gamma, delta):
    return -gamma*y + delta*x*y

if __name__ == '__main__':
    main()
