I need help with my MATLAB code. I wanted to numerically integrate the Modified Rodrigiues Parameters. But there is a singularity and the ode45 shows error. How do I use the event function to stop the integration when there is a singularity. w0 = [0; 0; 0.3]; MRP0 = [0; 0; -0.198912367379658]; t = 0:100; % Integrate the Euler equations using ode45 options = odeset('RelTol',1e-10,'AbsTol',1e-10); [t, y] = ode45(@KDE_MRP, t, [MRP0; w0], options); % Extract the Euler parameters and angular velocities MRP = y(:, 1:3);
I need help with my MATLAB code. I wanted to numerically integrate the Modified Rodrigiues Parameters. But there is a singularity and the ode45 shows error. How do I use the event function to stop the integration when there is a singularity.
w0 = [0; 0; 0.3];
MRP0 = [0;
0;
-0.198912367379658];
t = 0:100;
% Integrate the Euler equations using ode45
options = odeset('RelTol',1e-10,'AbsTol',1e-10);
[t, y] = ode45(@KDE_MRP, t, [MRP0; w0], options);
% Extract the Euler parameters and angular velocities
MRP = y(:, 1:3);
w = y(:, 4:6);
function dMRPwdt = KDE_MRP(t,MRPw)
I = [0.3; 0.2; 0.4];
L = [0;0;0];
MRP = MRPw(1:3);
w = MRPw(4:6);
dMRPdt = zeros(3,1);
dwdt = zeros(3,1);
C11 = 1 - dot(MRP,MRP) + 2*MRP(1)^2;
C12 = 2*(MRP(1)*MRP(2) - MRP(3));
C13 = 2*(MRP(1)*MRP(3) + MRP(2));
C21 = 2*(MRP(2)*MRP(1) + MRP(3));
C22 = 1 - dot(MRP,MRP) + 2*MRP(2)^2;
C23 = 2*(MRP(2)*MRP(3) - MRP(1));
C31 = 2*(MRP(3)*MRP(1) - MRP(2));
C32 = 2*(MRP(3)*MRP(2) + MRP(1));
C33 = 1 - dot(MRP,MRP) + 2*MRP(3)^2;
C = [C11 C12 C13;
C21 C22 C23;
C31 C32 C33];
dMRPdt = 0.25 * C * w;
dwdt(1) = (-(I(3) - I(2))*w(2)*w(3) + L(1)) / I(1);
dwdt(2) = (-(I(1) - I(3))*w(3)*w(1) + L(2)) / I(2);
dwdt(3) = (-(I(2) - I(1))*w(1)*w(2) + L(3)) / I(3);
% Combine the time derivatives into a single
dMRPwdt = [dMRPdt; dwdt];
end
Trending now
This is a popular solution!
Step by step
Solved in 4 steps