"Warning: Matrix is singular, close to singular or badly scaled. Results may be inaccurate. " RCOND = NaN. I'm using Newton's Method which uses a Jacobian Matrix for space mech. class. not sure how to fix w/out changing elements of matrix (set)

3 views (last 30 days)
%% Create Guess vector
th4g=45*deg2rad;
th3g=225*deg2rad;
th5g=350*deg2rad;
% [r3 ; r6 ;th3 ; th4 ; th5]
guess = [3;8;th3g;th4g;th5g];
% set up a tolerance value
t=10^-6;
error=2*t;
% Define initial and final input angle
th2_start=200*deg2rad;
th2_end=135*deg2rad;
% generate input vector
n=100;
th2=linspace(th2_start,th2_end,n)';
% matrix to hold results
guess_save = zeros(n,length(guess));
%% Jacobian
for i=1:n
while error > t
% Jacobian Matrix
J1=[-cos(guess(3)) 0 (guess(1)*sin(guess(3))) 0 0];
J2=[-sin(guess(3)) 0 (-guess(1)*cos(guess(3))) 0 0];
J3=[0 -cos(th6) 0 -r4*sin(guess(4)) -r5*sin(guess(5))];
J4=[0 sin(th6) 0 r4*cos(guess(4)) r5*cos(guess(5))];
J5=[0 0 1 -1 0];
J=[J1;J2;J3;J4;J5];
% Calculate the function values
f1=r2*cos(th2(i))-guess(1)*cos(guess(3))-r1*cos(th1);
f2=r2*sin(th2(i))-guess(1)*sin(guess(3))-r1*sin(th1);
f3=r4*cos(guess(4))+r5*cos(guess(5))-guess(2)*cos(th6);
f4=r4*sin(guess(4))+r5*sin(guess(5))-guess(2)*sin(th6);
f5=guess(4)- pi-guess(3);
% make a function vector
FUN=[f1;f2;f3;f4;f5];
% save our initial guess
guess_1=guess;
% calculate the new guess
guess= -J^-1*FUN+guess;
% calculate the error
error=max(abs(guess_1-guess));
end
% reset error
error =2*t;
% save guess value
guess_save(i,:)= guess;
end

Answers (1)

Sai Sumanth Korthiwada
Sai Sumanth Korthiwada on 20 Dec 2022
Edited: Sai Sumanth Korthiwada on 20 Dec 2022
Hi Eileen,
I understand that you are encountering a warning message while working on Newton’s method which uses Jacobian matrix.
Please make the following changes in your code:
%% Create Guess vector
% th4g=45*deg2rad;
% th3g=225*deg2rad;
% th5g=350*deg2rad;
%% Create Guess vector
% Use this:-
th4g=deg2rad(45);
th3g=deg2rad(225);
th5g=deg2rad(350);
Please use 'deg2rad(angle)' instead of 'angle*deg2rad' in the remaining code as well.
Refer to the documentation below for more information on 'deg2rad' function:
Hope this resolves your query.

Categories

Find more on Quadratic Programming and Cone Programming in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!