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

It looks to me as if you need to zoom in to see the cos() behaviour
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?
@Sam Chak, I set wo to 1 and I got a nearly stable cosine wave

댓글을 달려면 로그인하십시오.

 채택된 답변

Sam Chak
Sam Chak 2024년 9월 6일

1 개 추천

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

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'

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Programmatic Model Editing에 대해 자세히 알아보기

제품

릴리스

R2022b

태그

질문:

2024년 9월 6일

댓글:

2024년 9월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by