我自己的理解。
這就是matlab的計算結果.太小的話放大些:
c =先看x,x就是矩陣的橫向梯度,怎麼求解的呢,第一列就是的數值就是第二列減去第一列的值除以1 比如-5=(2-7)/1.第2列就是第二列減去第一列的值加上第三列減去第二列的值再除以2,比如:-3=((2-7)+(1-2))/2.最後一列比較特殊,因為它之後沒有其餘列了,於是最後一列=最後一列減去倒數第二列除以1.比如-1=(1-2)/1.4 5 9
7 2 1
5 2 6
>> [x,y]=gradient(c)
x = 1.0000 2.5000 4.0000
-5.0000 -3.0000 -1.0000
-3.0000 0.5000 4.0000
y = 3.0000 -3.0000 -8.0000
0.5000 -1.5000 -1.5000
-2.0000 0 5.0000
y的求解跟1就是乙個性質了 。
在上matlab課的時候,有學生問怎麼用gradient函式求f=2x2+3y3的梯度啊,不懂得怎麼寫格式,試了很多次都不行.解答如下:
在matalb中,求梯度只能是求數值梯度,所以必須將函式f離散化,用差分代替微分,精度取決於差分步長,因為現在計算機速度足夠快,所以差分可以取得足夠小,也不影響計算速度和計算精度.方法如下:
x=-6:0.6:6; %計算區間是[-6 6],步長0.6y=x;
[x,y]=meshgrid(x,y) %生成計算網格
f=2.*x.^2+3.*y.^3 %計算網格結點上的函式值
[dx,dy]=gradient(f) %用數值方法求函式梯度
quiver(x,y,dx,dy) %用向量繪圖函式繪出梯度向量大小分布
hold on
contour(x,y,f) %與梯度值對應,繪出原函式的等值線圖
matlab梯度計算
clc x 8,9,6,9,2 5,8,7,0,1 4,5,4,6,9 8,1,0,9,5 fx,fy gradient x 結果如下 fx 1.0000 1.0000 0 2.0000 7.0000 3.0000 1.0000 4.0000 3.0000 1.0000 1.0000 0 0.500...
matlab 梯度計算原理
clc x 8,9,6,9,2 5,8,7,0,1 4,5,4,6,9 8,1,0,9,5 fx,fy gradient x 結果如下 fx 1.0000 1.0000 0 2.0000 7.0000 3.0000 1.0000 4.0000 3.0000 1.0000 1.0000 0 0.500...
Jacobian矩陣和梯度矩陣
記號標識 標量 常規小寫字母 向量 加粗的小寫字母 x x1,xm t rm bm x x 1,cdots,x m t in mathbb m x x1 x m t rm 實矩陣 加粗的大寫字母 x x1,xn t rm n bm x bm x 1,cdots,bm x n t in mathbb ...