I have an error while plotting
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Thomas van de Wiel
le 31 Déc 2015
Réponse apportée : Star Strider
le 31 Déc 2015
I have the following code (It's a differential equation)
function conv = h4_5(t,q)
a=8/3;
b=28;
c=10;
x=q(1);
y=q(2);
z=q(3);
conv=zeros(3,1);
conv(1)=c*(y-x);
conv(2)=x*(b-z)-y;
conv(3)=x*y-a*z;
end
but when I'm trying to solve and plot it with
[t,q]=ode45('h4_5',[0 200],[0 1 0]);
plot3(q(1),q(2),q(3),'b')
view(-10,10)
xlabel('x')
ylabel('y')
zlabel('z')
all I get is an empty graph. No errors or something, just an empty graph. The goal of this exercise is plotting convection in the atmosphere with aid of the three given differential equations (displayed in first part of code behind conv(1), 2 and 3. I hope someone knows how to fix this.
0 commentaires
Réponse acceptée
Star Strider
le 31 Déc 2015
You need to call your ‘h4_5’ equation correctly using function handle syntax (adding the ‘@’ sign) in your ode45 call. Then recognising that you want to plot the columns of the ‘q’ matrix ode45 returns, you have to address them as such.
With these minor changes, this works:
[t,q]=ode45(@h4_5,[0 200],[0 1 0]);
plot3(q(:,1),q(:,2),q(:,3),'b')
view(-10,10)
xlabel('x')
ylabel('y')
zlabel('z')
grid on
I added the grid call.
Also, note that conv is a MATLAB bulit-in function for convolution. It doesn’t make any difference here because you’re not using it otherwise in your ODE function and a function workspace is unique to it, but it’s best to avoid using any function name as a variable name. This is called ‘overshadowing’ and can cause serious problems in your code, because MATLAB will use the variable definition rather than the function definition if you have already used a specific name as a variable.
0 commentaires
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!