Determinant and inverse of a 3 X 3 matrix Issue
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Karan Kular
el 26 de Oct. de 2016
Comentada: Karan Kular
el 27 de Oct. de 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 comentario
Adam
el 26 de Oct. de 2016
Is one of the things that you have tried using the function provided to you that you MUST use?!
Respuesta aceptada
Matt J
el 26 de Oct. de 2016
Editada: Matt J
el 26 de Oct. de 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 comentarios
Adam
el 27 de Oct. de 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.
Más respuestas (1)
Massimo Zanetti
el 26 de Oct. de 2016
Editada: Massimo Zanetti
el 26 de Oct. de 2016
You are getting this error because in your function
invanddet3by3(A)
there is NO CALL to function
invanddet2by2sol(...)
2 comentarios
Massimo Zanetti
el 26 de Oct. de 2016
Editada: Massimo Zanetti
el 26 de Oct. de 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.
Ver también
Categorías
Más información sobre Linear Algebra en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!