Whishes for Matrix:
There need to be a function to transform/attach a Vector into/onto a Matrix (ie. to built a coefficient-matrix).
Also there should be a enumerator that returns one row of a Matrix after another. The rows can get represented as Vector.
The only special Matrix that makes really sense might be the Identity-Matrix. There should be a static function to greate one.
Functions of a Matrix:
Examples of functions a Matrix should support
(neither complete nor fully correct translated; just for overview):
- IsInversible()
- Transpose()
- IsOrthogonal()
- Orthogonalize()
- IsUnitary()
- IsIdempotent() or IsProjectionMatrix()
- IsNilpotent()
- IsSymmetric()
- IsHermitian()
- IsPositiveDefinit()
- IsSkewSymmetric()
- Adjungate()*
- Konjunction()*
- Adjunction
- Komplementary
- Determinant()
- RotateMatrix( Angle, Angle, Angle, ... )
* = for complex Matrizes; Matrizes should be either real or complex, or best using a Type-Template (T).
Important Functions:
- Rank()
- Dimension()
- Core()
- Norm()
- Function for returning Cramer's Matrix
- Function to calculate Cramer's rule
- Function that returns the Determinant of a Cramer's Matrix (used ie. for the Cross-Product of n-Vectors)
- Test if Matrix is a Base of a given Vector; Functions specific to Base-Definitions
- Algorithms to transform Matrix to a specific form
- Eigenvalue()
- Eigenvector()
Form of a Matrix:
Special types of Matrices (Triangular, Tridiagonal, etc.) should be able to get tested using a Property. ( bool IsTriangular() or Type-get )
Matrices can have the following forms:
- diagonal form (only diagonal is not zero)
-
stage form, stair form, relay form (diagonal consists of 2x2 matrices; all other 0)
-
triangle form (unsorted; upper triangle; lower triangle)
-
trapezoid form, half-diagonal form (nxm Matrix; all below the nxn-Diagonal is 0)
-
reduced stair form, row-reduced form (diagonal is 1; all below is 0; all over the diagonal can have any value)
- Jordan-form; Jordan-normal-form
therefore we need to be able to test each of them.
other whishes:
- Drawing of Vector-Fields from 2x2 and 3x3 Matrices - maybe also with a flow-diagramming (color gives speed of a Particle in given Coordinates; the way of the particle is drawn as line).
- Support of int, double, complex, and other Datatypes
see also:
Matrix on english WikipediaWhishes for Vectors:
- Cross-Product of n-Vectors
- Conversion of 3-Vectors to DirectX compatible Vectors (if DirectX-Flag is set)