前提・実現したいこと
mdv/dt = mg - k*v
上の微分方程式をt=100,200の時のvの値をpythonで解きたいのですが、どのようにすればよいか教えていただきたいです。
発生している問題・エラーメッセージ
下のようなエラー?が発生してしまいました。 <ipython-input-31-6b2f8cf73b86>:6: RuntimeWarning: invalid value encountered in true_divide return g - (k * y) / m C:\Users\s317048\Anaconda3\envs\numpy\lib\site-packages\scipy\integrate\odepack.py:248: ODEintWarning: Excess accuracy requested (tolerances too small). Run with full_output = 1 to get quantitative information. warnings.warn(warning_msg, ODEintWarning)
該当のソースコード
python
1import numpy as np 2import matplotlib.pyplot as plt 3from scipy.integrate import odeint 4 5def func(y,m,g,k,t): 6 return g - (k * y) / m 7 8m = 10 9g = 9.8 10k = 0.1 11y = 0 12t = np.arange(0, 100, 0.1) 13 14v = odeint(func,y,t,args=(m,g,k))
>上の微分方程式をt=100,200の時のvの値
積分型に直して、初期速度0としてt=100,200のときのvの値が知りたいみたいなことですか?
初期値はt=0のときv=0とします。またm=10, g=9.8 k=0.1とします。時間間隔(差分時間)は任意とします。t=100とt=200 の時のvの値を求めてください。
\begin{eqnarray}
m\frac {d v}{d t} = mg - kv
\end{eqnarray}
文章的にはこのようになります。
回答1件
あなたの回答
tips
プレビュー