How to calculate gradients of a symbolic function
31 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I have a symbolic function of the form f = 2*y*z*sin(x) + 3*x*sin(z)*cos(y) and want to calcuate gradients with respect to x, y and z. I cannot define syms x y z before creating the function as its an input. Therefore, I defined syms x y z afterwards but its not working. The follwing error appeared:
Unable to convert expression into double array.
How do I calcuate gradients of this symbolic function?
0 Commenti
Risposta accettata
Walter Roberson
il 13 Mar 2019
%construct the input
syms x y z
f(x,y,z) = 2*y*z*sin(x) + 3*x*sin(z)*cos(y);
%and assume you are passing f into a different function so x y z are not still around
g = yadayada(f);
function g = yadayada(f)
%so we have an input symbolic function but for some reason
%we are not in the context where the variables came from.
%it turns out to be as simple as
g = gradient(f);
%or for greater certainty you could
g = gradient(f, symvar(f)); %which is what the simple call does
%or perhaps you have a reason to do
syms x y z
g = gradient(f(x, y, z), [x y z])
%for example it might be a symbolic function in three other
%variables that you want to re-label as x, y, z.
end
0 Commenti
Più risposte (1)
Dirk
il 8 Set 2022
How do I etermine the intervals on which a function is increasing and decreasing for x ϵ [0,4] ![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1120275/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1120275/image.png)
1 Commento
Torsten
il 8 Set 2022
syms x
f = x.*cos(x.^2)-exp(sqrt(x))+x.^3-4*x.^2;
df = diff(f,x);
f = matlabFunction(f);
df = matlabFunction(df);
x = 0:0.01:4;
plot(x,f(x))
x0 = [1.75 2.25];
sol(1) = fzero(df,x0);
x0 = [2.25 2.75];
sol(2) = fzero(df,x0);
x0 = [2.75 3.2];
sol(3) = fzero(df,x0);
x0 = [3.25 3.6];
sol(4) = fzero(df,x0);
x0 = [3.75 4];
sol(5) = fzero(df,x0);
sol
Vedere anche
Categorie
Scopri di più su Symbolic Variables, Expressions, Functions, and Preferences in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!