How can I plot the gradient vector of y=f(X) which is perpendicular to the graph?

1 view (last 30 days)
To plot the gradient vectors of f(x)=y=sin(x), I plotted z=y-sin(x) contours and plotted the gradient vectors for each contour but I just want one curve which is equal y=sin(x) and its gradient vector. The codes I used are as follows:
x=-pi:0.2:pi;
y=-1:0.2:1;
[X,Y]=meshgrid(x,y);
Z=Y-sin(X);
contour(X,Y,Z)
xlabel({'$x$'},'interpreter','latex')
ylabel({'$y$'},'interpreter','latex')
[DX,DY] = gradient(Z,.2,.2);
hold on
quiver(X,Y,DX,DY,0.5)

Accepted Answer

Seyyed Mohammad Saeed Damadi
Axis equal cannot solve the problem. I solved it on my own. Here is the codes:
x=-pi:0.2:pi;
figure
y1=sin(x);
plot(x,y1,'linewidth',2)
xlim([-pi pi])
xlabel({'$x$'},'interpreter','latex')
ylabel({'$y$'},'interpreter','latex')
v1=-cos(x);
v2=ones(1,length(x));
hold on
quiver(x,y1,v1,v2,0.2)

More Answers (1)

Kim Folmer Andersen
Kim Folmer Andersen on 11 Jan 2018
try; axis equal

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!