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...