scipy in python

Published

March 19, 2023

import scipy
scipy.__version__
'1.10.1'
import scipy.constants as C
C.g
9.80665
C.pi
3.141592653589793
import scipy.special as spl
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,20,500)
for i in range(3):
    y = spl.jv(i,x)
    plt.plot(x,y,'-',label= "J%d"%i)

积分

from scipy import integrate
y = lambda x: x**2+3
print(integrate.quad(y,-2,4))
(42.0, 4.662936703425657e-13)
y1 = y(x)
print(integrate.trapz(y1,x))# 数值采样
2726.672021397505
Y = lambda x: x**2 +3
x = np.linspace(-2,4,100)
y = Y(x)
print(integrate.trapz(y,x))
42.00367309458218

卷积

在数学的泛函分析中,卷积是通过两个函数\(f\)\(g\)生成的第三个函数的一种数学算子;相应的在处理信号中,其就是将两个信号生成第三种信号的过滤方法。

from scipy import signal
x = np.array([1,2.5,3,2])
h = np.array([0.7,0.3])

print(signal.convolve(x,h))
[0.7  2.05 2.85 2.3  0.6 ]

线性分析

a = np.array([[1,2],[3,4]])
b = np.array([[-1,0],[1,-2]])
c = a*b
d = a-b
e = 3*a
print(a)
[[1 2]
 [3 4]]
print(c,d,e)
[[-1  0]
 [ 3 -8]] [[2 2]
 [2 6]] [[ 3  6]
 [ 9 12]]
from scipy import linalg
A = np.array([[1,2],[3,4]])
la, v = linalg.eig(A) # eig返回特征值和特征向量
print(la)
[-0.37228132+0.j  5.37228132+0.j]
print(v)
[[-0.82456484 -0.41597356]
 [ 0.56576746 -0.90937671]]

奇异值分解

A = np.array([[1,2,3],[-1,-2,-3]])
m,n = A.shape
U,s,Vh = linalg.svd(A)