Программа 26. Задача 43

>    restart;

>    with(PDEtools):declare(x(t),phi(t)):

Процедура универсального дифференцирования

>    read "C:\\diff.m";

Обозначения

>    f:=phi(t): vx:=diff(x(t),t): w:=diff(f,t):

Массы и момент инерции  

>    J3:=m3*r^2/2:

>    m1:=4*m: m2:=m: m3:=3*m:

Координаты точки m2

>    x2:=x(t)-r*f+r*cos(f):  

>    y2:=r*sin(f):

Скорости

>    vx2:=diff(x2,t):  

>    vy2:=diff(y2,t):

Кинетическая энергия

>    T:=m1*vx^2/2 + m2*(vx2^2+vy2^2)/2 + J3*w^2/2 + m3*(vx-r*w)^2/2:

Потенциальная энергия

>    P:=M*f+m2*g*y2:

Функция Лагранжа

>    L:=T-P:

Обобщенный импульс

>    px:=Дифф(L,vx):

x(t)*`will now be displayed as`*x

phi(t)*`will now be displayed as`*phi

Обобщенная циклическая скорость

>    X1:=solve(px=C,vx):

Функция Рауса

>    R:=collect(simplify(C*X1-subs(vx=X1,L)),w,factor);

R := -1/16*m*r^2*(8*sin(phi)+cos(phi)^2+35)*phi[t]^2+1/8*r*C*(4+sin(phi))*phi[t]+1/16*(C^2+16*m^2*g*r*sin(phi)+16*M*phi*m)/m

Уравнение Рауса

>    Уравн:=simplify(8*(diff(Дифф(R,w),t) - Дифф(R,f)));

`Уравн` := -8*m*r^2*cos(phi)*phi[t]^2+2*m*r^2*cos(phi)*phi[t]^2*sin(phi)-8*m*r^2*phi[t,t]*sin(phi)-m*r^2*phi[t,t]*cos(phi)^2-35*m*r^2*phi[t,t]+r*C*cos(phi)*phi[t]-8*m*g*r*cos(phi)-8*M

Момент (Нм), масса (кг), ускорение (м/с2), радиус (м)

>    M:=4: m:=2: g:=9.81: r:=1:

Начальный угол и начальная угл.скорость

>    f0:=-Pi/8: f10:=0:

>    НачУсл:=phi(0)=f0,D(phi)(0)=f10:

Решение задачи Коши

>   

>    Sol:=dsolve({Уравн,НачУсл},phi(t),type=numeric,output=operator):assign(Sol):

>    with(plots):with(plottools):

>    T2:=7:

>    Рис1:=odeplot(Sol,[t,f],0..T2,color=blue,thickness=2,legend="phi",numpoints=200):

>    Рис2:=odeplot(Sol,[t,w],0..T2,color=red,linestyle=3,legend="omega",numpoints=200):

>    X_:=int(diff(R,C),t)+C2;

Определяем константы из нулевых начальных условий для х

>    eq1:=simplify(subs(f=f0,t=0,X_))=0:

>    eq2:=subs(f=f0,w=f10,diff(R,C)):

>    Решение:=solve({eq1,eq2},{C,C2});

>    assign(Решение);

>    Рис3:=plot(X_,t=0..T2,color=black,legend="x"):

>    display(Рис1,Рис2,Рис3);

Warning, cannot evaluate the solution past the initial point, problem may be complex, initially singular or improperly set up

Warning, cannot evaluate the solution past the initial point, problem may be complex, initially singular or improperly set up

X_ := 1/2*phi-1/8*cos(phi)+1/16*C*t+C2

`Решение` := {C = 0, C2 = 1/16*Pi+1/8*cos(1/8*Pi)}

[Maple Plot]

>    a:=4: b:=0.2: # Размеры бруска

>    ЧислоКадров:=48:      

>    Шаг:=4.8/ЧислоКадров:

>    for k to ЧислоКадров do

>     t:=k*Шаг:

>     F:=phi(t):

>     x0:=evalf(X_):

>     Цилиндр:=circle([x0-r*F,r+b],r,color=red):

>     Брусок:=POLYGONS([[x0,b],[x0,0],[x0+a,0],[x0+a,b]]),STYLE(PATCH),COLOR(HUE,0.7):

>     Точка:=POINTS([x0-r*F+r*cos(F),r+r*sin(F)+b],SYMBOL(CIRCLE),COLOR(RGB,0,0,1)):

>     Кадр[k]:=PLOT(Цилиндр,Брусок,Точка):

>    od:

>    display(seq(Кадр[i],i=1..ЧислоКадров),insequence=true,scaling=constrained);

[Maple Plot]

>   

>   

>   

>