matlab符號函式的求導與差分的計算

卢宇博發表於2024-08-15

在上一章節我們介紹了matlab對符號變數的定義與計算,在這一章我們介紹一下如何對符號函式進行求導與對向量或者矩陣進行差分

目錄
  • 一、符號函式的求導
    • 1.一元函式的導數
    • 2.多元函式的導數
  • 二、矩陣與向量的差分
    • 1.對向量進行差分
    • 2.對矩陣進行差分

一、符號函式的求導

1.一元函式的導數

dy=diff(y,m)
diff函式可以對符號變數進行求導,輸入的一個引數為代求函式,第二個變數為求導的階數。
matlab求導後的式子可能非常複雜,可用symplify函式進行化簡求導後的式子

syms x
y = x^4-5*x^2+6
diff(y) %求一階導數
% 4*x^3 - 10*x
diff(y,2) %求二階導數
% 12*x^2 - 10

2.多元函式的導數

py = diff(y,x_m,n)
diff函式可以對多元函式進行求偏導,輸入的一個引數為待求函式,第二個引數為求偏導的變數,第三個引數為求導的階數

syms x1 x2 x3
y1 = x1^5*x2+x2*x3-x1^2*x3
py1 = diff(y1,x1,1) % 對x1求一階偏導
% 5*x2*x1^4 - 2*x3*x1
py2 = diff(y1,x1,2) % 對x1求二階偏導
% 20*x2*x1^3 - 2*x3
py3 = diff(y1,x1,x2) % 先對x1求偏導,再對x2求偏導
% 5*x1^4
py4 = diff(y1,x2,x1) % 先對x2求偏導,再對x1求偏導
% 5*x1^4

二、矩陣與向量的差分

diff函式作用在矩陣或者向量上就是對其進行差分運算

1.對向量進行差分

diff(A,m)
輸入的第一個引數為待差分向量,第二個引數為差分的階數

A=[4 5 6 3 2 1];
diff(A)  % 求向量A的一階差分     1     1    -3    -1    -1
diff(A,2)  % 在一階差分的基礎上再差分一次     0    -4     2     0

2.對矩陣進行差分

A1=diff(A,m,p)
第二個引數是差分的階數,第三個引數是差分的方法,1的話是按行進行差分,2的話是按列進行差分。不輸入就是預設按行進行差分

A=[4 5 6; 
     7 4 2;
     5 6 2]
A1=diff(A)  % 下一行減去上一行求一階差分
%      3    -1    -4
%     -2     2     0
A2=diff(A,2) % 下一行減去上一行求二階差分(在一階差分的基礎上再差分一次)
%     -5     3     4
A3=diff(A,2,1) % 最後面的1表示在行上進行差分(在列的方向上進行差分)
%     -5     3     4
A4=diff(A,1,2)  % 後一列減去前一列求一階差分, 最後面的2表示在列上進行差分(在行的方向上進行差分)
%      1     1
%     -3    -2
%      1    -4
A4=diff(A,2,2) % 後一列減去前一列求二階差分
%      0
%      1
%     -5

相關文章