マシュー・フォン:
私が使用しているかどうか、この式で問題が発生しているodeint
かsolve_ivp
解決します。
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
def ODE(E, p):
u, v = p
n = 3.25
dudE = v
dvdE = -(u**n)-(2*v/E)
return [dudE, dvdE]
P0 = [1,0]
solve = solve_ivp(ODE, (0.001,10), P0, t_eval=np.linspace(0.001,10,500))
私は任せることはできないn=3.25
か、n=0.25
それはのようなエラーが発生しているなど
Project_q2d.py:19: RuntimeWarning: invalid value encountered in double_scalars
dvdE = -(u**n)-(2*v/E)
LETはならn
整数である、それは何の問題もなく完璧に実行されます。缶誰の助け私?
ウィリアム・ミラー:
問題はそれでu
解決時に負となります。整数値のためにn
、この微細であるが、非整数をn
累乗のいずれかによって実行されなければなりません
- 塩基の分母次根を取り、分子の結果を上昇、低下割合として指数を表します。
- そのようなアプローチを用いて数学スタック所でこの答え
分母は、それが奇数である第2の場合に結果は常に虚数である場合にのみであっても、実際のであれば、負のベースは、最初のケースの結果が虚数であろう。
この単純な解決策は、初期化することであるP0
虚数成分と、
P0 = [1 + 0j, 0 + 0j]
注 -でPythonの2.7 pow
機能は、Python 3.xのいずれかに、べき乗のために使用されなければならない**
オペレータまたはpow
関数を使用することができます。