Аргументы Python для максимума - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть этот код:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

def rownanie(Y, t, l, q, a, u):
    y1, y2, z1, z2 = Y
    dydt = [y2, ((l*q)/a)*(1/y1)*(1-z2*u), z2, (a*y2*u)/y1]
    return dydt

l = 100
q = 1
a = 10
u = 0.25

y0 = -1
z0 = 0
y0_prim, z0_prim = 0, 0  
t = np.linspace(0, 100, 10001)
sol = odeint(rownanie, [y0, y0_prim, z0, z0_prim], t, args=(l,q,a,u))
print(sol)


plt.plot(sol[:, 0], sol[:, 2]) 
plt.xlabel('Y')
plt.ylabel('Z')
plt.grid()

Итак, у меня есть 4 столбца данных, скажем, [:, 0] до [:, 0].Я должен сосредоточиться только на двух: [:, 0], [:, 2].Когда я делаю график этого - его гармоническая функция.[:, 0] являются значениями, [:, 2] являются аргументами.Мне нужно найти эти аргументы, для которых значения макс.Или мне нужна разница, расстояние между двумя аргументами (два максимума), которые я пробовал с помощью «если», но значения являются приблизительными, поэтому они не совпадают.Не могли бы вы помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы были правы, вам нужно определить допуск на разницу по отношению к максимальному значению.Я отмечал пункты для разъяснения.Идея здесь состоит в том, чтобы сначала получить разницу от максимума значений max(sol[:, 0]).Затем вы можете использовать индексирование массива NumPy с допуском 1e-4.[abs(diff) < 1e-4] возвращает ваши индексы, где это условие имеет значение True.Теперь у вас есть эти максимум 5 баллов.Вы можете делать с ними любую обработку, какую захотите.Выбор допуска будет также зависеть от вашего количества точек сетки (в данном случае 10001).Это требует некоторой игры вокруг.Можно также написать некоторую функцию, чтобы проверить это умно.

diff = sol[:, 0] - max(sol[:, 0])
plt.plot(sol[:, 0], sol[:, 2]) 
plt.plot(sol[:, 0][abs(diff) < 1e-4], sol[:, 2][abs(diff) < 1e-4], 'kx')

enter image description here

0 голосов
/ 07 декабря 2018

График

И мне нужно найти эту разницу, но каждый максимум немного отличается

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...