Editing User:Antonio Pino

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
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 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.
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 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.
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][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.
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][4] (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. From there we aim to go as far as we can about matrix functions, I will do so.


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.
'''TENTATIVE TIME LINE'''


I hope everyone pleasantly codes their summer away!
'''preceding weeks (community bonding'''


PS: a final thank goes to the project in general and my mentors in particular for the opportunity.
first meeting


start the blog


==='''TENTATIVE TIME LINE'''===
set up the working environment


1st week, May 25-31. Last/14th week, August 24-30.
create an hg repository with the toolboxes


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.
'''weeks 1-2'''
 
'''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. NAMF software shall tested now, so that a first funm works well within Octave.
Work on the toolboxes starts here.
 
'''weeks 2-4'''


Keep working in the toolboxes proceeding in chronological order:
'''weeks 3-4'''


::Test Matrix Toolbox (1995)
''Milestone 0'': the toolboxes are working and packaged.
::Matrix Computation Toolbox (2002)
::Matrix Function Toolbox (2008).
 
Start refreshing C++ knowledge.


'''weeks 4-7'''
'''weeks 4-7'''
''Milestone 0'': the toolboxes are ready.
''' ''Midterm'' on the 3rd of July (week 6)'''
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[7] and logm
expm and logm


'''weeks 10-11'''
'''weeks 10-11'''
Line 163: Line 134:


Pencils down. Run tests on the Matrix Functions and write/review their documentation.
Pencils down. Run tests on the Matrix Functions and write/review their documentation.
''' ''Firm Pencils Down'' on the 21st of August '''
''' ''Final Evaluation'' on the 28th of August '''




Line 216: Line 183:


[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>
This section is being reworked in a sandbox, [[User:Antonio_Pino:anotherwiki|the other wiki]]. Will add it here when done. Note that the previous is still going though changes.


==Z: submitted proposal==
==Z: submitted proposal==
Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)