I had a problem coding in MATLAB. I am trying to use the Newton Raphson iteration here. I want to find lambda_init after the first iteration and the third iteration and compare the two. Also, I want to subtract the DCM from the third iteration to the first to see the difference. I could always just copy and paste the for loop and run it for 1 iterations to compare the difference, but is there an easier way?   S = B_mat + B_mat'; kappa = trace(adjoint(S));   % Characteristic Equation (Eqn. 3.73) f = @(x) (x^2 - trace(B_mat)^2 + kappa) * (x^2 - trace(B_mat)^2 - ... dot(z, z)) -(x - trace(B_mat)) * (z'*S*z + det(S)) -... z'*(S'*S)*z;   % Derivative of the characteristic equation df =@(x) 2*x*(x^2 - trace(B_mat)^2 - dot(z , z)) + ... 2*x*(x^2 - trace(B_mat)^2 + kappa) + (z'*S*z + det(S)) ;   % Calculate the eigenvalue Newton-Raphson iteration lambda_init = 95; lambdas = zeros(4, 1); lambdas(1) = lambda_init; step = zeros(3 ,1);   quat = zeros (4, 3); DCM = zeros (3, 3, 3);       for i = 1:3     Xn = f(lambda_init) / df(lambda_init); lambda_init = lambda_init - Xn;   % get the corresponding attitude estimates rho = lambda_init + trace(B_mat); rho_mat = rho * eye (3) - S; q_unit = [adjoint(rho_mat) * z ; det(rho_mat)]; q_unit = q_unit / norm(q_unit);   % store the step size and attitude estimate step(i) = Xn; lambdas(i + 1) = lambda_init;   quat(:, i) = q_unit; DCM(:, :, i) = q_DCM(q_unit);   end

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter5: Control Structures Ii (repetition)
Section: Chapter Questions
Problem 34SA
icon
Related questions
Question

I had a problem coding in MATLAB. I am trying to use the Newton Raphson iteration here. I want to find lambda_init after the first iteration and the third iteration and compare the two. Also, I want to subtract the DCM from the third iteration to the first to see the difference. I could always just copy and paste the for loop and run it for 1 iterations to compare the difference, but is there an easier way?

 

S = B_mat + B_mat';
kappa = trace(adjoint(S));
 
% Characteristic Equation (Eqn. 3.73)
f = @(x) (x^2 - trace(B_mat)^2 + kappa) * (x^2 - trace(B_mat)^2 - ...
dot(z, z)) -(x - trace(B_mat)) * (z'*S*z + det(S)) -...
z'*(S'*S)*z;
 
% Derivative of the characteristic equation
df =@(x) 2*x*(x^2 - trace(B_mat)^2 - dot(z , z)) + ...
2*x*(x^2 - trace(B_mat)^2 + kappa) + (z'*S*z + det(S)) ;
 
% Calculate the eigenvalue Newton-Raphson iteration
lambda_init = 95;
lambdas = zeros(4, 1);
lambdas(1) = lambda_init;
step = zeros(3 ,1);
 
quat = zeros (4, 3);
DCM = zeros (3, 3, 3);
 
 
 
for i = 1:3
 
 
Xn = f(lambda_init) / df(lambda_init);
lambda_init = lambda_init - Xn;
 
% get the corresponding attitude estimates
rho = lambda_init + trace(B_mat);
rho_mat = rho * eye (3) - S;
q_unit = [adjoint(rho_mat) * z ; det(rho_mat)];
q_unit = q_unit / norm(q_unit);
 
% store the step size and attitude estimate
step(i) = Xn;
lambdas(i + 1) = lambda_init;
 
quat(:, i) = q_unit;
DCM(:, :, i) = q_DCM(q_unit);
 
end
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Time complexity
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning