simulink is giving unexpected simulation answer

I am trying to simulate the following block diagram
which simulates the equation : with the second integrator having the initial condition of 1.
where this equation can have the solution :
but upon simulation I got the following result:
I can notice the mathematical solution doesn't follow actual simulation where the simulation will always produce sinusoidal trying to reach stability state which is the oscillation between (inital_condition / 2) and (-inital_condition / 2). so why doesn't the mathematical solution match the simulation.

5 commentaires

It looks to me as if you need to zoom in to see the cos() behaviour
abdo
abdo le 6 Sep 2024
actually yes, but I mean why the change in magnitude of the cosine wave until it reach stability. I am still exprimenting with it and for now I discovered it had something to with but still don't know what.
I would be more surprised if the system were immediately stable. It takes time to reach equilibrium.
Can you you show us the scope when wo is set to 1?
abdo
abdo le 6 Sep 2024
@Sam Chak, I set wo to 1 and I got a nearly stable cosine wave

Connectez-vous pour commenter.

 Réponse acceptée

Sam Chak
Sam Chak le 6 Sep 2024

1 vote

Nope, not stable. The reason you got the high oscillations exponential decay response is because there are not enough samples for the scope to plot it out correctly.
Solution: Use a smaller time step, preferably (2π/wo)/100.

1 commentaire

You set the time step at the Model Configuration Parameters > Solver Pane. The simulation time step size is specified using the Max step size parameter, if the variable-step solver is selected.
Or, you can set the value from the Command Window. In the following example, the Simulink model 'vdp.slx' is opened. Use the 'get_param()' command check the current value, and then the 'set_param()' command to set the desired value.
openExample('simulink_general/VanDerPolOscillatorExample');
% Check the Maximum time step size for variable-step solver
get_param('vdp', 'MaxStep')
ans = 'auto'
% Set the Maximum time step size to 0.01, preferably using this formula (2π/wo)/100
set_param('vdp', 'MaxStep', '0.01')
% Check the Maximum time step size again
get_param('vdp', 'MaxStep')
ans = '0.01'

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Version

R2022b

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by