107
edits
Antonio Pino (talk | contribs) (time line: add 'community bonding period') |
Antonio Pino (talk | contribs) (→Y: Your task: : update the time line for the start of the coding period) |
||
Line 79: | Line 79: | ||
The project I intend to do is [http://wiki.octave.org/Summer_of_Code_Project_Ideas#Improve_logm.2C_sqrtm.2C_funm Improve logm, sqrtm, funm]; its aim is to improve the existing implementations of [https://en.wikipedia.org/wiki/Matrix_function Matrix Functions] in Octave based on the algorithms developed by [http://www.maths.manchester.ac.uk/~higham/NAMF/#People a team lead by Prof. Higham] (project entitled Numerical Analysis of Matrix Functions, NAMF) at the University of Manchester. At this point in time, in Octave there are the following: [http://hg.savannah.gnu.org/hgweb/octave/file/9a8be23d2c05/scripts/linear-algebra/expm.m expm] makes use of Padé approximant, [http://hg.savannah.gnu.org/hgweb/octave/file/9a8be23d2c05/scripts/linear-algebra/logm.m logm] uses a Schur-Parlett algorithm, and [http://hg.savannah.gnu.org/hgweb/octave/file/9a8be23d2c05/libinterp/corefcn/sqrtm.cc sqrtm] using a variant of the algorithm in A New sqrtm for MATLAB[1]. On the other hand, in Octave-Forge there are [http://sourceforge.net/p/octave/linear-algebra/ci/default/tree/inst/funm.m funm] and [http://sourceforge.net/p/octave/linear-algebra/ci/default/tree/inst/thfm.m trigonometric and hyperbolic matrix functions]. For a general survey-introduction to matrix functions (or matrix computation in general) refer to Golub & Van Loan[2]. | The project I intend to do is [http://wiki.octave.org/Summer_of_Code_Project_Ideas#Improve_logm.2C_sqrtm.2C_funm Improve logm, sqrtm, funm]; its aim is to improve the existing implementations of [https://en.wikipedia.org/wiki/Matrix_function Matrix Functions] in Octave based on the algorithms developed by [http://www.maths.manchester.ac.uk/~higham/NAMF/#People a team lead by Prof. Higham] (project entitled Numerical Analysis of Matrix Functions, NAMF) at the University of Manchester. At this point in time, in Octave there are the following: [http://hg.savannah.gnu.org/hgweb/octave/file/9a8be23d2c05/scripts/linear-algebra/expm.m expm] makes use of Padé approximant, [http://hg.savannah.gnu.org/hgweb/octave/file/9a8be23d2c05/scripts/linear-algebra/logm.m logm] uses a Schur-Parlett algorithm, and [http://hg.savannah.gnu.org/hgweb/octave/file/9a8be23d2c05/libinterp/corefcn/sqrtm.cc sqrtm] using a variant of the algorithm in A New sqrtm for MATLAB[1]. On the other hand, in Octave-Forge there are [http://sourceforge.net/p/octave/linear-algebra/ci/default/tree/inst/funm.m funm] and [http://sourceforge.net/p/octave/linear-algebra/ci/default/tree/inst/thfm.m trigonometric and hyperbolic matrix functions]. For a general survey-introduction to matrix functions (or matrix computation in general) refer to Golub & Van Loan[2]. | ||
I believe this is of interest to | I believe this is of interest to GNU Octave first, due to the goal of overall MATLAB compatibility and second, because more and more systems are being described by a matrix equation lately. | ||
Upon completion | Upon completion GNU Octave should have a working funm based on the Schur-Parlett algorithms by Higham et al., that calls to specific matrix functions if these have an instance of their own: expm, logm, sqrtm etc. | ||
'''Update:''' | '''Update:''' | ||
Part of the work is already done by Prof. N.J. Higham and is available under a GPLv3+ license: [http://www.ma.man.ac.uk/~higham/mftoolbox/ The Matrix Function Toolbox][3] which is closely related to the book by the same author[4]. A [http://www.ma.man.ac.uk/~higham/mctoolbox toolbox for matrix computations][ | Part of the work is already done by Prof. N.J. Higham and is available under a GPLv3+ license: [http://www.ma.man.ac.uk/~higham/mftoolbox/ The Matrix Function Toolbox][3] which is closely related to the book by the same author[4]. A [http://www.ma.man.ac.uk/~higham/mctoolbox toolbox for matrix computations][5] (The Matrix Computation Toolbox) is also provided by the same author, under the same license. Finally, a funm function is provided in the page of the NAMF project under GPLv3+. One might suggest that there is still room for improvement; because as Marco Caliari noted the toolboxes are from 2008. A review of the literature needs to be done in order to use more recent algorithms when writing the new functions. | ||
'''May the 25th Update:''' | |||
After the community bonding period and before starting today the coding period, I will briefly list the transformation that has undergone my initial proposal: from just implementing new algorithms and then add them to GNU Octave, to various modifications of GNU Octave itself so that Higham's toolboxes run smoothly and in the end add the new algorithms. Sticking to what I said before, I expect to be doing the modifications (e.g. new bugs, patches, toolboxes) most of the first half of the coding period. | |||
On the side, I reckon that fast-running matrix manipulation involves C++, a weakness I will cure with a quick refreshment and reading lots of GNU Octave code. | |||
I hope everyone pleasantly codes their summer away! | |||
PS: a final thank goes to the project in general and my mentors in particular for the opportunity. | |||
'''TENTATIVE TIME LINE''' | '''TENTATIVE TIME LINE''' | ||
'''preceding weeks (community bonding''' | 1st week, May 25-31. Last/14th week, August 24-30. | ||
Important dates: all of them, but specially the 'Midterm' on the 3rd of July (week 6), the 'Firm Pencils Down' on the 21st of August, and the 'Final Evaluation' on the 28th of August. | |||
'''preceding weeks (community bonding)''' | |||
First meeting. | |||
Start the blog. | |||
Set up the working environment. | |||
Create an hg repository with the toolboxes. | |||
Second meeting. | |||
Start writing tests for NAMF software and get acquainted with the bug reporting in Savannah. | |||
''' | '''week 1''' | ||
The start should be soft for I am having the finals in this period. At this point the list of algorithms to be used must be completely defined; that is, a final review of the literature is to be done. | The start should be soft for I am having the finals in this period. At this point the list of algorithms to be used must be completely defined; that is, a final review of the literature is to be done. | ||
Work on the toolboxes starts here. | Work on the toolboxes starts here. NAMF software shall tested now, so that a first funm works well within Octave. | ||
'''weeks 2-4''' | |||
Keep working in the toolboxes proceeding in chronological order: | |||
::Test Matrix Toolbox (1995) | |||
::Matrix Computation Toolbox (2002) | |||
::Matrix Function Toolbox (2008). | |||
Start refreshing C++ knowledge. | |||
'''weeks 4-7''' | '''weeks 4-7''' | ||
''Milestone 0'': the toolboxes are ready. | |||
End the C++ refreshing. | |||
funm | funm | ||
''Milestone 1'': general purpose funm based on a Schur-Parlett algorithm | ''Milestone 1'': general purpose funm based on a Schur-Parlett algorithm. | ||
'''weeks 8-9''' | '''weeks 8-9''' | ||
expm and logm | expm[7] and logm | ||
'''weeks 10-11''' | '''weeks 10-11''' | ||
Line 183: | Line 209: | ||
[6] M. I. Smith (2003). [http://www.maths.manchester.ac.uk/~higham/narep/narep392.ps.gz A Schur Algorithm For Computing Matrix Pth Roots], SIAM J. MATRIX ANAL. APPL. 24, 4, 971-989. | [6] M. I. Smith (2003). [http://www.maths.manchester.ac.uk/~higham/narep/narep392.ps.gz A Schur Algorithm For Computing Matrix Pth Roots], SIAM J. MATRIX ANAL. APPL. 24, 4, 971-989. | ||
[7] A.H. Al-Mohy and N.J. Higham (2009). "A New Scaling and Squaring Algorithm for the Matrix Exponential," SIAM J. Matrix Anal. Applic. 31, 970-989 <http://eprints.ma.man.ac.uk/1217/01/covered/MIMS_ep2009_9.pdf> | |||
==Z: submitted proposal== | ==Z: submitted proposal== |
edits