Matlab計算矩陣和函數梯度


一、差分與微分

  我自己的理解。

二、求解

  2.1 矩陣

  這就是matlab的計算結果.太小的話放大些:
c =
     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
  先看x,x就是矩陣的橫向梯度,怎么求解的呢,第一列就是的數值就是第二列減去第一列的值除以1   比如-5=(2-7)/1.第2列就是第二列減去第一列的值加上第三列減去第二列的值再除以2,比如:-3=((2-7)+(1-2))/2.最后一列比較特殊,因為它之后沒有其余列了,於是最后一列=最后一列減去倒數第二列除以1.比如-1=(1-2)/1. y的求解跟1就是一個性質了  。

  2.2 二元函數

  在上MATLAB課的時候,有學生問怎么用gradient函數求f=2x2+3y3的梯度啊,不懂得怎么寫格式,試了很多次都不行.解答如下:
  在MATALB中,求梯度只能是求數值梯度,所以必須將函數f離散化,用差分代替微分,精度取決於差分步長,因為現在計算機速度足夠快,所以差分可以取得足夠小,也不影響計算速度和計算精度.方法如下:
 X=-6:0.6:6;   %計算區間是[-6 6],步長0.6
Y=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)    %與梯度值對應,繪出原函數的等值線圖

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM