Calculate the gradient of a function

Hello. I want to calculate the gradient of the function :
g={@(x)-x;@(x)x-1;@(y)-y;@(y)y-1};
with the following command :
gradient(g, [x, y]);
but I get the following error :
Undefined function or variable 'x'.
How I should proceed? Thanks.

2 件のコメント

John BG
John BG 2016 年 9 月 13 日
編集済み: John BG 2016 年 9 月 13 日
perhaps you would like to consider proceeding by defining x?
amine&&
amine&& 2016 年 9 月 14 日
Thanks john, Even if i define the variable that gives me an error. Thanks.

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

 採用された回答

Walter Roberson
Walter Roberson 2016 年 9 月 13 日

1 投票

You are confusing the numeric gradient function http://www.mathworks.com/help/matlab/ref/gradient.html with the symbolic gradient function, http://www.mathworks.com/help/symbolic/gradient.html
On the other hand, neither gradient() accepts a vector or cell array of function handles. Numeric gradient() accepts a numeric vector or array, and spacing distances for each of the dimensions. Symbolic gradient() accepts a scalar symbolic expression or symbolic function together with the variables to take the gradient over.
When you have a vector of functions to work with, you almost certainly want a jacobian rather than a gradient. Symbolic jacobian http://www.mathworks.com/help/symbolic/jacobian.html accepts a symbolic expression, symbolic function, or symbolic vector (but not a cell array of function handles.)

3 件のコメント

amine&&
amine&& 2016 年 9 月 14 日
Thanks Roberson, i think the following command is just :
jacobian([-x, x-1, -y, y-1], [x, y])
Thanks.
Walter Roberson
Walter Roberson 2016 年 9 月 14 日
You would have to have
syms x y
first.
amine&&
amine&& 2016 年 9 月 14 日
編集済み: amine&& 2016 年 9 月 14 日
Ok Roberson. Thanks!

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

その他の回答 (1 件)

カテゴリ

タグ

質問済み:

2016 年 9 月 13 日

回答済み:

2021 年 8 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by