Plot a second order equation and plot two equations on the same grafic

Hi everyone,
1. I can't plot this function in a grafic, I think the code in the editor is not right. The second order equation is:
(a) dx^2/dt^2 (t) = -xg0*w0^2*sin(wf*t)-w0^2*x-2*M*w0*beta*dx/dt
xg0, w0, M, beta are constants.
2. Plot two solutions in the same grafic.
I already solve other system with ode45, now i want to plot that second order equation with one solution of this sistem.
It is a enginneering problem that consist in a structure with and without a vibration control system. One equation (a) give me the response without that control and the system of equations give me the response with that control... I need to compare that in the same grafic.
Thank's everyone.

 采纳的回答

You can plot multiple sets of data on one figure multiple ways. The first way would be:
plot(x1,y1,x2,y2,...)
The next most common would involve using hold:
plot(x1,y1)
hold on
plot(x2,y2)

11 个评论

Yes that work but in my case I can't do it like that. Because:
EDITOR:
1. Equation: It is my first problem because I can define in EDITOR the second order equation that I descrive on the first coment
2. Equation system:
s=@(t,y) [y(3); y(4); (-(M+mv*A*L)*xg0*w0^2*sin(wf*t)-M*w0^2*y(1)-2*M*w0*beta*y(3)-mv*A*alfa*L*((mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)))/(M+mv*A*L);(mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)];
[T,Y]= ode45(s,[0 30],[0 0 0 0]);
To plot just the solution of the system I use plot(T,Y(:,1)) (for example). But I want to plot this solution 1 and the second order equation, on the same plot.
Can you help me ?
So you're wanting to plot s and Y on the same plot? If so, what will s be a function of, t?
fplot is probably what you want to use to get s plotted, however, it only works for functions with one variable. If you can treat y as a constant in your s function for the purposes of this plot I'd suggest doing so. Maybe:
s_ = @(t) s(t,y);
fplot(s_,[0 30])
I can plot all the solutions off the system s, funtion of time (t) with the comand plot(T,Y(:,1)) (for example). What I can't do is define the equation:
dx^2/dt^2 (t) = -xg0*w0^2*sin(wf*t)-w0^2*x-2*M*w0*beta*dx/dt
on the EDITOR and than plot it. After define that funtion, in the end I want to plot the two functions in the same grafic.
I send you my EDITOR:
M=0.577;
mv=1000;
A=1.157*10^-5;
xg0=0.05;
w0=5.17;
wf=5.3;
beta=2/100;
alfa=0.7;
L=0.734;
g=9.81;
delta=0.5;
%Define Equation1 -I CAN'T DEFINE THIS
dx^2/dt^2 (t) = -xg0*w0^2*sin(wf*t)-w0^2*x-2*M*w0*beta*dx/dt ???
%Define System - OK!
s=@(t,y) [y(3); y(4); (-(M+mv*A*L)*xg0*w0^2*sin(wf*t)-M*w0^2*y(1)-2*M*w0*beta*y(3)-mv*A*alfa*L*((mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)))/(M+mv*A*L);(mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)];
[T,Y]= ode45(s,[0 30],[0 0 0 0]);
%PLOT TWO SOLUTIONS - I CAN'T DO THIS
plot (T,Y(:,1), dx^2/dt^2 (t)) ?????
I just can define that first equation with:
r=@(t,y) [y(3); y(4); -xg0*w0^2*sin(wf*t)-w0^2*y(1)-2*M*w0*beta*y(3); 0];
[T,Y]= ode45(r,[0 30],[0 0 0 0]);
Even this way I can plot r and s in the same grafic.. Some help?
If y is a vector that's constant, I would leave it out of the inputs for the equations that you want to plot. If it's in the workspace, it will be picked up. So your dx^2/dt^2(t) and s equations could probably be written like this for plotting purposes:
dx2dy2_plot = @(t) -xg0*w0^2*sin(wf*t)-w0^2*x-2*M*w0*beta*y(3);
s_plot = @(t) (-(M+mv*A*L)*xg0*w0^2*sin(wf*t)-M*w0^2*y(1)-2*M*w0*beta*y(3)-mv*A*alfa*L*((mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)))/(M+mv*A*L);(mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)
then you can just execute the following plot command
figure
hold on
fplot(s_plot,[0 30])
fplot(dy2dx2_plot,[0 30])
It doesn't work =\. I think I explain something not right.
1. System of equation
s=@(t,y) [y(3); y(4); (-(M+mv*A*L)*xg0*w0^2*sin(wf*t)-M*w0^2*y(1)-2*M*w0*beta*y(3)-mv*A*alfa*L*((mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)))/(M+mv*A*L);(mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)];
[T,Y]= ode45(s,[0 30],[0 0 0 0]);
- This is ok, I can plot the 4 solutions of the system with plot(T,Y(:,1)), solution 1 for example.
2. I define that second order equation and solve with ode45
r=@(t,y) [y(3); y(4); -xg0*w0^2*sin(wf*t)-w0^2*y(1)-2*w0*beta*y(3); 0];
[T,Y]= ode45(r,[0 30],[0 0 0 0]);
3. If the 2. is right, now I want to plot two solution on the same grafic. Isolate I can plot with the command plot(T,Y(:,1)).. But I don't now the command to plot the two. Already try:
plot(T,Y1(:,1),T,Y2(:,1)) , and other things that doesn't work.
I really appreciate the help you given to me, really ;)
try
[Ts,Ys]= ode45(s,[0 30],[0 0 0 0]);
[Tr,Yr]= ode45(r,[0 30],[0 0 0 0]);
plot(Ts,Ys(:,1),Tr,Yr(:,1))
Worked, finally...thank's to you. Thank you very much.
Just a final question, make sense define and calculate the equation:
dx^2/dt^2 (t) = -xg0*w0^2*sin(wf*t) - w0^2*x - 2*M*w0*beta*dx/dt
with:
r=@(t,y) [y(3); y(4); -xg0*w0^2*sin(wf*t)-w0^2*y(1)-2*w0*beta*y(3); 0];
[T,Y]= ode45(r,[0 30],[0 0 0 0]);
- I say this because it is a system of 4 equations to solve just one. don't now if that make sense.
Tank's.
Hmm... I don't have too much experience with using ode45, but it looks like you could just solve:
r = @(t) -xg0*w0^2*sin(wf*t)-w0^2*y(1)-2*w0*beta*y(3);
[T,Y] = ode45(r,[0 30],0);
It looks like ode45 solves each equation independently, but I might be wrong about that.
Also, don't forget to click accept answer under my name up there.
I have some other problem with my dissertation, sorry stop answering. I am a finalist of civil engineering.
All you say it works, thank's to you I have the program correct. Thank you.
I have another question. Now I have two functions in the same graphic. I need to calculate each maximum to calculate the effectiveness of the control system. What is the code for each function?
I send to a reduce EDITOR:
M=0.577;
mv=1000;
A=1.157*10^-5;
xg0=0.05;
w0=5.17;
wf=5.17;
beta=2/100;
alfa=0.7;
L=0.734;
g=9.81;
delta=0.5;
%Equation 1
r=@(t,y) [y(3); y(4); -xg0*w0^2*sin(wf*t)-w0^2*y(1)-2*w0*beta*y(3); 0];
[Tr,Yr]= ode45(r,[0 50],[0 0 0 0]);
%System of equations
s=@(t,y) [y(3); y(4); (-(M+mv*A*L)*xg0*w0^2*sin(wf*t)-M*w0^2*y(1)-2*M*w0*beta*y(3)-mv*A*alfa*L*((mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)))/(M+mv*A*L);(mv*A*alfa*L*((M+mv*A*L)*xg0*w0^2*sin(wf*t)+M*w0^2*y(1)+2*M*w0*beta*y(3))+(M+mv*A*L)*(-mv*A*alfa*L*xg0*w0^2*sin(wf*t)-2*mv*A*g*y(2)-(1/2)*mv*A*delta*abs(y(4))*y(4)))/(mv*A*L*(M+mv*A*L)-(mv*A*L)^2)];
[Ts,Ys]= ode45(s,[0 50],[0 0 0 0]);
%Graphic
plot(Ts,Ys(:,1),Tr,Yr(:,1))
% Effectiveness of the system ????
Tank's.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Annotations 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by