一、梯度
梯度,是矢量函數的微分運算,表示函數在該點變化最快的方向和大小,通俗地說,就是函數在某點的變化率,其形式化表示如下:
$$\nabla f = \frac{\partial f}{\partial x}i + \frac{\partial f}{\partial y}j + \frac{\partial f}{\partial z}k$$
其中,$\nabla$表示向量算符,$f$為標量函數,$i$、$j$、$k$為三維直角坐標系下的單位矢量。
梯度的坐標表示形式是:
$$\nabla f = \left(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z}\right)$$
梯度的幾何意義是,以某點為起點,沿著梯度的方向,函數變化最快,變化率最大,這個值就是梯度值。梯度不僅能衡量標量函數的變化率,對於向量函數$\vec{F}(x,y,z)$而言,其梯度是一個矩陣:
$$\nabla \vec{F} = \begin{bmatrix} \frac{\partial F_x}{\partial x} & \frac{\partial F_x}{\partial y} & \frac{\partial F_x}{\partial z} \\ \frac{\partial F_y}{\partial x} & \frac{\partial F_y}{\partial y} & \frac{\partial F_y}{\partial z} \\ \frac{\partial F_z}{\partial x} & \frac{\partial F_z}{\partial y} & \frac{\partial F_z}{\partial z} \end{bmatrix}$$
其意義是函數在某點的變化率以及變化的方向,用於描述場的變化趨勢,例如刻畫電場的變化趨勢。
下面是一個梯度的代碼實例:
import numpy as np def gradient(f, hx, hy, hz): dfdx = np.gradient(f, hx, axis=0) dfdy = np.gradient(f, hy, axis=1) dfdz = np.gradient(f, hz, axis=2) return np.stack((dfdx,dfdy,dfdz), axis=3)
二、散度
散度是矢量場的微分運算,表示矢量場的流出或流入的量,描述矢量場在某點的流線發散的程度,其形式化表示如下:
$$\operatorname{div}\vec{F}=\frac{\partial F_x}{\partial x} + \frac{\partial F_y}{\partial y} + \frac{\partial F_z}{\partial z}$$
幾何上,散度衡量了一個點附近的場源的強度和分布,表示在這個點處,場源的產生或吸收程度。例如刻畫電荷分布的情況時,散度描述了電荷密度分布的緊密程度和電場強度的大小。
下面是一個散度的代碼實例:
import numpy as np def divergence(F, hx, hy, hz): dfdx = np.gradient(F[:,:,:,0], hx, axis=0) dfdy = np.gradient(F[:,:,:,1], hy, axis=1) dfdz = np.gradient(F[:,:,:,2], hz, axis=2) return dfdx + dfdy + dfdz
三、旋度
旋度是矢量場的微分運算,表示矢量場的旋轉程度和旋轉的方向,其形式化表示如下:
$$\nabla \times \vec{F} = \begin{vmatrix} i & j & k \\ \frac{\partial}{\partial x} & \frac{\partial}{\partial y} & \frac{\partial}{\partial z} \\ F_x & F_y & F_z \end{vmatrix}$$
幾何上,旋度刻畫了場源對矢量場旋轉的影響,即流線在一個點旋轉的強度和方向,用於分析流體的旋轉情況以及刻畫其他矢量場的旋轉情況。
下面是一個旋度的代碼實例:
import numpy as np def curl(F, hx, hy, hz): dfdz = np.gradient(F[:,:,:,0], hz, axis=1, edge_order=2) - np.gradient(F[:,:,:,1], hy, axis=2, edge_order=2) dfdx = np.gradient(F[:,:,:,1], hx, axis=2, edge_order=2) - np.gradient(F[:,:,:,2], hz, axis=0, edge_order=2) dfdy = np.gradient(F[:,:,:,2], hy, axis=0, edge_order=2) - np.gradient(F[:,:,:,0], hx, axis=1, edge_order=2) return np.stack((dfdx,dfdy,dfdz), axis=3)
結語
本文詳細闡述了梯度、散度、旋度的定義、幾何意義和應用,並且給出了相應的代碼實例,感興趣的讀者可以結合實例進行學習和應用。
原創文章,作者:EULTQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372500.html