Comrades,
Does anyone know of a program for the 15C that calculates the determinant of a 3 × 3 matrix with complex elements?
Andrew
Complex Matrix Determinant on the 15C


« Next Oldest  Next Newest »

▼
05222010, 11:19 PM
Comrades, Does anyone know of a program for the 15C that calculates the determinant of a 3 × 3 matrix with complex elements? Andrew ▼
05232010, 01:36 AM
Quote: That's a good question. I'm sure you're aware that the HP15C can calculate the inverse of a 3 x 3 complexvalued matrix in place using builtin utilities that transform such a matrix into a realvalued 6 x 6 matrix, along with the LU decomposition. It can also calculate the determinant of realvalued matrices up to 8 x 8, using the LU decomposition. However, the determinant of a complexvalued matrix is something different. I've thought about it before. Although I have no such program, I believe that it might be feasible within the resource limitations of the HP15C:
You'll need 18 registers for the complex matrix, 5 registers for Complex mode, at least 4 registers to store two or more complexvalued subresults, plus space for the program. The "Simpler" method may require 2223 registers in total, as "RCL A (user mode)" is a twobyte instruction. Example (if I've got it right) for steps 2 and 3:
METHODICAL: SIMPLER: The HP42S has full builtin functionality for complex matrices...  KS
Edited: 24 May 2010, 2:46 a.m. after one or more responses were posted ▼
05232010, 02:51 AM
Karl, Ausgezeichnet! Thank you. I thought that it might be possible to do this using the 15C's inbuilt matrix functions (other than matrix addition, subtraction, and multiplication) in just a few steps, but it seems that this isn't feasible.
Andrew Edited: 23 May 2010, 2:55 a.m. ▼
05232010, 05:47 PM
Andrew  This enticed me to investigate in more detail a few things I've wondered about. As I had suspected, if a complexvalued matrix is singular (determinant of 0 + i0), the HP15C will also compute a value of virtually zero for the realvalued transformation matrix ('Py,x' followed by MATRIX 2). As an example, for the following singular matrix
[ 1+i3 2+i4 ] the HP15C calculates 2.053600001E18 as the determinant (more about this later), while the HP42S computes exactly 0 + i0. Thus, if you are simply wondering if a complexvalued matrix is invertible, the HP15C can tell you that. For the nonsingular matrix
[ 1+i5 2+i4 ] the HP42S calculates 16 + i8 (exactly) as the determinant, while the HP15C calculates 319.9999999 as the determinant of the transformation matrix. Note that 320 is the squared magnitude of the complexvalued determinant. I doubt that this is coincidental. It seems that the HP15C can give you the magnitude of a complexvalued determinant. I'm open to suggestions how that piece of information, along with the computed inverse matrix, could be employed using linear algebra to obtain the actual determinant.
Now, why does the HP15C seem unable to compute exact integer values for the determinants of integervalued matrices? ANSWER: The HP15C does not calculate determinants directly. Instead, it first computes a 'unitized' LU decomposition of the matrix that can be stored in the same space. The determinant of that is simply the product of the maindiagonal elements of the U matrix (those of the L matrix are all unity), with a sign change for an odd number of necessary row transpositions. The LU decomposition is part of the process for matrix inversion (allows inplace inversion), and speeds up solution of linear equations.
So, why is LU decomposition performed unnecessarily for determinants, when direct computation is faster and more accurate? Couldn't LU be computed when inversion or linear solutions are subsequently requested? ANSWER: This was probably a consequence of limited ROM space for the functionality to be implemented. Additional machine code  similar to what I devised above, but more extensive  would have been needed for direct computation of determinants. Instead, the existing LUdecomposition code was utilized. Having LU already computed also provides a 'head start' on subsequent inversion or linearsolution calculations. However, the unintuitive LU decomposition as part of the HP15C's determinant calculation is indeed a potential "gotcha" to the user. The user may be chagrined to see his calculation of a determinant  merely a scalarvalued output  overwrite a needed matrix with an LU matrix. Or, if insufficient free memory exists to store the LU decomposition to the RESULT matrix, the operation will fail with a cryptic message "Error 10". No additional space is needed if the identifier of the RESULT matrix is designated as that of the original matrix, which can be approximately recovered by twice inverting the LU matrix.  KS
Edited: 28 May 2010, 1:49 a.m. after one or more responses were posted ▼
05252010, 07:32 PM
Karl, A bit of research has uncovered a formula that might be useful: det(A) = [tr^3(A) – 3tr(A)tr(A^2) + 2tr(A^3)]/6 which is derived from Newton's identities (http://en.wikipedia.org/wiki/Determinant). The real part of the trace of a 6 × 6 partitioned matrix is just a(1,1) + a(1,2) + a(1,3) and the imaginary part is just a(4,1) + a(4,2) + a(4,3). I agree with your observation that the product of the diagonal elements of the LU decomposition is the square of the absolute value of the determinant. This suggests that it might be possible to calculate the determinant from the diagonal elements of the LU decomposition using Newton's identities. However, this is probably not viable on the 15C as there might be row permutations during the calculation of the LU decomposition. Andrew ▼
05262010, 01:24 AM
Quote: Andrew  A novel approach, but there's not enough space on the HP15C for it, using builtin functionality. A 3 x 3 complexvalued matrix A has 9 complexvalued elements to represent as 18 realvalued elements  each requiring a free register, of which no more than 64 are available. To calculate A^2, the first A is doubled to 36 elements by MATRIX 2, while the second A still has 18. The product A^2 must be stored separately, requiring 18 more. That's 72 registers, and we still need to store a program to extract the traces, perform the multiplications, and combine the results.  KS
Edited: 26 May 2010, 1:27 a.m.
05232010, 09:30 PM
I have never had a 15C so I don't know its capabilities relative to the 33s and 35s so I don't know if this will help or not. I did write Third Order Complex Liinear Equation Solvers for those two machines which use Cramer's Rule so there are determinant solutions buried in both. You can find them as Articles 722 and 887. 