This repository has been archived by the owner on Jul 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAFC_4DOF_NM.m
140 lines (121 loc) · 5.08 KB
/
AFC_4DOF_NM.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
%% Ðàñ÷¸ò À×Õ ñèñòåìû íà ÀÌÏ ñ 4 ñòåïåíÿìè ñâîáîäû ìåòîäîì Íüþòîíà
%% Âõîäíûå äàííûå
clc
clear all
close all
% Ïàðàìåòðû äëÿ ìåòîäà Íüþòîíà
Eps=1e-5; %Ñêîëü óãîäíî ìàëîå çíà÷åíèå
d_x=1e-8; %Ïðèðàùåíèå
%Åäèíè÷àíÿ ìàòðèöà äëÿ ñèñòåìû ñ 4ìÿ ñòåïåíÿìè ñâîáîäû
E=eye(8,8);
Dx=d_x*E;
% var_IC_4DOF; % çàãðóçêà ïåðåìåííûõ
IC_4DOF_new;
% options = odeset('AbsTol',1e-10);
options=[];
% Ðåøåíèå ÄÓ â öèêëå
% for omega = 0.1 :0.1:0.5
% omega=[2000:100:2100];
% nu=5000:10:1e4; % ÷àñòîòà
nu = 0:100:4000;
% nu=(2*pi)/nu;
tend =0.00001;
Tend=tend/St;
% tend=tend/St;
for nuNum =1 : length(nu) %old
% nuNum=0; %NEW
% for i_diode=0.1:2:50
% nu=exp(i_diode*10); %NEW
% nuNum=nuNum+1 %NEW
% tend=2*pi/nu(nuNum); %îáåçðàçìåðèòü ïîòîì
% tend=tend/St;
% T_scale=60/nu;
% tend=tend/T_scale;
% tend=2*pi/nu(nuNum);
% tend=(60*tend)/nu;
Xinit=x0(:);
EPS=1;
J=zeros(8,8); %ßêîáèàí
% p=(2*pi)/nu(nuNum);
p_dim=nu*2*pi/Sw; %OLD
% p_dim(nuNum)=nu*2*pi/Sw;
% p_dim=nu/Sw;
% omega_dim=omega;
% omega=(2*pi*nu)/30;
% p_dim=nu*2*pi/Sw;
par=[Px_dim, Py_dim, Ax_dim, Ay_dim, Mx_dim, ...
My_dim, Bx_dim, By_dim, p_dim(nuNum), e_dim,...
omega_dim, gamma_dim, P1, omega_square, Pk, ...
i0_dim, iax_dim, iay_dim, ibx_dim, iby_dim,...
delta_dim, P2, a1_dim, a2_dim];
while EPS>Eps
[T, X] = ode23s(@ODE_MAGLEV_4DOF, [t0, Tend] , Xinit, options, par, C, Hs, G, Hd); %ode45
Xend=X(end,:)'; %!!!!!!!!!!
defect=(Xend-Xinit);
disp('Freq = ')
disp(nu(nuNum)) %OLD:
% disp (nuNum)
for j=1:8
[T1, x] = ode23s(@ODE_MAGLEV_4DOF, [t0, Tend] , Xinit+Dx(:,j), options, par, C, Hs, G, Hd); %ode45
xend=x(end,:)';%êîíå÷íîå ñîñòîÿíèå äëÿ îòêëîíåííîé ñèñòåìû
J(:,j)=(xend-Xend)/d_x;
% disp(j)
end
DX=-inv(J-E)*defect;
EPS=norm(DX);
Xinit=Xinit+DX;
Amplitude (nuNum) = ((max(X(:,1))-min(X(:,1)))/2)^2; % Àìïëèòóäû ïåðåìåùåíèé
Amplitude2 (nuNum) = ((max(X(:,2))-min(X(:,2)))/2)^2; % Àìïëèòóäû ïåðåìåùåíèé
Amplitude4 (nuNum)=(Amplitude2 (nuNum)+(Amplitude (nuNum)))^(1/2);
Amplitude5 (nuNum) = (max(X(:,3))-min(X(:,3)))/2; % Àìïëèòóäû óãëîâ
Amplitude6 (nuNum) = (max(X(:,4))-min(X(:,4)))/2; % Àìïëèòóäû óãëîâ
Amplitude7(nuNum)=(Amplitude5 (nuNum)+(Amplitude6 (nuNum)))^(1/2);
disp('Amplitude ïåðåìåù = ')
% Amplitude4= Amplitude4/Sx;
disp(Amplitude4 (nuNum))
disp('Amplitude óãëû = ')
disp(Amplitude7 (nuNum))
end
end
%À×Õ
%set freq = 0.1 Hz, èçìåíÿåì ÷àñòîòó èùåì max amlitude
% Ô×Õ
%set freq = 0.1 Hz, èçìåíÿåì ÷àñòîòó èùåì ôàçó
%% À×Õ - òîëüêî äëÿ îäíîãî ìåíÿþùåãîñÿ ïàðàìåòðà: (a èëè nu)
% Sw=100; %Ìàñøòàá óãëîâîé ñêîðîñòè
% omega=omega/Sw;
%
% figure('Name','À×Õ äëÿ óãëîâûõ ñìåùåíèé','Position', [100 100 900 600]);
% nu_interp = nu(1) : 0.001* (1 + nu(end) -nu(1)) : nu(end);
% Amplitude7_interp = interp1 (nu, Amplitude7,nu_interp, 'PCHIP');%Shape-preserving piecewise cubic interpolation. The interpolated value at a query point is based on a shape-preserving piecewise cubic interpolation of the values at neighboring grid points.
% plot ( nu, Amplitude7, 'b', nu_interp , Amplitude7_interp , 'LineWidth', 1.5)
% grid on
% xlab = xlabel('\nu');
% ylab = ylabel('\alpha');
% set( [gca, xlab, ylab ], 'FontSize', 12);
% Amplitude4= Amplitude4/Sx;
% nu=(omega*30)/(2*pi);
figure('Name','À×Õ äëÿ ëèíåéíûõ ñìåùåíèé','Position', [100 100 900 600]);
nu_interp = nu(1) : 0.001* (1 + nu(end) -nu(1)) : nu(end);
Amplitude_interp = interp1 (nu, Amplitude4/Sx,nu_interp , 'PCHIP');%Shape-preserving piecewise cubic interpolation. The interpolated value at a query point is based on a shape-preserving piecewise cubic interpolation of the values at neighboring grid points.
plot ( nu, Amplitude4, 'o', nu_interp , Amplitude_interp , 'LineWidth', 1.5)
grid on
xlab = xlabel('\nu');
ylab = ylabel('\itA');
set( [gca, xlab, ylab ], 'FontSize', 12);
figure('Name','À×Õ äëÿ óãëîâûõ ñìåùåíèé','Position', [100 100 900 600]);
nu_interp = nu(1) : 0.001* (1 + nu(end) -nu(1)) : nu(end);
Amplitude_interp = interp1 (nu, Amplitude7,nu_interp , 'PCHIP');%Shape-preserving piecewise cubic interpolation. The interpolated value at a query point is based on a shape-preserving piecewise cubic interpolation of the values at neighboring grid points.
plot ( nu, Amplitude7, 'o', nu_interp , Amplitude_interp , 'LineWidth', 1.5)
grid on
xlab = xlabel('\nu');
ylab = ylabel('\itA');
set( [gca, xlab, ylab ], 'FontSize', 12);
% figure
% omega_interp = omega(1) : 0.001* (1 + omega(end) -omega(1)) : omega(end);
% Amplitude_interp = interp1 (omega, Amplitude5,omega_interp , 'PCHIP');%Shape-preserving piecewise cubic interpolation. The interpolated value at a query point is based on a shape-preserving piecewise cubic interpolation of the values at neighboring grid points.
% plot ( omega, Amplitude5, 'o', omega_interp , Amplitude_interp , 'LineWidth', 1.5)
% grid on
% xlab = xlabel('\omega');
% ylab = ylabel('\itA');
% set( [gca, xlab, ylab ], 'FontSize', 12);