📜  SciPy-简介(1)

📅  最后修改于: 2023-12-03 15:20:00.779000             🧑  作者: Mango

SciPy-简介

什么是 SciPy?

SciPy 是一个高级的 Python 科学计算库,它基于 NumPy 库并且拥有许多内置的工具来进行优化、线性代数、积分、插值、特殊函数、FFT 等操作。它的名字来源于 "科学(Scientific)" 和 "Python"。

安装SciPy

可以通过 pip 来安装 SciPy,命令如下:

pip install scipy
SciPy 的核心特性
NumPy 数组 操作

SciPy 增强了 NumPy 数组的功能,如向量化函数、矢量和矩阵运算、线性代数和随机数生成。

优化

使用 SciPy 可以进行一般和局部最小化、曲线拟合、最小二乘拟合和期望值最大化等优化。此外,还有包括内置的优化算法(如 Nelder-Mead、Powell 等)和策略(如 Basin-Hoppig 和 Differential Evolution),这些方法在不同场景下作用更佳。

标准模块

SciPy 还包括了许多标准模块,如:

  • stats:用于计算各种统计量。
  • signal:关于信号处理的功能。
  • linalg:线性代数工具集合。
  • fftpack:快速傅里叶变换算法。
  • integrate:积分和常微分方程求解器。
  • interpolate:函数插值和平滑。
  • special:提供了包括 Bessel、Airy、Laguerre、Legendre 等特殊函数。
  • optimize:解决非线性优化问题和线性规划问题。
使用 SciPy

要使用 SciPy,可以这样导入:

import scipy

使用 SciPy 中的函数,需要在导入时指定具体的子模块。例如,如果你要使用积分函数,需要使用:

from scipy import integrate
示例代码
最小化函数

假设我们有一个函数 f(x) = x^2 + 5sin(x),我们想要找出这个函数的最小值。我们可以在 scipy.optimize 模块中使用 minimize 函数来实现。代码如下:

import numpy as np
from scipy.optimize import minimize
import matplotlib.pyplot as plt

def func(x):
    return x**2 + 5*np.sin(x)

x0 = 0
result = minimize(func, x0)

print(result)
求解微分方程

使用 SciPy 还可以方便地解决微分方程的问题。例如,如果我们要解决下面的微分方程:

y’’ + 2y’ + 5y = np.sin(x)
y(0) = 0
y’(0) = 1

我们可以采用如下的代码:

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

def model(y, x):
    dydx = np.zeros(2)
    dydx[0] = y[1]
    dydx[1] = -2*y[1] - 5*y[0] + np.sin(x)
    return dydx

y0 = [0, 1]
x = np.linspace(0, 10, 101)

y = odeint(model, y0, x)

plt.plot(x, y[:, 0], '-', label='y(x)')
plt.plot(x, y[:, 1], '--', label='y`(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

以上示例代码只提供了 SciPy 的一部分功能,更多功能请看官访问 SciPy 官网