導航:首頁 > 編程語言 > pythonmplot3d

pythonmplot3d

發布時間:2022-08-17 09:22:08

❶ 如何使用python計算常微分方程

常用形式
odeint(func, y0, t,args,Dfun)
一般這種形式就夠用了。
下面是官方的例子,求解的是
D(D(y1))-t*y1=0
為了方便,採取D=d/dt。如果我們令初值
y1(0) = 1.0/3**(2.0/3.0)/gamma(2.0/3.0)
D(y1)(0) = -1.0/3**(1.0/3.0)/gamma(1.0/3.0)
這個微分方程的解y1=airy(t)。

令D(y1)=y0,就有這個常微分方程組。
D(y0)=t*y1
D(y1)=y0

Python求解該微分方程。
>>> from scipy.integrate import odeint
>>> from scipy.special import gamma, airy
>>> y1_0 = 1.0/3**(2.0/3.0)/gamma(2.0/3.0)
>>> y0_0 = -1.0/3**(1.0/3.0)/gamma(1.0/3.0)
>>> y0 = [y0_0, y1_0]
>>> def func(y, t):
... return [t*y[1],y[0]]
>>> def gradient(y,t):
... return [[0,t],[1,0]]
>>> x = arange(0,4.0, 0.01)
>>> t = x
>>> ychk = airy(x)[0]
>>> y = odeint(func, y0, t)
>>> y2 = odeint(func, y0, t, Dfun=gradient)
>>> print ychk[:36:6]
[ 0.355028 0.339511 0.324068 0.308763 0.293658 0.278806]
>>> print y[:36:6,1]
[ 0.355028 0.339511 0.324067 0.308763 0.293658 0.278806]
>>> print y2[:36:6,1]
[ 0.355028 0.339511 0.324067 0.308763 0.293658 0.278806]

得到的解與精確值相比,誤差相當小。
=======================================================================================================

args是額外的參數。
用法請參看下面的例子。這是一個洛侖茲曲線的求解,並且用matplotlib繪出空間曲線圖。(來自《python科學計算》)
from scipy.integrate import odeint
import numpy as np
def lorenz(w, t, p, r, b):
# 給出位置矢量w,和三個參數p, r, b 計算出
# dx/dt, dy/dt, dz/dt 的值
x, y, z = w
# 直接與lorenz 的計算公式對應
return np.array([p*(y-x), x*(r-z)-y, x*y-b*z])
t = np.arange(0, 30, 0.01) # 創建時間點
# 調用ode 對lorenz 進行求解, 用兩個不同的初始值
track1 = odeint(lorenz, (0.0, 1.00, 0.0), t, args=(10.0, 28.0, 3.0))
track2 = odeint(lorenz, (0.0, 1.01, 0.0), t, args=(10.0, 28.0, 3.0))
# 繪圖
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
ax.plot(track1[:,0], track1[:,1], track1[:,2])
ax.plot(track2[:,0], track2[:,1], track2[:,2])
plt.show()
===========================================================================
scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0)
計算常微分方程(組)
使用 FORTRAN庫odepack中的lsoda解常微分方程。這個函數一般求解初值問題。

參數:

func : callable(y, t0, ...) 計算y在t0 處的導數。
y0 : 數組 y的初值條件(可以是矢量)
t : 數組 為求出y,這是一個時間點的序列。初值點應該是這個序列的第一個元素。
args : 元組 func的額外參數
Dfun : callable(y, t0, ...) 函數的梯度(Jacobian)。即雅可比多項式。
col_deriv : boolean. True,Dfun定義列向導數(更快),否則Dfun會定義橫排導數
full_output : boolean 可選輸出,如果為True 則返回一個字典,作為第二輸出。
printmessg : boolean 是否列印convergence 消息。

返回: y : array, shape (len(y0), len(t))
數組,包含y值,每一個對應於時間序列中的t。初值y0 在第一排。
infodict : 字典,只有full_output == True 時,才會返回。
字典包含額為的輸出信息。
鍵值:

