2016-09-11 2 views
0

У меня есть массивы t_array иточек x и y. Назовем M = trapz(dMdt_array, t_array). Я хочу найти, при каком значении t интеграл от dM/dt vs t равен некоторому значению - скажем 0.05*M. В python есть ли хороший способ сделать это?Найти, когда интеграл интерполированной функции равен определенному значению (python)

Я думал что-то вроде F = interp1d(t_array, dMdt_array). Тогда какой-то корень найдет, где интеграл от F равен 0,05 * M. Могу ли я сделать это в python?

ответ

1

Один простой способ - использовать класс CubicSpline. Тогда это CubicSpline(x, y).antiderivative().solve(0.05*M) или около этого.

+1

Похоже, что 'solve' будет искать корни вне пределов' x' по умолчанию, поэтому, если это нежелательно, может быть хорошей идеей использовать '.solve (0.05 * M, extrapolate = False)'. –

+0

hmm, когда я делаю 'из scipy import интерполировать' и' interpolate.CubicSpline (x, y) .antiderivative(). Solve (0.05 * M) ', я получаю объект AttributeError: 'module' не имеет атрибута 'CubicSpline'' , – Jamie

+0

@ Джейми да, CubicSpline является новым в SciPy 0.17 –

Смежные вопросы