Compute the partial derivative numerically

Hi, I want to compute the first and second partial derivative with respect to x, y for this function
x0=0
y0=0
x=[-1:0.1:1];
y=[-2:0.1:2];
v=x+exp(-((x-x0).^2+(y-y0).^2))

 採用された回答

Star Strider
Star Strider 2017 年 12 月 21 日

0 投票

See if the gradient (link) function will do what you want:
Example
x0=0;
y0=0;
x=[-1:0.1:1];
y=[-2:0.1:2];
[X,Y] = meshgrid(x, y);
v = @(x,y) x+exp(-((x-x0).^2+(y-y0).^2));
[dX,dY] = gradient(v(X,Y));
figure(1)
surf(X, Y, v(X,Y), 'FaceAlpha',0.5, 'EdgeColor',[0.3 0.3 0.7])
hold on
surf(X, Y, dX, 'EdgeColor','g')
surf(X, Y, dY, 'EdgeColor','r')
hold off
grid on
legend('v(x,y)', 'dX', 'dY')
xlabel('\bfX')
ylabel('\bfY')
view(40, 20)
figure(2)
contour(X, Y, v(X,Y))
hold on
quiver(X, Y, dX, dY)
hold off
legend('v(x,y)', 'Gradient')

4 件のコメント

F.O
F.O 2017 年 12 月 21 日
編集済み: F.O 2017 年 12 月 21 日
and i f i want the second derivative then i just write ?????
[dXX,dYY]=gradient(gradient (v(x,y))
Star Strider
Star Strider 2017 年 12 月 21 日
The easiest way is to use the related del2 (link) function. Remember to multiply it by 4 to get the second derivative:
d2Z = 4*del2(v(X,Y));
referencing my earlier code for the function call. See the del2 documentation for details, since it works a bit differently than gradient.
F.O
F.O 2017 年 12 月 21 日
Thanks for the answer
Star Strider
Star Strider 2017 年 12 月 21 日
My pleasure.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeGet Started with MATLAB についてさらに検索

製品

質問済み:

F.O
2017 年 12 月 21 日

編集済み:

F.O
2017 年 12 月 21 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by