Surface Plot for ODE solution

7 vues (au cours des 30 derniers jours)
Folke Voß
Folke Voß le 22 Avr 2019
Commenté : Star Strider le 7 Déc 2022
How can I make a surface plot for the ODE solution for different constants z?
w = 1;
k=1;
figure
tspan = [0 5];
for z=0.1:0.01:0.5
f = @(t,x) [-1i.*(2*w + 2*z).*x(1) + -1i.*sqrt(2).*k.*x(2);-1i.*sqrt(2).*k.*x(1) + -1i.*2*w*x(2)+-1i.*sqrt(2).*k.*x(3);-1i.*sqrt(2).*k.*x(2)+-1i.*2*w*x(3)];
[t,xa] = ode45(f,tspan,[0 1 0]);
gs = abs(xa).^2;
surf(t,z,gs(:,2))
end
  2 commentaires
T K
T K le 7 Déc 2022
Please, when I run this code, this problem appears.
Error in Untitled7 (line 15)
surf(t,zv,gs2')
Star Strider
Star Strider le 7 Déc 2022
@T K — Check to see if you have a variable or user function called ‘surf’ by running this from a script or your Command Window —
which surf -all
/MATLAB/toolbox/matlab/graph3d/surf.m
It should give only this result. If it returns anything else, that points to the problem. The solution is to rename the other function or variable.
.

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 22 Avr 2019
You need to make a few changes in your code:
w = 1;
k=1;
figure
tspan = linspace(0, 5); % Create Constant ‘tspan’
zv=0.1:0.01:0.5; % Vector Of ‘z’ Values
gs2 = zeros(numel(tspan), numel(zv)); % Preallocate
for k = 1:numel(zv)
z = zv(k);
f = @(t,x) [-1i.*(2*w + 2*z).*x(1) + -1i.*sqrt(2).*k.*x(2);-1i.*sqrt(2).*k.*x(1) + -1i.*2*w*x(2)+-1i.*sqrt(2).*k.*x(3);-1i.*sqrt(2).*k.*x(2)+-1i.*2*w*x(3)];
[t,xa] = ode45(f,tspan,[0 1 0]);
gs = abs(xa).^2;
gs2(:,k) = gs(:,2); % Save Second Column Of ‘gs’ In ‘gs2’ Matrix
end
figure
surf(t,zv,gs2')
grid on
xlabel('t')
ylabel('z')
shading('interp')
Experiment to get the result you want.
  2 commentaires
Folke Voß
Folke Voß le 22 Avr 2019
Thank you a lot Star Strider.
The code is working the way I wanted to.
Star Strider
Star Strider le 22 Avr 2019
As always, my pleasure.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by