Рубрики
Без рубрики

Учебник по Python SciPy

Python SciPy-это библиотека, в которой в качестве строительных блоков используются Python NumPy и математические алгоритмы. Библиотека Python SciPy в значительной степени используется в

Автор оригинала: Pankaj Kumar.

Python SciPy – это библиотека, в которой в качестве строительных блоков используются Python NumPy и математические алгоритмы. Библиотека Python SciPy широко используется в области научных вычислений и обработки.

Начало работы с Python Scipy

Чтобы использовать различные функции, предлагаемые библиотекой SciPy, нам необходимо установить ее. Для достижения этой цели мы будем использовать команду pip для установки библиотеки SciPy.

pip install scipy

Чтобы использовать функции этой библиотеки, нам нужно будет импортировать эту библиотеку, используя следующую инструкцию:

import scipy

Субпакеты в Python SciPy

В библиотеке SciPy доступны различные подмодули для выполнения и повышения эффективности научных расчетов.

Некоторые из популярных подмодулей библиотеки SciPy перечислены ниже:

  • специальный : Этот подмодуль содержит Специальные функции для выполнения конкретной задачи.
  • константы : Представляет константы.
  • optimize : Этот подмодуль содержит алгоритмы оптимизации.
  • integrate : Этот подмодуль содержит функции для выполнения математической интеграции.
  • интерполировать : Представляет функции для выполнения интерполяции.
  • linalg : Представляет функции для выполнения операций над уравнениями линейной алгебры.
  • io : Он содержит функции для выполнения операций ввода-вывода на данном входе.
  • fftpack : Представляет функции для выполнения дискретного преобразования Фурье.
  • signal : Представляет функции и инструменты для обработки сигналов в Python.
  • sparse : Представляет алгоритмы для работы с разреженными матрицами.
  • cluster : Представляет функции для выполнения иерархической кластеризации.

Линейная алгебра с Python SciPy

Линейная алгебра представляет линейные уравнения и представляет их с помощью матриц.

Подмодуль linalg библиотеки SciPy используется для выполнения всех функций, связанных с линейными уравнениями. Он преобразует объект в 2-D массив NumPy, а затем выполняет задачу.

1. Решение системы уравнений

Давайте разберемся в работе подмодуля linalg вместе с линейными уравнениями с помощью примера:

4x+3y=12 3x+4y=18

Рассмотрим приведенные выше линейные уравнения. Давайте решим уравнения с помощью функции linalg.dsolve () .

from scipy import linalg
import numpy
X=numpy.array([[4,3],[3,4]])
Y=numpy.array([[12],[18]])
print(linalg.solve(X,Y))
X.dot(linalg.solve(X,Y))-Y

В приведенном выше фрагменте кода мы передали коэффициенты и постоянные значения, присутствующие во входных уравнениях, через функцию numpy.array ().

Далее, linalg. функция solve() решает линейные уравнения и отображает значение x и y, которое работает для этого конкретного уравнения. equation1.dot(linalg.solve())-команда equation2 используется для проверки вывода уравнений.

Выход:

[[-0.85714286]
 [ 5.14285714]]
array([[0.],
       [0.]])

массив([[0.], [0.]]) гарантирует, что линейные уравнения были правильно решены.

[[-0.85714286] [ 5.14285714]] : Это значения x и y, используемые для решения линейных уравнений.

2. Нахождение детерминант матриц

Метод linalg.det() используется для поиска определителя входной матрицы.

Пример :

from scipy import linalg
import numpy
determinant=numpy.array([[2,4],[4,12]])
linalg.det(determinant)

Выход:

8.0

3. Вычисление обратной матрицы

Метод linalg.inv() используется для вычисления обратной входной матрицы.

Пример:

from scipy import linalg
import numpy
inverse=numpy.array([[2,4],[4,12]])
linalg.inv(inverse)

Выход:

array([[ 1.5 , -0.5 ],
       [-0.5 ,  0.25]])

Выполнение вычислений по многочленам с помощью Python SciPy

Подмодуль poly1d библиотеки SciPy используется для выполнения манипуляций с 1-d полиномами. Он принимает коэффициенты в качестве входных данных и формирует полиномиальные объекты.

Давайте разберемся в подмодуле poly1d с помощью примера.

Пример:

from numpy import poly1d

# Creation of a polynomial object using coefficients as inputs through poly1d
poly_input = poly1d([2, 4, 6, 8])

print(poly_input)

# Performing integration for value = 4
print("\nIntegration of the input polynomial: \n")
print(poly_input.integ(k=3))

# Performing derivation
print("\nDerivation of the input polynomial: \n")
print(poly_input.deriv())

В приведенном выше фрагменте кода poly1d() используется для принятия коэффициентов полинома.

Далее, polynomial.integer(value) используется для нахождения интегрирования входного полинома вокруг входного скалярного значения. Функция polynomial.deriv() используется для вычисления вывода входного полинома.

Выход:

   3     2
2 x + 4 x + 6 x + 8

Integration of the input polynomial: 

     4         3     2
0.5 x + 1.333 x + 3 x + 8 x + 3

Derivation of the input polynomial: 

   2
6 x + 8 x + 6

Выполнение интеграции с Python SciPy

Подмодуль integrate библиотеки SciPy используется для выполнения интегрирования входных уравнений.

Давайте выполним интегрирование по следующему уравнению:

3*x*2 + 2*x + 6

from scipy import integrate
integrate.quad(lambda x:3*x*2 + 2*x + 6,0,2) 

В приведенном выше фрагменте кода функция integrate.quad() используется для вычисления интегрирования входного уравнения. Он принимает следующие аргументы:

  • уравнение
  • верхний предел
  • нижний предел

Выход:

(28.0, 3.1086244689504383e-13)

Преобразования Фурье с помощью Python SciPy

Преобразования Фурье позволяют нам понимать и изображать функции как суммирование периодических компонент.

Подмодуль fftpack библиотеки SciPy используется для выполнения преобразований Фурье в уравнениях.

Пример:

from scipy.fftpack import fft
import numpy as np

# Count of sample points
n = 400

# sample spacing
T = 1.0 / 500.0
x_i = np.linspace(0.0, n*T, n)
y_i = np.tan(70.0 * 2.0*np.pi*x_i) + 0.5*np.tan(70.0 * 2.0*np.pi*x_i)
y_f = fft(y_i)
x_f = np.linspace(0.0, 1.0/(3.0*T), n//2)

# matplotlib for plotting purposes
import matplotlib.pyplot as plt
plt.plot(x_f, 2.0/n * np.abs(y_f[0:n//2]))
plt.show()

В приведенном выше фрагменте кода мы использовали функцию numpy.linspace() для получения равномерно распределенных целых чисел. Далее, функция fft() используется для вычисления значения Фурье входного сигнала. Мы использовали модуль Python matplotlib для построения графика Касательной .

Выход:

Преобразования Фурье

Специальные функции Python SciPy

Ниже приведен список некоторых наиболее часто используемых специальных функций из пакета special SciPy:

  • Кубический корень
  • Экспоненциальная функция
  • Экспоненциальная функция Логарифмической Суммы
  • Гамма

1. Кубический корень

Функция scipy.special.cbrt() используется для предоставления элементного кубического корня предоставленных входных данных.

Пример:

from scipy.special import cbrt
val = cbrt([27, 8])
print(val)

Выход:

[3. 2.]

2. Экспоненциальная функция

Функция scipy.special.exp10() используется для вычисления экспоненты по элементам данных входных данных.

Пример:

from scipy.special import exp10
val = exp10([27, 8])
print(val)

Выход:

[1.e+27 1.e+08]

3. Экспоненциальная Функция Логарифмической Суммы

Функция scipy.special.logsumexp() используется для вычисления логарифмического значения суммы показателей входных элементов.

Пример:

from scipy.special import logsumexp
import numpy as np
inp = np.arange(5)
val = logsumexp(inp)
print(val)

Здесь функция numpy.arange() используется для генерации последовательности чисел, которые будут переданы в качестве входных данных.

Вывод :

4.451914395937593

4. Гамма-функция

Гамма – функция используется для вычисления значения гамма, называемого обобщенным факториалом, потому что, гамма(n+1)!

Функция scipy.special.gamma() используется для вычисления значения гамма входного элемента.

Пример:

from scipy.special import gamma
val = gamma([5, 0.8, 2, 0])
print(val)

Выход:

[24.          1.16422971  1.                 inf]

Функции интерполяции

Интерполяция-это процесс поиска значений между двумя или более точками на кривой, линии и т. Д.

Пакет scipy.interpolate используется для выполнения интерполяции на конкретном графике.

Пример:

import numpy as np
from scipy import interpolate
import matplotlib.pyplot as p
a = np.linspace(0, 4, 12)
b = np.sin(x**2/3+4)
print(a,b)
p.plot(a, b, 'o') # Plotting the graph assuming a and b arrays as x and y dimensions
p.show()

В приведенном выше фрагменте кода мы создали синусоидальную волну и построили значения, используя Python PyPlot пакет модуля Matplotlib|/.

Выход:

[0.         0.36363636 0.72727273 1.09090909 1.45454545 1.81818182
 2.18181818 2.54545455 2.90909091 3.27272727 3.63636364 4.        ] [-0.7568025  -0.78486887 -0.85971727 -0.9505809  -0.9999744  -0.92508408
 -0.64146657 -0.12309271  0.51220599  0.96001691  0.85056799  0.09131724]
Интерполяция С Помощью SciPy

Вывод

Таким образом, в этой статье мы поняли функции, выполняемые библиотекой Python SciPy.

Рекомендации

Рекомендуемое чтение: Учебник по Python Matplotlib и Python NumPy