четверг, 14 июня 2018 г.

Python. Производные, интегралы и ОДУ

Если искомая функция является полиномом, для её дифференцирования и интегрирования можно использовать методы модуля numpy.polynomial.polynomial. Хочу обратить внимание, что самый левый коэффициент соответствует младшему члену полинома, правый - старшему. Функции polyder() и polyint() содержат дополнительные опциональные коэффициенты, которые позволяют использовать их более гибко.




Если данные заданы в виде массива, выполнить интегрирование можно с помощью метода trapz().


Наиболее универсальные способы интегрирования и дифференцирования предоставляют модули SymPy и MpMath. Последний устанавливается вместе с SymPy и служит для проведения вычислений произвольной точности. Он же выполняет численное дифференцирование функции. Результат сохраняется в виде объекта mpf, который хранит число с плавающей точкой.


Для вычисления интеграла можно воспользоваться методом integrate(), указав пределы интегрирования.


Как известно, не каждая функция может быть проинтегрирована аналитически, да и не всегда это нужно. Для численных расчётов пригодится модуль scipy.integrate, который содержит коллекцию разнообразных функций. В простейшем случае, для вычисления интеграла на заданном интервале подойдёт quad(). Результатом будут 2 числа, первое из которых - найденное значение, а второе - точность.


Для решения обыкновенных дифференциальных уравнений пригодится функция odeint() из этого же модуля. Она работает с уравнениями вида y' = f(y,t) и принимает в качестве аргументов саму функцию f, а также начальное значение для y и интервал времени t (который должен быть массивом). Результатом является массив значений функции y в точках интервала t.


 

Комментариев нет:

Отправить комментарий