Severity: Warning
Message: fopen(/home/polpe/.phpsession/ci_session8ff0bf46dec4a41d5795b5098fa016bc8b9a4adc): failed to open stream: No space left on device
Filename: drivers/Session_files_driver.php
Line Number: 159
Backtrace:
File: /home/polpe/public_html/application/controllers/Main.php
Line: 17
Function: library
File: /home/polpe/public_html/index.php
Line: 315
Function: require_once
Teljes Matlab script kiegészítő függvényekkel.
File: vanderpol.m Directory: 4_gyujtemegy/11_CCS/_1_ccs/ccs_2020/vanderpol Author: Peter Polcz (ppolcz@gmail.com)
Created on 2020. October 08. (2020b)
fig = figure(1);
delete(fig.Children)
syms t x1 x2 real
x = [x1;x2];
The nondimensional input/output equation of the system is:
$\ddot{y} - \mu(1 - y^2) \dot y + y = 0$.
Setting $x_1 = y$ and $x_2 = \dot y$, we obtain the following state-space model:
$\begin{aligned} &\dot{x}_1 = x_2 \\ &\dot{x}_2 = -x_1 + \mu(1 - x_1)^2 x_2 \end{aligned}$
Original van der Pol system, which has globally attractive a limit cycle. Every trajectory will tend to this limit cycle,
vdp_oscillator_sym = [
x2
(1 - x1^2)*x2 - x1
];
vdp_oscillator_fh = matlabFunction(vdp_oscillator_sym,'vars', {t x});
If we compute the time inverted model, we obtain a locally asymptotically stable system, for which the domain of attraction is bounded by the original system's limit cycle.
Let $x(t) \leftarrow x(-t)$, then:
$\begin{aligned} &\dot{x}_1 = - x_2 \\ &\dot{x}_2 = x_1 - \mu(1 - x_1)^2 x_2 \end{aligned}$
vdp_inverted_sym = [
-x2
-(1 - x1^2)*x2 + x1
];
vdp_inverted_fh = matlabFunction(vdp_inverted_sym,'vars', {t x});
Simulate a trajectory of the original van der Pol oscillator, to obtain the limit cycle
simulate(vdp_oscillator_fh,[0 9],[2.01;0],'LineWidth',2,'Color',[0 0.5 0])
Simulate some convergent trajectories of the time-inverted (locally asymptotically stable) van der Pol system
simulate(vdp_inverted_fh,[0 9],[
0 1.5 1 -1.5 -1 1.2
1 1 2 0 -2 -0.5 ])
Simulate some diverging trajectories of the time-inverted system
simulate(vdp_inverted_fh,[0 2],[-2;-1],'b')
Visualization
xlabel('x1(t)');
ylabel('x2(t)');
TxT = text(0.9,2.8,'Limit cycle');
TxT.HorizontalAlignment = 'center';
TxT.FontSize = 12;
TxT.FontWeight = 'bold';
TxT.Color = [0 0.5 0];
function simulate(fh,Tspan,ics,varargin)
figure(1);
hold on
for x0 = ics
[~,x] = ode45(fh,Tspan,x0);
Pl = plot(x(:,1),x(:,2),varargin{:});
plot(x(1,1),x(1,2),'.','MarkerSize',20,'Color',Pl.Color)
end
grid on
box on
axis equal
end