TMatrixControl Component for Delphi®
Copyright ©1995, John Merrit
All rights reserved.

This component and the associated demoprogram (MCONUSE.DPR, source code included)
may be freely distributed for evaluation purposes.
This demoprogram may NOT!!! be altered or sold, in any way, without written
permission from the author.

Instead of providing a textfile explaining the control indepth
(helpfile, see below), I've opted to supply a
demoprogram that demonstrates the TMatrixControl (MCONUSE.DPR).
The source code for this program, to be compiled with Delphi, is also included.
(Math.dcu is required when you want to compile this project, see source code)
To prevent my fingers from burning with this (nasty minds would ignore the copyrights),
the control itself contains a registration message (this will randomly(!) show up when
the user applies a matrixfunction or -procedure and also make free use of the demoprogram
a bit of a pain).
I've provided the source code since it's my believe that this program demonstrates 
several techniques wich might be benefitial to other developers.
(it shows that Delphi is much more than just a click and play development tool)


Built in functions and properties of TMatrixControl:
(matrixfunctions and procedures see source code)

(the following is just a (theoretical) summary of features, it's advisible to
 look at the source code first or run the demo to get an idea of what's
 written below, this file can also be read from within the demoprogram (click About.../Info))

TMatrixControl acts upon a userdefined matrix (2 if required, cfr. matrixaddition,
-multiplication, etc...).
This matrix is defined as UMatrix (the optional second: U2Matrix).
(that is pronounced as U(-serdefined)2(-nd)Matrix)
Note: these matrices are not accessible from the Object Inspector.
      The control expects matrices named as U(2)Matrix, so stick to this!

Controlproperties:
* RowNr1: # of rows for the first matrix, 1=<RowNr1=<10 (registered version 30, see source code);
* ColNr1: # of columns for the first matrix, 1=<ColNr1=<10 (registered version 30, see source code);
* MatrixAccuracy: accuracy (significant digits) for matrixcalculations,
	must be an integer value 1=<accuracy=<5 (registered version 10, see source code);
* MatFunc: Available functions to act on matrix i.e. Determinant, Rank, etc... (see source code);
* MatProc: Available procedures to act on matrix i.e. Inversion, AdjointMatrix, etc... (see source code);
( Matfunc results in a scalar (number),MatProc returnes matrix or other none scalar cfr.
  Characteristic equation, systems of (linear) equations, etc... (see source code))
* RowNr2: same as RowNr1 for U2Matrix; 
* ColNr2: "     " ColNr1 "    "    " ;
(RowNr2 and ColNr2 are optional, if not used they're set to 1 (initialization of control)) 

Special (hidden or non-visible, i.e. not accessible from the Object Inspector) properties:
Built in ErrorFlag for easy interception of potentially dangerous situations
for example check for singularity before matrixinversion, etc....
(Warning: ErrorFlag is set by the control itself, if you play with it and everything
 screws up, you're responsible not me!!!)
MScalar (a real number): for multiplying a matrix with a scalar.
MPower (a positive integer!!): to raise a matrix to a power.
(see source code on how to manipulate MScalar and MPower)
MOrder: integer (1=<RowNr1=<10 (registered version 30, see source code)) to set the
dimensions for the special matrices (i.e. identity-, Hilbert- & Vandermondematrix);
xr,x1,x2,x3: representation for eigenvalues (see source code).
V: a vector used for several functions, is set by the control itself, except for
Vandermondematrix (see source code, again)
(properties not used hold they're value given at initialization of control)

Note: this control does not have (need) events.
      (see source code)

Author info:

  My adress:    John Meert (that's the way they call me overhere)
                Van Duyststraat 145
                2100 Deurne (Antwerpen)
                Belgium
  
  Internet EMail: john.merrit@NET4ALL.BE