How to use for loops to calculate the determinant of the first n powers of 2x2 matrix (A) without using the implicit Matlab command "det"
    10 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
I am allowed to use the for loop as well as if/elseif/else statements to create the function but I am not sure how exactly to do this. The input will be a matrix A and a scalar value n. I began using if statements to make sure that the matrix is 2x2 and that n is positive however i do not know how to code for det(A^n) without using the det function. Below is an example of what i have thus far:
 function ret = invertiblePowers(A,n)
   if isequal(size(A), [2 2])==0
      ret= disp('Matrix has wrong dimensions')
   elseif floor(n)~=ceil(n)
      ret= disp('n is not a positive integer')
   elseif  isequal(size(A), [2 2])==1 & floor(n)=ceil(n)
0 Kommentare
Akzeptierte Antwort
  WAT
      
 am 28 Sep. 2015
        You're going to want a function that takes A and n as inputs and either returns a string or nothing at all. That would look like
 function ret = invertiblePowers(A,n)
or
 function [] = invertiblePowers(A,n)
Assuming you want to return a string, then just do something like
 function ret = invertiblePowers(A,n)
 ret = ''; % initialize ret to empty string
 % Make sure A is the right size
 if (~isequal(size(A),[2,2]))
  ret = 'Matrix has wrong dimensions'; % note that 'disp' is not used
  return;  % stop working and exit out of this function
 end
 % Make sure n is positive integer
 if ((floor(n)~=ceil(n)) || (n <=0))
   ret = 'n is not a positive integer';
   return;
 end
 % if A is 2x2 and n is positive integer, find det(A^n)
 % It's unclear whether this function needs to find all 
 %  determinates for I=1 up to n, or just n. 
 % Assuming you want 1:n, loop through
 for i = 1:n
   An = A^i; % raise A to the ith power
   % find the determinate here, you need to do this part
   detAn = YOUR MATH HERE;
   % append results to return string
   ret = [ret ; sprintf('n = %i : det(A^n) = %f',i,detAn)];
 end % end for loop
 end
Weitere Antworten (2)
  Walter Roberson
      
      
 am 28 Sep. 2015
        This together with the fact that with SVD, the N'th power of the matrix can be found by taking the N'th power of the diagonal.
Or you could just use the formula for the determinant of a 2 x 2 matrix.
4 Kommentare
  WAT
      
 am 28 Sep. 2015
				I wouldn't assume you're allowed to use the rule that det(A^n) = det(A)^n. I'd assume you're supposed to calculate A^n then find the determinate of that new matrix.
  James Tursa
      
      
 am 28 Sep. 2015
        To calculate the determinant of a 2x2 matrix, see this link a little over halfway down the first page:
To get the determinant of a matrix power, det(A^n), also note from the above link that the determinant of a matrix product is the product of the individual determinants. I.e. det(A*A) = det(A)*det(A). So you can extend this to powers and figure out the formula for det(A^n).
Using the above hints should help you to write the code.
2 Kommentare
  WAT
      
 am 28 Sep. 2015
				I'm guessing that discovering that relationship between det(A^n) and det(A) is the point of this problem =P
Siehe auch
Kategorien
				Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



