python學習 scipy知識點

2021-08-20 21:07:37 字數 4619 閱讀 2952

1.1 integral積分運算

import numpy as np

from scipy.integrate import quad,dblquad,nquad #quad是一元積分,dblquad是二元積分,nquad表示n維的積分

print(quad(lambda x:np.exp(-x),0,np.inf))#在進行一元積分時此處0是x的下界,np.inf是x的上界

print(dblquad(lambda t,x:np.exp(-x*t)/t**3,0,np.inf,lambda x:1,lambda x:np.inf))#在進行二元積分時需要定義兩個變數,x的取值範圍可以和t有關

def f(x,y):

return x*y

def bound_y():

return [0,0.5]

def bound_x(y):

return [0,1-2*y]

print(nquad(f,[bound_x,bound_y]))#可將自定義的函式代入nquad中進行積分運算

(1.0000000000000002, 5.842607038578007e-11)

(0.3333333333366853, 1.3888461883425516e-08)

(0.010416666666666668, 4.101620128472366e-16)

可以自定義拉格朗日乘子法的運算過程,也可以實現凸優化的相關計算
from scipy.optimize import minimize

def rosen(x):

return np.sum(100.0*(x[1:]-x[:-1]**2.0)**2.0+(1-x[:-1])**2.0)

x0 = np.array([1.3,0.7,0.8,1.9,1.2])

res = minimize(rosen,x0,method = 'nelder-mead',options = )

print(res)

optimization terminated successfully.

current function value: 0.000000

iterations: 339

function evaluations: 571

final_******x: (array([[ 1. , 1. , 1. , 1. , 1. ],

[ 1. , 1. , 1. , 1. , 1. ],

[ 1. , 1. , 1. , 1.00000001, 1.00000001],

[ 1. , 1. , 1. , 1. , 1. ],

[ 1. , 1. , 1. , 1. , 1. ],

[ 1. , 1. , 1. , 1. , 0.99999999]]), array([ 4.86115343e-17, 7.65182843e-17, 8.11395684e-17,

8.63263255e-17, 8.64080682e-17, 2.17927418e-16]))

fun: 4.8611534334221152e-17

message: 'optimization terminated successfully.'

nfev: 571

nit: 339

status: 0

success: true

x: array([ 1., 1., 1., 1., 1.])

from pylab import * #繪圖模組

print(lg.det(arr)) #計算矩陣的行列式

print(lg.inv(arr)) #計算矩陣的逆矩陣

b = np.array([6,14])

print(lg.solve(arr,b))#解線性方程組,此時arr是係數矩陣,b是目標值,可直接代入lg.solve()進行線性方程組的求解

print(lg.eig(arr)) #計算矩陣的特徵值和特徵向量

print('lu:\n',lg.lu(arr))#進行矩陣分解中的lu分解

print('qr:\n',lg.qr(arr))#進行矩陣分解中的qr分解

print('svd:\n',lg.svd(arr))#進行矩陣分解中的svd分解(奇異值分解)

-2.0

[[-2. 1. ]

[ 1.5 -0.5]]

[ 2. 2.]

(array([-0.37228132+0.j, 5.37228132+0.j]), array([[-0.82456484, -0.41597356],

[ 0.56576746, -0.90937671]]))

lu: (array([[ 0., 1.],

[ 1., 0.]]), array([[ 1. , 0. ],

[ 0.33333333, 1. ]]), array([[ 3. , 4. ],

[ 0. , 0.66666667]]))

qr: (array([[-0.31622777, -0.9486833 ],

[-0.9486833 , 0.31622777]]), array([[-3.16227766, -4.42718872],

[ 0. , -0.63245553]]))

svd:

(array([[-0.40455358, -0.9145143 ],

[-0.9145143 , 0.40455358]]), array([ 5.4649857 , 0.36596619]), array([[-0.57604844, -0.81741556],

[ 0.81741556, -0.57604844]]))

python學習第13周 scipy

10.1 題目 題解import numpy from scipy.linalg import lstsq 10.1 least square m 20 n 10 a numpy.random.normal size m,n b numpy.random.normal size m x,residu...

python中scipy學習 隨機稀疏矩陣及操作

1.生成隨機稀疏矩陣 scipy中生成隨機稀疏矩陣的函式如下 scipy.sparse.rand m,n,density,format,dtype,random state 引數介紹 引數含義 m,n整型 表示矩陣的行和列 density 實數型別 表示矩陣的稀疏度 format str型別 表示矩...

機器學習 3 Scipy的學習

scipy是乙個高階的科學計算庫,和numpy聯絡很緊密,它的不同子模組對應不同的應用,如下 模組名功能 scipy.cluster 向量量化 scipy.constants 數學常量 scipy.fftpack 快速傅利葉變換 scipy.integrate 積分scipy.interpolate...