Project

General

Profile

Feature #125

Matrix equation solving; linear system solving

Added by John Abbott about 12 years ago. Updated about 1 month ago.

Status:
In Progress
Priority:
Normal
Assignee:
Category:
New Function
Target version:
Start date:
05 Apr 2012
Due date:
% Done:

50%

Estimated time:
Spent time:

Description

Add code for solving linear systems. There are several subcases:
  • generic case over a field
  • full rank and not full rank
  • over finite fields
  • fast version over QQ

Generic full-rank is probably the most urgent as it would allow other code to proceed (though perhaps at reduced speed).


Related issues

Related to CoCoALib - Feature #206: Matrix equation solving: LinKerIn Progress2012-07-10

Related to CoCoALib - Feature #147: Buchberger-Moeller: impl via modular reductionIn Progress2012-05-01

Related to CoCoALib - Feature #872: LinSolve for matrices over FFpIn Progress2016-04-26

Related to CoCoALib - Feature #1444: HNF: Hermite Normal FormNew2020-03-10

History

#1 Updated by John Abbott about 12 years ago

  • Assignee set to John Abbott
  • % Done changed from 0 to 20

JAA has an impl of the generic case (over a field).
JAA has written a test for this first impl.
No example, and no doc yet. Nothing checked in yet.

#2 Updated by John Abbott about 12 years ago

Added some doc in MatrixArith.txt, and a new test test-matrix3.C.
No new example program yet.
New fns not yet available in CoCoA-5.

#3 Updated by John Abbott about 12 years ago

What names should we use for the fns which find a solution to a linear system? The name may be related to the name for the fns which find the kernels of linear systems.

In CoCoA-4 the fn is called LinSol, and the fn for finding the kernel is called LinKer.

In my first prototype in CoCoALib I used the name solve (and also SolveByGauss, SolveByHNF, SolveByModuleRepr). The name solve is very generic -- is this a good or a bad thing?

Another possible candidate is LinSolve. As usual if we decide to break backward compatibility, it should be for a good reason (e.g. choosing a much better name for the fns).

#4 Updated by John Abbott about 12 years ago

As mentioned in the previous post, currently I have used several fn names for solving linear systems: a generic fn, and the other dictating the method to use. It would also be possible to design solve to accept a parameter which indicates the method to use -- if I recall well, Maple has adopted an approach like this.

Which approach do we prefer?

#5 Updated by John Abbott almost 12 years ago

While speaking to Renzo about choosing the name, I realised that solving a linear system is slightly different from solving a (linear) polynomial system. In the first case I would expect a matrix as the result, in the second I'm not sure what I would expect... a finite set of vectors?

Of course, a finite set of vectors can be represented as a matrix, but to my mind it is not a matrix.

If we opt for different return types when solving a matrix equation and when solving a zero-dimensional polynomial system then I think I'd prefer different names.

Here is another candidate for the matrix equation solver MatSolve.

Opinions?

#6 Updated by John Abbott almost 12 years ago

  • % Done changed from 20 to 30

A quick count using Google suggests that LinSolve as about twice as popular as MatSolve. Anna points out that LinSolve is "almost backward compatible" with CoCoA-4. These two reasons combine to make LinSolve the victor and MatSolve the runner-up.

The related fn to compute the kernel of a matrix was called LinKer in CoCoA-4, and will probably retain this name in CoCoA-5. This way the two fns have a common prefix -- possibly a mnemonic aid to users.

JAA will implement the name change. The related solving fns will also have the prefix LinSolve...

#7 Updated by John Abbott almost 12 years ago

Implemented the chosen names.
Created/corrected CoCoALib doc for the new fns.
Added CoCoALib example program ex-matrix3.C
Made LinSolve fn available in CoCoA-5; added manual entry.

#8 Updated by John Abbott about 11 years ago

  • Category set to New Function
  • Priority changed from Normal to Urgent

Check compatibility of fn names with those in CoCoA-5 (see #206).

Need fast lin sys solving over QQ for Buchberger-Moeller (see #147).

This task will need "fast" matrices over SmallFp, and some form of lifting.

#9 Updated by Anna Maria Bigatti about 10 years ago

  • Target version set to CoCoALib-0.99533 Easter14

#10 Updated by John Abbott about 10 years ago

  • Target version changed from CoCoALib-0.99533 Easter14 to CoCoALib-0.99534 Seoul14

#11 Updated by John Abbott almost 10 years ago

  • Status changed from New to In Progress
  • % Done changed from 30 to 50

#12 Updated by John Abbott over 9 years ago

  • Target version changed from CoCoALib-0.99534 Seoul14 to CoCoALib-1.0

#13 Updated by John Abbott almost 9 years ago

  • Priority changed from Urgent to Normal

#14 Updated by John Abbott almost 8 years ago

  • Related to Feature #872: LinSolve for matrices over FFp added

#15 Updated by John Abbott about 4 years ago

#16 Updated by John Abbott about 4 years ago

  • Target version changed from CoCoALib-1.0 to CoCoALib-0.99850

#17 Updated by John Abbott about 1 month ago

  • Target version changed from CoCoALib-0.99850 to CoCoALib-0.99880

Also available in: Atom PDF