Plotting for various values of the same parameter on the same plot
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ke Le
el 28 de Ag. de 2021
Comentada: Star Strider
el 30 de Ag. de 2021
Asking here on how to plot "Y1(2,:)" for multiple "S" values on the same figure?. Consider values such as "S=0.1, 0.5, 1.1, 1.5" etc.
dYdX = @(X,Y) [Y(2); Y(3); S*Y(2).^2+Y(1).*Y(3)];
res = @(ya,yb) [ya(1)-1; ya(2); yb(2)];
SolYinit = bvpinit(linspace(0,5,50),[0; 0.2; 0.4]);
Fsol = bvp4c(dYdX, res, SolYinit);
X1 = Fsol.x;
Y1 = Fsol.y;
figure (1)
plot(X1, Y1(2,:), 'LineWidth', 2);
hold on
2 comentarios
Respuesta aceptada
Star Strider
el 29 de Ag. de 2021
Set ‘S’ as a vector, add ‘S’ as an additional parameter to the ‘dYdX’ function, then iterate through the values of ‘S’.
Try this —
Sv = [0.1, 0.5, 1.1, 1.5];
dYdX = @(X,Y,S) [Y(2); Y(3); S*Y(2).^2+Y(1).*Y(3)];
res = @(ya,yb) [ya(1)-1; ya(2); yb(2)];
SolYinit = bvpinit(linspace(0,5,50),[0; 0.2; 0.4]);
for k = 1:numel(Sv)
S = Sv(k);
Fsol = bvp4c(@(X,Y)dYdX(X,Y,S), res, SolYinit);
X1{k} = Fsol.x;
Y1{k} = Fsol.y;
end
figure (1)
Nrsp = numel(Sv);
for k = 1:Nrsp
subplot(Nrsp,1,k)
plot(X1{k}, Y1{k}(2,:), 'LineWidth', 2)
grid
title(sprintf('S = %.1f',Sv(k)))
end
I opted for the subplots because the scales vary so significantly on the solutions that the details in the solution for ‘S(1)’ gets lost if they are all plotted on the same axes.
.
4 comentarios
Star Strider
el 30 de Ag. de 2021
My pleasure!
If my Answer helped you solve your problem, please Accept it!
.
Más respuestas (1)
the cyclist
el 28 de Ag. de 2021
% Some data
x = 1:10;
% Create the figure window, use the hold command
% to prevent overwriting of axes
figure
hold on
% Plot line with different slope parameters
for s = 1:3
plot(x,s*x)
end
Ver también
Categorías
Más información sobre Function Creation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

