Грубый градиент с неравномерным интервалом - PullRequest
0 голосов
/ 25 мая 2018

У меня что-то не так происходит:

import numpy as np
import matplotlib.pyplot as plt

x  = np.concatenate((np.linspace(0,1,100),np.linspace(1,2,50)));
f  = np.power(x,2);
df = 2*x;
Df = np.gradient(f,x);
plt.plot(x,df,'r', x,Df,'b');plt.show()

Вот что я получаю:

enter image description here

В остальном все работает нормальноесли используется линейно распределенный массив и не используется аргумент x.

Есть предложения?

1 Ответ

0 голосов
/ 27 июля 2018

Я думаю, это потому, что в numy-версиях до 1.13 ожидается, что аргумент "x" будет постоянным интервалом сетки (см. https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.gradient.html#numpy.gradient). Даже если более ранние версии ожидают скалярный dx, они не проверяют это, ирезультат - np.gradient (f) / x, который является допустимым делением. Это довольно раздражает, так как код, написанный для numpy 1.13, может работать на более ранних версиях с неправильным выводом и без ошибок.

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