В double_scalars обнаружено переполнение с dtype=numpy.float64.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 В double_scalars обнаружено переполнение с dtype=numpy.float64.

Сообщение Anonymous »

Я пытаюсь решить это стохастическое дифференциальное уравнение. По сути, это уравнение стохастического нелинейного осциллятора, реакцию которого я хочу визуализировать.

Код: Выделить всё

import math as m
import numpy as np
import matplotlib.pyplot as plt
from scipy.fft import fft, fftfreq

G=0.25
f0=3
lmd=1
mu=0.001
D=2
F=1

N=5000000
T=50
dt=T/N

t=np.linspace(0,T,N)
u=np.zeros((N,),dtype=np.float64)
v=np.zeros((N,),dtype=np.float64)

u[0]=0.0
v[0]=0.1

for i in range(N-1):
u[i+1] = u[i] + v[i]*dt
v[i+1] = v[i] - 2*G*v[i]*dt - (2*np.pi*f0)**2 *u[i]*dt - lmd*(2*np.pi*f0)**2*u[i]*np.sqrt(2*F*dt)*np.random.normal(0,1) - mu*u[i]**3 + np.sqrt(2*D*dt)*np.random.normal(0,1)

X_f = fft(u)
frequencies = fftfreq(len(u), dt)
psd = np.abs(X_f)

positive_freqs = frequencies[frequencies > 0]
plt.plot(positive_freqs, psd[frequencies > 0])
plt.xlim(0,30)

Однако, играя со значениями параметров, я столкнулся со следующими предупреждениями:

Код: Выделить всё

RuntimeWarning: overflow encountered in double_scalars
v[i+1] = v[i] - 2*G*v[i]*dt - (2*np.pi*f0)**2 *u[i]*dt - lmd*(2*np.pi*f0)**2*u[i]*np.sqrt(2*F*dt)*np.random.normal(0,1) - mu*u[i]**3 + np.sqrt(2*D*dt)*np.random.normal(0,1)

RuntimeWarning: invalid value encountered in double_scalars
v[i+1] = v[i] - 2*G*v[i]*dt - (2*np.pi*f0)**2 *u[i]*dt - lmd (2*np.pi*f0)**2*u[i]*np.sqrt(2*F*dt)*np.random.normal(0,1) - mu*u[i]**3 + np.sqrt(2*D*dt)*np.random.normal(0,1)
Я поискал и обнаружил, что эту проблему можно решить, изменив тип dtype на float64, что я и сделал. Предупреждения по-прежнему появляются, и мне не удается получить необоснованное решение x(t). Как я могу решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/793 ... py-float64
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»