These are chat archives for symengine/symengine

Jun 2014
Thilina Rathnayake
Jun 22 2014 09:14

Hi @certik , @asmeurer, @sushant-hiray, @isuruf

I have a few problems about the API we should provide with gaussian elimination and gauss jordan elimination.

Both the algorithms clearly identify two Matrices, A anb b in Ax = b and operations are done on the augmented Matrix [A|b]. Ultimate goal of the algorithms is to solve the system Ax = b. So my question is, What should be our API to do this? I see two approaches towards this.

  1. gaussian_elimination(const DenseMatrix &A, DenseMatrix &B):
    This is the one I have used so far. Pros: User is able to find row echelon form of any matrix. Cons: Solving the system Ax = b will have to be carried in steps. First creating [A|b], call gaussian_elimination([A|b], B) and then solving the system using B.

  2. gaussian_elimination(const DensMatrix &A, const DenseMatrix &b, DenseMatrix &x):
    This will return the solutions of the system Ax = b as elements of vector x. So no extra steps. But if an user wants to find the row echelon form of A then he won't be able to do that through this API.

I would like to know your ideas regarding this.

Ondřej Čertík
Jun 22 2014 23:38
This should be better discussed on a mailinglist. @asmeurer should we create a new mailinglist for csympy, or discuss this on the sympy list?
@thilinarmtb there needs to be API 2. for sure. Internally, this can be implemented in a number of ways. You can provide the API 1. if you think it's useful, and then just use it to solve 2.
Ondřej Čertík
Jun 22 2014 23:46
You can also implement rref() for reduced row echelon form