1.quiver函數
一般用於繪制二維矢量場圖,函數調用方法如下:
quiver(x,y,u,v)
該函數展示了點(x,y)對應的的矢量(u,v)。其中,x的長度要求等於u、v的列數,y的長度要求等於u、v的行數。在繪制圖像的過程中,
通常用 meshgrid 來生成所需的網格采樣點。
下面舉幾個例子:
例1:一個最簡單的例子,該二維矢量場圖中的矢量皆從(0,0)出發,分別指向(1,0) 、(-1,0) 、(0,1) 、(0,-1)。
x=[0 0 0 0]; y=x; u=[1 -1 0 0]; v=[0 0 1 -1]; quiver(x,y,u,v)
畫出下圖
但我們發現箭頭並沒有完全指到(1,0) 、(-1,0) 、(0,1) 、(0,-1) 。如果需要箭頭完全指到(1,0) 、(-1,0) 、(0,1) 、(0,-1),我們需要改變scale參數,將其設為1。參考方法如下:
quiver(x,y,u,v,1)
畫出圖像如下 :
當然,也可以改變顏色。改變顏色可以參考LineSpec的設置,參考代碼如下:
>> quiver(x,y,u,v,'-r') %這里將圖像設置為紅色
畫出圖像如下:
例2:(參考MathWorks):已知$u=ycosx$, $v=ysinx$
[x,y] = meshgrid(0:0.2:2,0:0.2:2); %生成所需的網格采樣點 x與y在0到2區間 每隔0.2取一個點 u = cos(x).*y; v = sin(x).*y; quiver(x,y,u,v) %繪制二維矢量場圖
畫出下圖:
用法與quiver類似,用於三維矢量場圖的繪制。
例3: (參考MathWorks)繪制$z=y^2-x^2$的三維矢量場圖。
>> [x,y]=meshgrid(-3:.5:3,-3:.5:3); %生成所需的網格采樣點 x與y在-3到3范圍內 每隔0.5取一個點 >> z=y.^2-x.^2; >> [u,v,w]=surfnorm(z); %取三維曲面的法線 >> quiver3(z,u,v,w) %繪制三維矢量場圖
畫出下圖:
3.dfield與pplane(多應用於常微分方程)
dfield與pplane的原作者是Rice University的John C. Polking,用於解決涉及常微分方程的問題,比較方便,這里可以下載dfield與pplane的.m文件
在MATLAB中調用dfield,呈現 :
如果我們要繪制常微分方程$x'=x^2-t$對應的矢量場圖,我們可以輸入對應的公式與參數值。在這里,上圖中默認的常微分方程對應矢量場圖:
在MATLAB中調用pplane,呈現
以默認的微分方程為例,可以繪制矢量場圖: