Poles placement - Simple damped pendulum

Helow, everyone!
I'm having some trouble to analize and model the sysyem consisted of a simple damped pendulum, described by this equation:
To procceed with alocation of the poles of the system, I'm previously determining the frequency and the damp ratio and, then, getting the values of the poles, through this equation:
,
In the next step, I used this poles, called raiz_1 and raiz_2 in my code, in the function "place" , in wich A e B are the state and the control matrices of the linearized corresponding system.
Below, you can see my code:
w0=0;
theta0 =pi/4;
ti=0;
tf=100;
omega_0=3.0;
epsilon=1.27;
raiz_1=(-1)*epsilon*omega_0+sqrt(omega_0^2*(epsilon^2-1))
raiz_2=(-1)*epsilon*omega_0-sqrt(omega_0^2*(epsilon^2-1))
A=[0 1;-10 -1];
autovalrs_A=eig(A);
B=[0;1];
p=[raiz_1;raiz_2];
[K,prec,message]= place(A,B,p)
k1=K(1,1);
k2=K(1,2);
u=@(x)((-1)*K*x);
%[vetort vetorv]=ode45(@(t,x)dinamica(t,x-0.2,u(x-0.2)),[ti tf],[w0;theta0]);
[vetortlin vetorvlin]=ode45(@(t,x)linearization(x-3,u(x-3)),[ti tf],[w0;theta0]);
figure('color' ,'w' );
grid on
%plot(vetort,vetorv(:,2),'r') ;
%hold on
plot(vetortlin, vetorvlin(:,2 ),'b') ;
legend('Linearizado' );
%title('\theta_{0} = 0 , \omega_{0} = \pi/4 , Q=[1 0;0 1] e R=[2 0;0 1]' ) ;
xlabel('tempo ( s )' ) ;
ylabel( 'posição( rad )' ) ;
function Xp = dinamica(t,x,u)
m=1;
g=10;
L=1;
b=1;
sp=x(1); %velocidade
vp=(1/(m*L^2))*(u-(b)*x(1)-m*g*sin(x(2)));
Xp=[vp;sp];
end
function Lin = linearization(x,torque)
A=[0 1;-10 -1];
B=[0;1];
vetor = A*[x(2);x(1)]+B*torque;
Lin = [vetor(2);vetor(1)];
end
My problem is that the results are not consistent. Because, when I put a damped ration lower than one, the system doesn't show an oscilatory behavior and, sometimes, it diverges even when the poles are complex numbers with negatives real parts.
Someone could please help me to identify the source of this problem?

답변 (0개)

카테고리

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

제품

질문:

2018년 12월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by