• Edit
• Info
• Attachments

# Improved support for solving systems of nonlinear equations

Abstract:

• Scilab's function fsolve computes a root of a system of nonlinear equations. Currently, fsolve is a wrapper around the subroutine HYBRD. HYBRD is well suited to solving systems with dense derivatives, but can not solve large systems with sparse derivatives. I propose to improve the current interface to HYBRD, construct a test set of nonlinear systems with dense and sparse derivatives, and implement an experimental solver for systems of nonlinear equations with sparse derivatives.

### Student time line

See here for the Google Summer of Code planning.

### Clues

What about using a non linear optimization method ? For example IPOpt (https://projects.coin-or.org/Ipopt) is a very powerful solver. If a non linear constrained optimization method can be used, I have already interfaced this method to Scilab. See here.

### Work time line

Step 1:

• Starting a minimal toolbox. Getting all the files related to fsolve and copy these files into a separate toolbox. This can certainly be done during community bonding. The interesting files are: In the directory scilab/modules/optimization/sci_gateway/fortran, you can find Ex-fsolve.f and sci_f_fsolve.f In the directory scilab/modules/optimization/src/fortran/minpack, you can find the hybr*.f files. In the directory scilab/modules/optimization/help/en_US, you can find the fsolve.xml file.

Step 2:

• Define a first strategy to solve efficiently a system of non linear equations:
• which methods in which cases (sparse, not sparse) ?
• when do we switch (small problem / large problem) ?
• how do we code (Scilab script, Fortran / C code interfaced to Scilab) ?
• do we code a new method (due to licence problems) ?

Step 3:

• Gather some test problems (gaz flow network problem, problems from other sources). For the gaz flow problem, it's a scilab script. For the other problems, it will be (maybe) fortran code. So, we certainly need to interface these codes to Scilab.

Step 4:

• Code (the code can certainly be started at step 2 ...). Maybe we can divide here the coding approach:
• write a sparse / full fsolve method (don't bother on the huge problem thing)
• add the hability to deal with big problems.

Step 5:

• Test (the test part should be started as soon as possible). Doc (the doc part should be started as soon as possible too).

public: Gsoc2009FSolve (last edited 2011-03-30 16:18:51 by localhost)