필터 지우기
필터 지우기

Determinant and inverse of a 3 X 3 matrix Issue

조회 수: 5 (최근 30일)
Karan Kular
Karan Kular 2016년 10월 26일
댓글: Karan Kular 2016년 10월 27일
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.
Karan Kular
Karan Kular 2016년 10월 27일
Yeah sorry silly mistake. Thanks for the tip.

댓글을 달려면 로그인하십시오.

추가 답변 (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