Skip to content
Jan Verschelde edited this page Feb 19, 2015 · 2 revisions

Three ideas for coding projects -- help wanted -- are sketched below.

1. packaging phcpy for Sage

Sage is a free and open source mathematical software system that uses Python as its language. Currently phc.py is an optional interface to the blackbox solver of PHCpack, a package for solving polynomial systems with Polynomial Homotopy Continuation.

The goal is to upgrade the phc.py in Sage to use the package phcpy.

One of the features of the new package phcpy is that the user can set the pace of the path tracker, asking for the next point on a solution trajectory, similar the next() method in generators. The current design of phcpy is mainly functional. The package consists of a collection of modules and does not yet export any classes. One outcome of this project is to design the interface so that it fits very well with the typing system in Sage. Sage is growing in use and popularity and contributing polynomial homotopy continuation could make a strong impact.

Languages: Python and Sage

Prerequisites: interest in interface development and in Sage, writing documentation and object-oriented design.

2. multitasked mixed volume

Ada is a mainstream programming language which defines shared-memory parallel programming in the form of multitasking, and as supported by the gnu-ada compiler is very effective in speeding up computations. The mixed volume of the Newton polytopes of a polynomial system gives an upper bound on the number of isolated solutions with nonzero coordinates of the polynomial system.

The goal is to make a multitasked version of a mixed volume calculator.

Ada supports high-level parallel programming in the form of tasking. Making an existing code run in a multitasked fashion will happen in this application by managing a queue of linear-programming jobs. Given a tuple of edges of Newton polytopes, the initial stage consists in making relation tables for all pairs of the polytopes. Setting up the relation tables is a pleasingly parallel computation: once the workload is divided among the threads, no communication between threads is needed, and all threads write to different locations in memory. For the general edge-edge combinations, a queue of jobs will have to be constructed from a mapping of a directed acyclic graph. Mixed volumes are an essential step in solving sparse polynomial systems. Polyhedral methods are used in tropical algebraic geometry, a relatively new and exciting area of mathematics.

Language: Ada

Prerequisites: interest in refactoring code, high level parallel programming, and a taste for advanced mathematics.

3. parameter homotopies in phcpy

Most polynomial systems arising in applications have parameters and with a parameter homotopy we move the solutions from a generic instance to a specific instance of the parameters. The package phcpy provides a Python scripting interface to Polynomial Homotopy Continuation for solving polynomial systems.

The goal is to improve the support for parameter homotopies in phcpy.

To support parameter homotopies, we will need objects to represent systems with parameters well. There is also the data management aspect to store the computed solutions for various instances of the parameters. Interesting values of parameters are those for which the solutions become singular. In the mathematical literature, some of these solutions are known as bifurcation points. One of the scripts we aim to develop is to conduct a systematic random walk in the parameter space in search for singular solutions, or to maximize the number of real solutions.

Language: Python and familiarity with databases

Prerequisites: interest in applied mathematics and modeling