1. 程式人生 > >MATLAB中向量場圖的繪製 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB

MATLAB中向量場圖的繪製 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB

一般用於繪製二維向量場圖,函式呼叫方法如下:

1

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)。

1

2

3

4

5

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。參考方法如下:

1

quiver(x,y,u,v,1)

  畫出影象如下 :

當然,也可以改變顏色。改變顏色可以參考LineSpec的設定,參考程式碼如下:

1

>> quiver(x,y,u,v,'-r')  

%這裡將影象設定為紅色

  畫出影象如下:

例2:(參考MathWorks):已知u=ycosxu=ycosx, v=ysinxv=ysinx

1

2

3

4

[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=y2−x2z=y2−x2的三維向量場圖。

1

2

3

4

>> [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′=x2−tx′=x2−t對應的向量場圖,我們可以輸入對應的公式與引數值。在這裡,上圖中預設的常微分方程對應向量場圖:

在MATLAB中呼叫pplane,呈現

以預設的微分方程為例,可以繪製向量場圖: