Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_практикум_ОТЧЕ.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
6 Мб
Скачать
☆

Gn_po_precession

Ug_Dv_Ob

Тексти зазначених файлів наведено нижче.

Програма Vypryam_efect_GN

% Vypryam_efect_GN3

% Воропаєва Є. О. 4-10-2008

clear all, clc

global dvobs

global H f1 f2 kg

global P0 OMv Pm omp ep

global T0 Tm omt et

global F0 OMf Fm omf ef

dvobs='Ug_Dv_Ob3';

H=100; f1=10; f2=10; kg=0; OMv=0; OMf=.1*2*pi;

Pm=0*pi/180; omp=2*pi*0.1; ep=0*pi/2; P0=45*pi/180;

Tm=0*pi/180; omt=2*pi*0.1; et=0*pi/2; T0=30*pi/180;

Fm=0*pi/180; omf=2*pi*0.1; ef=0*pi/2; F0=0*pi/180;

T=2*pi/OMf;

% підготовка початкових умов

t=0; alo0=0; bto0=0; y=zeros(1,4);y(3)=alo0; y(4)=bto0;

[Usk,Ug]=Ug_Dv_Ob12(t);

tB=tan(y(4)); sB=sin(y(4)); cB=cos(y(4));

tP=tan(Ug(1)-y(3));sP=sin(Ug(1)-y(3));cP=cos(Ug(1)-y(3));

tT=tan(Ug(2));sT=sin(Ug(2));cT=cos(Ug(2));

tF=tan(Ug(3));sF=sin(Ug(3));cF=cos(Ug(3));

a0=atan2(-sP*cF-cP*sF*sT+tB*cT*sF,cP*cT+tB*sT);

b0=asin((sP*sF-cP*cF*sT)*cB-cT*cF*sB);

g0=atan2(sF*cP+sT*sP*cF,cT*cF*cB-sB*(sP*sF-cP*cF*sT));

y(1)=a0; y(2)=b0; y0=y;

tspan=[0,8*T];

% Чисельне інтегрування диференційних рівнянь гіроскопа

[t,y]=ode45('gn_po_precession3',tspan,y0);

% Виведення графіків

subplot(2,2,1)

plot(t,y(:,3)*180/pi,'o-',t,y(:,4)*180/pi,'.-'),grid,

set(gca,'FontName','MS Sans Serif','FontSize',12)

title('Опорні координати (градуси)'), xlabel('Час (сeкунди)')

legend('\alpha^o','\beta^o',0)

subplot(2,2,3)

plot(y(:,1)*180/pi,y(:,2)*180/pi,'+-'),grid, axis equal

set(gca,'FontName','MS Sans Serif','FontSize',12)

title('Траєкторія апексу у відносних координатах')

xlabel('\alpha(градуси)'), ylabel('\beta')

subplot(2,2,4)

plot(y(:,3)*180/pi,y(:,4)*180/pi,'ro-'),grid, axis equal

set(gca,'FontName','MS Sans Serif','FontSize',12)

title('Траєкторія апексу в опорних координатах')

xlabel('\alpha^o (градуси)'), ylabel('\beta\circ')

subplot(2,2,2), axis('off')

h=text(0.0,1.1,'Г K П на рухомій основі','FontName',

'MS Sans Serif','FontSize',14,'FontWeight','Bold');

h=text(-0.0,1.,'(по прецесійних рівняннях)','FontName','MS Sans Serif','FontSize',12);

h=text(0.2,0.9,sprintf('H = %g;',H),'FontName','MS Sans Serif','FontSize',12);

if OMv~=0

h=text(-0.2,0.8,'\psi = \psi_0 + \Omega_vt + \psi_msin(\omega_pt + \epsilon_p);',...

'FontName','MS Sans Serif','FontSize',12);

h=text(0.6,0.8,sprintf('(\\Omega_v = %g)',OMv),'FontName','MS Sans Serif','FontSize',12);

else

h=text(-0.0,0.8,'\psi = \psi_0 + \psi_msin(\omega_pt + \epsilon_p);',...

'FontName','MS Sans Serif','FontSize',12);

end

h=text(-0.0,0.7,'\theta = \theta_0 + \theta_msin(\omega_tt + \epsilon_t);',...

'FontName','MS Sans Serif','FontSize',12);

if OMf~=0

h=text(-0.2,0.6,'\phi = \phi_0 + \Omega_ft + \phi_m*sin(\omega_ft + \epsilon_f);',...

'FontName','MS Sans Serif','FontSize',12);

h=text(0.6,0.6,sprintf('(\\Omega_f = %g)',OMf),'FontName','MS Sans Serif','FontSize',12);

else

h=text(-0.0,0.6,'\phi = \phi_0 + \phi_m*sin(\omega_ft + \epsilon_f);',...

'FontName','MS Sans Serif','FontSize',12);

end

h=text(-0.3,0.5,sprintf('\\psi_0 = %g;',P0*180/pi),'FontName','MS Sans Serif','FontSize',12);

h=text(-0.3,0.4,sprintf('\\theta_0 = %g;',T0*180/pi),'FontName','MS Sans Serif','FontSize',12);

h=text(-0.3,0.3,sprintf('\\phi_0 = %g;',F0*180/pi),'FontName','MS Sans Serif','FontSize',12);

h=text(0.,0.5,sprintf('\\psi_m = %g;',Pm*180/pi),'FontName','MS Sans Serif','FontSize',12);

h=text(0.,0.4,sprintf('\\theta_m = %g;',Tm*180/pi),'FontName','MS Sans Serif','FontSize',12);

h=text(0.,0.3,sprintf('\\phi_m = %g;',Fm*180/pi),'FontName','MS Sans Serif','FontSize',12);

h=text(0.3,0.5,sprintf('\\omega_p = %g;',omp),'FontName','MS Sans Serif','FontSize',12);

h=text(0.3,0.4,sprintf('\\omega_t = %g;',omt),'FontName','MS Sans Serif','FontSize',12);

h=text(0.3,0.3,sprintf('\\omega_f = %g;',omf),'FontName','MS Sans Serif','FontSize',12);

h=text(0.8,0.5,sprintf('\\epsilon_p= %g;',ep*180/pi),'FontName',

'MS Sans Serif','FontSize',12);

h=text(0.8,0.4,sprintf('\\epsilon_t = %g;',et*180/pi),'FontName',

'MS Sans Serif','FontSize',12);

h=text(0.8,0.3,sprintf('\\epsilon_f=%g;',ef*180/pi),'FontName','MSSansSerif','FontSize',12);

if kg~=0

h=text(-0.2,0.2,sprintf('Mомент горизонтальної корекції N_k=- %g\\cdot\\beta',

kg),'FontName','MS Sans Serif','FontSize',12);

end

if f1~=0

h=text(-0.2,0.1,sprintf('Mомент тертя по внутрішній осі L= - %g\\cdot\\beta\''',...

f1),'FontName','MS Sans Serif','FontSize',12);

end

if f2~=0

h=text(-0.2,0.,sprintf('Mомент тертя по зовнішній осі N = - %g\\cdot\\alpha''',...

f2),'FontName','MS Sans Serif','FontSize',12);

end

h1=text(-0.2,-0.05,'-------------------------------------------------------------------------------');

h1=text(-0.2,-0.1,'Vypryam-efect-GN.m','FontName','MS Sans Serif');

h1=text(0.3,-0.1,' Воропаєва Є. О., каф. ПСОН','FontName','MS Sans Serif');

h1=text(-0.2,-0.2,'-------------------------------------------------------------------------------');

tm=fix(clock); Tv=tm(4:5);

h1=text(0.1,-0.17,[sprintf(' %g:',Tv),' ',date]);

Програма GN_PO_precession

function z=gn_po_precession3(t,y)

% GN_PO_precession

%Процедура обчислення правих частин

% прецесійних диференційних рівнянь

% гіроскопа напрямку на рухомій основі

% Вхідні величини:

% y(1) - alfa, y(2) - beta, y(3) - alfao, y(4) - betao

global dvobs

global H f1 f2

global kg

[Usk,Ug]=feval(dvobs, t);

tB=tan(y(4)); sB=sin(y(4)); cB=cos(y(4));

tP=tan(Ug(1)-y(3));sP=sin(Ug(1)-y(3));cP=cos(Ug(1)-y(3));

tT=tan(Ug(2));sT=sin(Ug(2));cT=cos(Ug(2));

tF=tan(Ug(3));sF=sin(Ug(3));cF=cos(Ug(3));

g0=atan2(sF*cP+sT*sP*cF,cT*cF*cB-sB*(sP*sF-cP*cF*sT));

sa=sin(y(1)); ca=cos(y(1)); sb=sin(y(2)); cb=cos(y(2)); tb=tan(y(2));

sg0=sin(g0); cg0=cos(g0);

Ucz2=Usk(3)*ca-Usk(2)*sa; Ucy2=Usk(2)*ca+Usk(3)*sa; Ucx2=Usk(1)-Ucz2*tb;

A=-Ucx2; B=-Ucy2-kg*y(2)/H/cb; kff=1+f1*f2/(H*cb)^2;

z(1)=(A+B*f1/H/cb)/kff;

z(2)=(B-A*f2/H/cb)/kff;

z(3)=f1*z(2)/H/cB*cg0 -(-kg*y(2)-f2*z(1))*sg0/H/cb/cB;

z(4)=(-kg*y(2)-f2*z(1))*cg0/H/cb +f1*z(2)/H*sg0;

z=z';

Програма Ug_Dv_Ob

function [Usk,Ug]=Ug_Dv_Ob12(t)

global P0 OMv Pm omp ep

global T0 Tm omt et

global F0 OMf Fm omf ef

Ug(1)=P0+OMv*t+Pm*sin(omp*t+ep); Ug(2)=T0+Tm*sin(omt*t+et);

Ug(3)=F0+OMf*t+Fm*sin(omf*t+ef);

PsiT=OMv+Pm*omp*cos(omp*t+ep); TetaT=Tm*omt*cos(omt*t+et);

FiT=OMf+Fm*omf*cos(omf*t+ef);

Usk(1)=PsiT*cos(Ug(2))*cos(Ug(3))+TetaT*sin(Ug(3));

Usk(2)=-PsiT*cos(Ug(2))*sin(Ug(3))+TetaT*cos(Ug(3));

Usk(3)=PsiT*sin(Ug(2))+FiT;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]