gpt4 book ai didi

python - 如何解决这个 ODE?

转载 作者:行者123 更新时间:2023-12-04 10:22:00 25 4
gpt4 key购买 nike

是否使用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.25n=0.25等它有一个错误

Project_q2d.py:19: RuntimeWarning: invalid value encountered in double_scalars
dvdE = -(u**n)-(2*v/E)

但如果让 n是一个整数,它将完美运行而没有任何问题。
谁能帮我?

最佳答案

问题是u在求解过程中变为负数。对于 n 的整数值这很好,但对于非整数 n取幂必须由任一方执行

  • 将指数表示为减少的分数,取基数的分母阶根并将结果提高到分子。
  • 使用类似 this answer on Mathematics Stack Exchange 中的方法

  • 对于负底数,如果分母为偶数且只有奇数为实数,则第一种情况下的结果将是虚数,而第二种情况下的结果将始终是虚数。

    这个简单的解决方案是初始化 P0与虚部,

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

    备注 - 在 Python 2.7 中 pow函数必须用于求幂,在 Python 3.x 中 **运算符或 pow可以使用功能。

    关于python - 如何解决这个 ODE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60808423/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com