簡體   English   中英

簡單微分方程的問題求解和繪圖解

[英]Trouble Solving and Plotting Solution to Simple Differential Equation

我正在嘗試用 python 中的 R(0) = 0 的初始條件求解微分方程 R^{2} = 1/R。 當我從mathematica得到這個時,我應該得到 R'(t) = (3/2 * t)^(2/3) 的解決方案。 Plot 解 R'[t]^2 = 1/R 初始條件 R(0) = 0

我在 python 中使用了以下代碼:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

sqrt = np.sqrt

# function that returns dy/dt
def model(y,t):
    #k = 1
    dydt = sqrt(1/y)
    return dydt

# initial condition
y0 = [0.0]

# time points
t = np.linspace(0,5)

# solve ODE
y = odeint(model,y0,t)

# plot results
plt.plot(t,y)
plt.ylabel('$R/R_0$')
plt.xticks([])
plt.yticks([])
plt.show()

但是我只得到 0,因為我顯然在某個點除以零python plot 的微分方程 R'[t]^2 = 1/R,這是不正確的 有人可以指出我可以做些什么來獲得解決方案和我期待的 plot。

謝謝

您的 model 需要更改。我知道您的解決方案方程類似於https://www.wolframalpha.com/input/?i=R%27%28t%29%5E2+%3D+1%2FR


import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# function that returns dy/dt
def model(y,t):
    #k = 1
    dydt = 1*y**-1/2
    return dydt
# initial condition
y0 = 0.1

# time points
t = np.linspace(0,20)

# solve ODE
y = odeint(model,y0,t)

# plot results
plt.plot(t,y)
plt.ylabel('$R$')
plt.xlabel('$t$')
plt.xticks([])
plt.yticks([])
plt.show()

您的起始值為 0,這導致導數為零( y * -1或更簡單的-y ),這意味着 0 將添加到您當前的 y 值,因此在整個積分中保持為零。 您的代碼是正確的,但不是您的公式。

我在您的鏈接中看到 1/R,所以使用它,例如dydt = 1/y 這將失敗,因為它導致除以零,所以不要從零開始,因為你的導數沒有在那里定義。 某處似乎還有一個平方根,您已導入但從未使用過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM