Determinant and inverse of a 3 X 3 matrix Issue

18 次查看(过去 30 天)
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 个评论
Adam
Adam 2016-10-26
Is one of the things that you have tried using the function provided to you that you MUST use?!

请先登录,再进行评论。

采纳的回答

Matt J
Matt J 2016-10-26
编辑:Matt J 2016-10-26
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 个评论
Adam
Adam 2016-10-27
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.

请先登录,再进行评论。

更多回答(1 个)

Massimo Zanetti
Massimo Zanetti 2016-10-26
编辑:Massimo Zanetti 2016-10-26
You are getting this error because in your function
invanddet3by3(A)
there is NO CALL to function
invanddet2by2sol(...)
  2 个评论
Karan Kular
Karan Kular 2016-10-26
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 2016-10-26
编辑:Massimo Zanetti 2016-10-26
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by