导库
# python3.7
# -*- coding: utf-8 -*-
#@Author : huinono
#@Software : PyCharm
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy.integrate import odeint
import sys
#把其它工作路径路径添加进去
sys.path.append(r'E:/pycharm/untitled')
#忽略由于版本更新而导致的一些警告
import warnings
warnings.filterwarnings('ignore')
#在图中能够显示中文
mpl.rcParams['font.sans-serif'] = 'SimHei'
mpl.rcParams['axes.unicode_minus'] = 'False'
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = 'False'
odeint的使用
一阶微分方程
求解一阶微分方程例子
def diff(y, x):
dydx = np.array(x)
return dydx
x = np.linspace(0,10,100)
y = odeint(diff,0,x)
plt.plot(x,y[:, 0])
plt.show()
求解一阶微分方程组例子(lorenz方程)
def Lorenz_odeint(variable,t,params):
x,y,z = variable
dxdt = params[0]*(y-x)
dydt = -x*z + params[2]*x - y
dzdt = x*y - params[1]*z
dfdt = np.array([dxdt,dydt,dzdt])
return dfdt
def ScipyOdeint_Lorenz(x0,y0,z0,t0,tn,h):
t = np.arange(t0,tn,h)
dfdt = odeint(Lorenz_odeint,(x0,y0,z0),t,args=([10,8/3,28],))
plt.plot(dfdt[:,0],dfdt[:,1])
plt.show()
高斯核密度估计
kde = scipy.stats.gaussian_kde(data)
pdf = kde.evaluate(position)