точное решение математического уравнения для дифференциального уравнения - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь построить точное решение дифференциального уравнения (модели радиоактивной утечки) в python2.7 с помощью matplotlib. При построении графика методами Эйлера ИЛИ SciPy я получаю ожидаемые результаты, но с точным решением на выходе получается прямолинейный график (должен быть логарифмической кривой).

Вот мой код:

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")

Я понимаю, что моя проблема может быть из-за неправильного уравнения, но я был бы очень признателен, если бы кто-то мог указать на ошибку в моем коде. Приветствия.

1 Ответ

0 голосов
/ 10 мая 2018

Вы, вероятно, хотите, чтобы e зависело от t, как в

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

, а затем используйте

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

Но вы можете сделать это все короче, как

t = np.arange(0, maxt+tstep/2, tstep)
plt.plot(t, (r/beta)+(x0-r/beta)*np.exp(-t/beta), color="green" ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...