How to find gradient of a vector field in matlab symbolic

23 ビュー (過去 30 日間)
Chandan
Chandan 2023 年 12 月 12 日
回答済み: Chandan 2023 年 12 月 13 日
I am trying to find gradient of a vector field in matlab symbolic , whose output will be matrix but it am getting error
  2 件のコメント
KSSV
KSSV 2023 年 12 月 12 日
Copy your code here. Don't attach it as an screen shot/ image.
Chandan
Chandan 2023 年 12 月 12 日
clc ; clear all
syms x y z
syms u(x,y,z) v(x,y,z) w(x,y,z)
V = [u v w];
S = [x y z];
gradient(u,S)
ans(x, y, z) = 
gradient(V,S) % How to take gradient of vector field
Error using sym/gradient
Invalid argument at position 1. Argument must be scalar or a symbolic function with scalar formula.

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

採用された回答

Walter Roberson
Walter Roberson 2023 年 12 月 12 日
移動済み: Walter Roberson 2023 年 12 月 12 日
The fundamental problem you are having is that gradient does not accept a vector the first parameter.
syms x y z
syms u(x,y,z) v(x,y,z) w(x,y,z)
V = [u(x,y,z) v(x,y,z) w(x,y,z)];
S = [x y z];
temp = arrayfun(@(EXPR) gradient(EXPR,S), V, 'uniform', 0);
result(x,y,z) = [temp{:}]
result(x, y, z) = 

その他の回答 (2 件)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2023 年 12 月 12 日
If you assign an expression for V, you will get this:
clc ; clearvars
syms x y z
syms u(x,y,z) v(x,y,z) w(x,y,z)
V(x,y,z) = 2*u+3*v-w % Some e.g. expression
V(x, y, z) = 
S = [x y z];
du = gradient(u,S)
du(x, y, z) = 
dV = gradient(V,S)
dV(x, y, z) = 
% OR simply
dV= gradient(V,[x,y,z])
dV(x, y, z) = 
  1 件のコメント
Dyuman Joshi
Dyuman Joshi 2023 年 12 月 12 日
V is not a combination of u, v and w, but an array with u, v and w as elements.

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


Chandan
Chandan 2023 年 12 月 13 日
% thanks for answer. It worked with the Jacobian too.
clc; clearvars;
syms x y z
syms u(x, y, z) v(x, y,z) w(x,y,z)
V = [u v w];
S = [x y z];
jacobian(V,S)
ans(x, y, z) = 

カテゴリ

Help Center および File ExchangeSymbolic Math Toolbox についてさらに検索

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by