Determinant and inverse of a 3 X 3 matrix Issue

7 vues (au cours des 30 derniers jours)
Karan Kular
Karan Kular le 26 Oct 2016
Commenté : Karan Kular le 27 Oct 2016
Hi I have a question:
I need to create a function that calculates the determinant and the inverse of a generic 3 X 3 matrix with the method of the cofactors and the adjoint matrix.
The function should be named invanddet3by3. The function takes a generic 3 X 3 matrix as input, and returns two outputs: the determinant and the inverse. It should do the following few things:
It calculates the determinant using the cofactors.
If the determinant is zero, the inverse is set to be an empty matrix ([])
If the determinant is non-zero, then it calculates the inverse.
However I MUST USE THE FUNCTION invanddet2by2sol provided to me which is :
function [ determinant, inverse ] = invanddet2by2sol( A )
% INVANDDET2BY2 Calculates the determinant and the inverse of a 2 X 2 matrix
determinant = A(1,1)*A(2,2)- A(1,2)* A(2,1); % calculates the determinant
if determinant ==0 % if the matrix is singular
inverse = []; % inverse does not exist
else
inverse = [A(2,2) -A(1,2); -A(2,1) A(1,1)]./determinant; % calculates the inverse
end
Here is my attempt :
function [determinant , inverse ] = invanddet3by3(A)
%INVANDDET3BY3 Calculates the determinant and the inverse of a 3 X 3 matrix by using
% cofactors and adjoint matrix
A11 = [(A(2,2) * A(3,3)) - (A(3,2) * A(2,3))]; % Cofactors 3x3 matrix A
A12 = - [(A(2,1) * A(3,3)) - (A(3,1) * A(2,3))];
A13 = [(A(2,1) * A(3,2)) - (A(3,1) * A(2,2))];
A21 = - [(A(1,2) * A(3,3)) - (A(3,2) * A(1,3))];
A22 = [(A(1,1) * A(3,3)) - (A(3,1) * A(1,3))];
A23 = - [(A(1,1) * A(3,2)) - (A(3,1) * A(1,2))];
A31 = [(A(1,2) * A(2,3)) - (A(2,2) * A(1,3))];
A32 = - [(A(1,1) * A(2,3)) - (A(2,1) * A(1,3))];
A33 = [(A(1,1) * A(2,2)) - (A(2,1) * A(1,2))];
J = [ A11 A12 A13; A21 A22 A23; A31 A32 A33]; % Adjugate Matrix
determinant = ((A(1,1) * A11) + (A(1,2) * A12) + (A(1,3) * A13)); % Determinant of A
inverse = (1/determinant) * (J'); % Inverse of A
if determinant==0
inverse=[];
end
end
My code passes all the tests for calculating the determinant and inverse correctly, but its saying: 'The submission must contain the following functions or keywords: invanddet2by2sol You MUST use the function invanddet2by2sol!'.
I have tried many things but have been unsuccessful.
Would appreciate the help,
Thanks very much.
  1 commentaire
Adam
Adam le 26 Oct 2016
Is one of the things that you have tried using the function provided to you that you MUST use?!

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 26 Oct 2016
Modifié(e) : Matt J le 26 Oct 2016
In the code that you have provided, your cofactor calculations in fact consist of many 2x2 determinant calculations
A11 = [(A(2,2) * A(3,3)) - (A(3,2) * A(2,3))]; % Cofactors 3x3 matrix A
A12 = - [(A(2,1) * A(3,3)) - (A(3,1) * A(2,3))];
A13 = [(A(2,1) * A(3,2)) - (A(3,1) * A(2,2))];
etc...
You are probably intended to use invandet2by2sol to do these 2x2 determinant calculations.
  6 commentaires
Adam
Adam le 27 Oct 2016
Surely it is obvious what the problem is there?! You have to get into the habit of rereading your code to find basic errors and you need o get used to reading the error message and interpreting it. Usually the errors are exactly as they say.
Karan Kular
Karan Kular le 27 Oct 2016
Yeah sorry silly mistake. Thanks for the tip.

Connectez-vous pour commenter.

Plus de réponses (1)

Massimo Zanetti
Massimo Zanetti le 26 Oct 2016
Modifié(e) : Massimo Zanetti le 26 Oct 2016
You are getting this error because in your function
invanddet3by3(A)
there is NO CALL to function
invanddet2by2sol(...)
  2 commentaires
Karan Kular
Karan Kular le 26 Oct 2016
Yes thank you, i have acknowledged this now but i am having a problem calling the invandet2by2sol function. Is it
function [ determinant, inverse] = invanddet3y3(invandet2by2sol(A));
Massimo Zanetti
Massimo Zanetti le 26 Oct 2016
Modifié(e) : Massimo Zanetti le 26 Oct 2016
In the method of cofactors for comptuting det of a 3x3 matrix, you need to compute det of 3 cofactors 2x2. Here it is a "tutorial"..
Invoke invandet2by2sol(..) for computing the 2x2 determinants.
If this answer heped you, please accept it.

Connectez-vous pour commenter.

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

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

Start Hunting!

Translated by