『hu』 vector of step sizes successfully used for each time step.
『tcur』 vector with the value of t reached for each time step. (will always be at least as large as the input times).
『tolsf』 vector of tolerance scale factors, greater than 1.0, computed when a request for too much accuracy was detected.
『tsw』 value of t at the time of the last method switch (given for each time step)
『nst』 cumulative number of time steps
『nfe』 cumulative number of function evaluations for each time step
『nje』 cumulative number of jacobian evaluations for each time step
『nqu』 a vector of method orders for each successful step.
『imxer』index of the component of largest magnitude in the weighted local error vector (e / ewt) on an error return, -1 otherwise.
『lenrw』 the length of the double work array required.
『leniw』 the length of integer work array required.
『mused』a vector of method indicators for each successful time step: 1: adams (nonstiff), 2: bdf (stiff)
其他參數,官方網站和文檔都沒有明確說明。相關的資料,暫時也找不到。

❷ python 怎樣數據可視化 3d

importrandom

importnumpyasnp
importmatplotlibasmpl
importmatplotlib.pyplotasplt
importmatplotlib.datesasmdates

frommpl_toolkits.mplot3dimportAxes3D

mpl.rcParams['font.size']=10

fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')

forzin[2011,2012,2013,2014]:
xs=xrange(1,13)
ys=1000*np.random.rand(12)

color=plt.cm.Set2(random.choice(xrange(plt.cm.Set2.N)))
ax.bar(xs,ys,zs=z,zdir='y',color=color,alpha=0.8)

ax.xaxis.set_major_locator(mpl.ticker.FixedLocator(xs))
ax.yaxis.set_major_locator(mpl.ticker.FixedLocator(ys))

ax.set_xlabel('Month')
ax.set_ylabel('Year')
ax.set_zlabel('SalesNet[usd]')

plt.show()

效果圖:


利用ptyhonmatplotlib 3D函數可以畫出一些3D視覺圖

❸ python文件打包成exe文件,報錯No mole named mpl_toolkits.mplot3d

不是版本的問題,是缺少模塊,你需要安裝
mpl_toolkits.mplot3d
這個模塊。
安裝方法有直接下載安裝,或者pip安裝,或者esay安裝,具體網路一下,有詳細步驟。

❹ python多維數據怎麼繪制散點圖

python matplotlib模塊,是擴展的MATLAB的一個繪圖工具庫。他可以繪制各種圖形,可是最近最的一個小程序,得到一些三維的數據點圖,就學習了下python中的matplotlib模塊,如何繪制三維圖形。

初學者,可能對這些第三方庫安裝有一定的小問題,對於一些安裝第三方庫經驗較少的朋友,建議使用 Anaconda ,集成了很多第三庫,基本滿足大家的需求,下載地址,對應選擇python 2.7 或是 3.5 的就可以了(PS:後面的demo是python2.7):

首先提醒注意,以下兩個函數的區別:

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow') #繪面1

ax.scatter(x[1000:4000],y[1000:4000],z[1000:4000],c='r') #繪點1

1、繪制3D曲面圖

# -*- coding: utf-8 -*-"""
Created on Thu Sep 24 16:17:13 2015

@author: Eddy_zheng
"""from matplotlib import pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)# 具體函數方法可用 help(function) 查看,如:help(ax.plot_surface)ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')

plt.show()

效果展示:

2、繪制三維的散點圖(通常用於表述一些數據點分布)

4a.mat 數據地址,找到4a.mat 下載即可:

# -*- coding: utf-8 -*-"""
Created on Thu Sep 24 16:37:21 2015

@author: Eddy_zheng
"""import scipy.io as sio
from mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as plt

mat1 = '4a.mat' #這是存放數據點的文件,需要它才可以畫出來。上面有下載地址data = sio.loadmat(mat1)
m = data['data']

x,y,z = m[0],m[1],m[2]
ax=plt.subplot(111,projection='3d') #創建一個三維的繪圖工程#將數據點分成三部分畫,在顏色上有區分度ax.scatter(x[:1000],y[:1000],z[:1000],c='y') #繪制數據點ax.scatter(x[1000:4000],y[1000:4000],z[1000:4000],c='r')
ax.scatter(x[4000:],y[4000:],z[4000:],c='g')

ax.set_zlabel('Z') #坐標軸ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()24252627

效果:

上面就是學習區分了下兩個函數,當時還被小困惑了下,希望對大家有所幫助。其實裡面還有好多參數設置,比如說改變顏色,包括繪制點圖的點的形狀等都是可以改變的,有需要的大家可以自己看看這個函數,學習下(help(對應的function))。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。Eddy_zheng

❺ 用python 里的 matplotlib,axes3d 要怎麼實現下面這樣的效果

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X = [1, 1, 2, 2]
Y = [3, 4, 4, 3]
Z = [1, 2, 1, 1]
ax.plot_trisurf(X, Y, Z)
plt.show()

❻ python怎麼實現方程組的解隨參數變化

不是很明確你需要做到什麼程度,但基本可以通過以下兩個手段得到:

  1. 手工解方程得到解析解,然後套入公式

  2. 使用一些工具包例如numpy可以自動求解

以下都給出例子

importnumpyasnp
importmatplotlib.pyplotasplt

plt.axis("equal")

a=np.linspace(1,10,100)#a的變化范圍可以自己挑,前兩個參數控制,

#使用numpy自動求解
res=[]
forxina:
A=np.mat("1,2;{},-1".format(x))
b=np.mat("{},10".format(x)).T
res.append(np.linalg.solve(A,b))

#計算完畢後取出每對x和y
x1=[float(r[0])forrinres]
y1=[float(r[1])forrinres]

plt.plot(x1,y1)

#####################################

#手工計算過程很簡單不放上來了,直接上結果

x2=[(a1+20)/(2*a1+1)fora1ina]
y2=[(a1**2-10)/(2*a1+1)fora1ina]

plt.plot(x2,y2)

❼ 怎麼用python的numpy模塊和matplotlib模塊把下面這些文本做一個3d的數據建模

你好,你現在那個圖是一個連續的波形圖,因為你提供的是具體的數據,沒有xyz之間的關系公式,所以只能是畫一個散點圖。假設你已經將xyz都讀進來了,下面是一個畫三d散點圖的例子。
from mpl_toolkits.mplot3d.axes3d import Axes3D
#繪制3維的散點圖
x = np.random.randint(0,10,size=100) #用你X的數據來代替
y = np.random.randint(-20,20,size=100) #用你Y的數據來代替
z = np.random.randint(0,30,size=100) #用你的Z的數據來代替

# 此處fig是二維
fig = plt.figure()

# 將二維轉化為三維
axes3d = Axes3D(fig)

# axes3d.scatter3D(x,y,z)
# 效果相同
axes3d.scatter(x,y,z)

❽ Python如何運用matplotlib庫繪制3D圖形

3D圖形在數據分析、數據建模、圖形和圖像處理等領域中都有著廣泛的應用,下面將給大家介紹一下如何在Python中使用 matplotlib進行3D圖形的繪制,包括3D散點、3D表面、3D輪廓、3D直線(曲線)以及3D文字等的繪制。

准備工作:

python中繪制3D圖形,依舊使用常用的繪圖模塊matplotlib,但需要安裝mpl_toolkits工具包,安裝方法如下:windows命令行進入到python安裝目錄下的Scripts文件夾下,執行: pip install --upgrade matplotlib即可;Linux環境下直接執行該命令。

安裝好這個模塊後,即可調用mpl_tookits下的mplot3d類進行3D圖形的繪制。

下面以實例進行說明。

1、3D表面形狀的繪制

這段代碼是繪制一個3D的橢球表面,結果如下:


2、3D直線(曲線)的繪制

這段代碼用於繪制一個螺旋狀3D曲線,結果如下:

3、繪制3D輪廓

繪制結果如下:

相關推薦:《Python視頻教程》

4、繪制3D直方圖

繪制結果如下:

5、繪制3D網狀線

繪制結果如下:

6、繪制3D三角面片圖

繪制結果如下:

7、繪制3D散點圖

繪制結果如下:

閱讀全文

與pythonmplot3d相關的資料

熱點內容
win11什麼時候可以裝安卓 瀏覽:560
java不寫this 瀏覽:998
雲點播電影網php源碼 瀏覽:95
pythonclass使用方法 瀏覽:224
移動加密軟體去哪下載 瀏覽:292
php彈出alert 瀏覽:207
吉林文檔課件加密費用 瀏覽:134
感測器pdf下載 瀏覽:287
隨車拍app綁定什麼設備 瀏覽:898
方維團購系統源碼 瀏覽:993
linux反彈shell 瀏覽:159
列印機介面加密狗還能用嗎 瀏覽:301
二板股票源碼 瀏覽:448
度人經pdf 瀏覽:902
怎麼配置android遠程伺服器地址 瀏覽:960
java程序員看哪些書 瀏覽:943
什麼app可以免費和外國人聊天 瀏覽:797
pdf手寫筆 瀏覽:182
別永遠傷在童年pdf 瀏覽:990
愛上北斗星男友在哪個app上看 瀏覽:421