このODEを解決する方法は?

マシュー・フォン:

私が使用しているかどうか、この式で問題が発生しているodeintsolve_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累乗のいずれかによって実行されなければなりません

  1. 塩基の分母次根を取り、分子の結果を上昇、低下割合として指数を表します。
  2. そのようなアプローチを用いて数学スタック所でこの答え

分母は、それが奇数である第2の場合に結果は常に虚数である場合にのみであっても、実際のであれば、負のベースは、最初のケースの結果が虚数であろう。

この単純な解決策は、初期化することであるP0虚数成分と、

P0 = [1 + 0j, 0 + 0j]

 -でPythonの2.7 pow機能は、Python 3.xのいずれかに、べき乗のために使用されなければならない**オペレータまたはpow関数を使用することができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=351339&siteId=1