L. Cnotts
L. Cnotts

Reputation: 3

matplotlib exact solution to a differential equation

I'm trying to plot the exact solution to a differential equation (a radioactive leak model) in python2.7 with matplotlib. When plotting the graph with Euler methods OR SciPy I get the expected results, but with the exact solution the output is a straight-line graph (should be logarithmic curve).

Here is my code:

import math
import numpy as np
import matplotlib.pyplot as plt

#define parameters
r = 1
beta = 0.0864
x0 = 0
maxt = 100.0
tstep = 1.0

#Make arrays for time and radioactivity

t = np.zeros(1)

#Implementing model with Exact solution where Xact = Exact Solution
Xact = np.zeros(1)
e = math.exp(-(beta/t))
while (t[-1]<maxt):
    t = np.append(t,t[-1]+tstep)
    Xact = np.append(Xact,Xact[-1] + ((r/beta)+(x0-r/beta)*e))

#plot results
plt.plot(t, Xact,color="green")

I realise that my problem may be due to an incorrect equation, but I'd be very grateful if someone could point out an error in my code. Cheers.

Upvotes: 0

Views: 1019

Answers (1)

Lutz Lehmann
Lutz Lehmann

Reputation: 25992

You probably want e to depend on t, as in

 def e(t): return np.exp(-t/beta)

and then use

 Xact.append( (r/beta)+(x0-r/beta)*e(t[-1]) )

But you can have that all shorter as

t = np.arange(0, maxt+tstep/2, tstep)
plt.plot(t, (r/beta)+(x0-r/beta)*np.exp(-t/beta), color="green" ) 

Upvotes: 1

Related Questions