Ejercicio 2, 4º parcial 13/06/2000
José Mª Goicolea, junio 2000
> restart:
> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
>
T:=(1/2)*2*m*diff(x(t),t)^2
+(1/2)*m*(diff(x(t),t)^2+(R/sqrt(3))^2*diff(theta(t),t)^2+2*(R/sqrt(3))*diff(x(t),t)*diff(theta(t),t)*cos(theta(t)))
+(1/2)*((m/12)*R^2)*diff(theta(t),t)^2;
> V:=2*(1/2)*k*x(t)^2-m*g*(R/sqrt(3))*cos(theta(t));
> L:=T-V;
> L||1:=subs({diff(x(t),t)=x||1,diff(theta(t),t)=theta||1,x(t)=x,theta(t)=theta},L);
> t1:=diff(L||1,x||1);
> t2:=subs({x||1=diff(x(t),t),theta||1=diff(theta(t),t),x=x(t),theta=theta(t)},t1);
> t3:=diff(t2,t)-diff(L||1,x);
> ecu||1:=subs({diff(x(t),t,t)=x||2,diff(theta(t),t,t)=theta||2,diff(x(t),t)=x||1,diff(theta(t),t)=theta||1,x(t)=x,theta(t)=theta},t3);
> ecu||1:=simplify(ecu||1);
> t4:=diff(L||1,theta||1);
> t5:=subs({x||1=diff(x(t),t),theta||1=diff(theta(t),t),x=x(t),theta=theta(t)},t4);
> t6:=diff(t5,t)-diff(L||1,theta);
> ecu||2:=subs({diff(x(t),t,t)=x||2,diff(theta(t),t,t)=theta||2,diff(x(t),t)=x||1,diff(theta(t),t)=theta||1,x(t)=x,theta(t)=theta},t6);
> ecu||2:=simplify(ecu||2);
>
### WARNING: persistent store makes one-argument readlib obsolete
readlib(mtaylor):
> ecu1l:=mtaylor(ecu||1,[x||1,theta||1,x,theta],2);
> ecu2l:=mtaylor(ecu||2,[x||1,theta||1,x,theta],2);
>
M:=matrix(
[[coeff(ecu1l,x||2),coeff(ecu1l,theta||2)],
[coeff(ecu2l,x||2),coeff(ecu2l,theta||2)]]
);
>
K:=matrix(
[[coeff(ecu1l,x),coeff(ecu1l,theta)],
[coeff(ecu2l,x),coeff(ecu2l,theta)]]
);
>
K||1:=map2(subs,{k=m*g,R=1},K);
M||1:=map2(subs,{k=m*g,R=1},M);
> ecu_car:=det(K||1-lambda*M||1);
> s_lambda:=solve(ecu_car,lambda);
> evalf(s_lambda);
> s_omega:=map(sqrt,[s_lambda]);
> map(evalf,s_omega);
> evalm(M||1&*inverse(K||1));
> eigenvals(K||1 &* inverse(M||1));
> modos:=eigenvectors(K||1 &* inverse(M||1));
> evalf(modos);
> lambda[1]:=modos[1,1];omega[1]:=sqrt(lambda[1]);
> evalf(lambda[1]);evalf(omega[1]);
> lambda[2]:=modos[2,1];omega[2]:=sqrt(lambda[2]);
> evalf(lambda[2]);evalf(omega[2]);
> modo[1]:=simplify(modos[1,3][1]);
> map(evalf,modo[1]);
> modo[2]:=simplify(modos[2,3][1]);
> map(evalf,modo[2]);
>