User:Antonio Pino:anotherwiki

From Octave
Revision as of 09:26, 25 May 2015 by Antonio Pino (talk | contribs) (→‎a starter: : specify which holiday)
Jump to navigation Jump to search

a starter

...just experimenting with subpages, more info on [wikipedia]

[...]

After this little holiday (Holy Week), I am back to work on gsoc. As Philip Nienhuis noted on the mailing list there is a fair amount of work done on Matrix Functions by Higham himself. Nonetheless, it was made to work with matlab so the first issue to tack is making Gnu Octave work with it, changing it where necessary. Starting from there, then new algorithms should be introduced to the system.


a note

First of all, I am still interested in going on with the project.

Concerning the algorithms, I have done a review of Golub and Van Loan's chapter on matrix functions (2013) and concluded that: for funm the Schur-Parlett algorithm [0] is the most appropriate, since it seems very reliable (i.e. numerically stable), for expm the new scaling and squaring approach (I hope it is the one Prof. Caliari referred to), while its analog will be used for logm. As for sqrtm, one of the latest results is [3], although a more general p-th root algorithm by Smith [4] or Higham/Lin [5] could do the job. Bear in mind that this response is barely a review of them. If you have a more recent source I would be grateful.

Note that today has been strange day for me: the last before a Little intermission of this term (Holy Week). I will need a little time for planning the new tentative time line, and do the new proposal; by the way, as google-melange has frozen here the initial one, I shall put it in the wiki.octave page or here as a comment.

Therefore, I will go for compatibility first and then for further improvements.

Thank Carnë Draug for the comments, I didn't know Octave already made use of the mctoolbox in the gallery function.

Antonio Pino


[0] P.I. Davies and N.J. Higham (2003). "A Schur-Parlett Algorithm for Computing Matrix Functions", SIAM. J. Matrix Anal. Applic. 25, 464-485. <Vhttp://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.7.6150&rep=rep1&type=pdf>

[1] 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>

[2] S.H. Cheng, N.J. Higham, C.S. Kenney, and A.J. Laub (2001). "Approximating the Logarithm of a Matrix to Specified Accuracy," SIA M J. Matrix Anal. Applic. 22, 1112- 1125. <http://www.maths.manchester.ac.uk/~higham/narep/narep353.ps.gz>

[3] A. Frommer and B. Hashemi (2009). "Verified Computation of Square Roots of a Matrix," Matrix Anal. Applic. 31, 1279-1302. <http://www.researchgate.net/publication/220656516_Verified_Computation_of_Square_Roots_of_a_Matrix>

[4] M. I. Smith (2003). "A Schur Algorithm For Computing Matrix Pth Roots", SIAM J. MATRIX ANAL. APPL. 24, 4, 971-989. <http://www.maths.manchester.ac.uk/~higham/narep/narep392.ps.gz>

[5] N. J. Higham and L. Lin (2011). "A Schur-Parlett Algorithm for Fractional Powers of a Matrix". Manchester Institute for Mathematical Sciences, School of Mathematics, University of Manchester. <http://eprints.ma.man.ac.uk/1677/01/covered/MIMS_ep2010_91.pdf> Leave a comment


updated task outline

Update: Part of the work is already done by Prof. N.J. Higham and is available under a GPLv3+ license: The Matrix Function Toolbox[3] which is closely related to the book by the same author[4]. A 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.


TENTATIVE TIMELINE

weeks 1-2

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.

weeks 3-4

Milestone 0: the toolboxes are working and packaged.

weeks 4-7

funm

Milestone 1: general purpose funm based on a Schur-Parlett algorithm)

weeks 8-9

expm and logm

weeks 10-11

sqrtm

p-th roots (p = integer) algorithm [?]

Milestone 2: logm, sqrtm, funm

week 12

implement trigonometric functions (I submitted a snippet of cosm to the mailing list, updated)

weeks 13-14

Pencils down. Run tests on the Matrix Functions and write/review their documentation.

[1] N.J. Higham. A New sqrtm for MATLAB. Numerical Analysis Report No. 336, Manchester Centre for Computational Mathematics, Manchester, England, January 1999.

[2] G.H. Golub and C.F. Van Loan. Matrix Computations, 4th Edition. The Johns Hopkins University Press, Baltimore, USA, 2013.

[3] N. J. Higham. The Matrix Function Toolbox. http://www.ma.man.ac.uk/~higham/mftoolbox

[4] N. J. Higham, Functions of Matrices: Theory and Computation, Society for Industrial and Applied Mathematics, Philadelphia, USA, 2008.

[5] N. J. Higham. The Matrix Computation Toolbox. http://www.ma.man.ac.uk/~higham/mctoolbox

[6] M. I. Smith (2003). A Schur Algorithm For Computing Matrix Pth Roots, SIAM J. MATRIX ANAL. APPL. 24, 4, 971-989.

submitted proposal

Title: Improving Matrix Functions in GNU Octave

Organization: GNU Project

Abstract: Matrix Functions are widely used to describe dynamical systems, this project aims at implementing those based on algorithms developed at the University of Manchester by Dr. Philip Davies and Matthew Smith, led by Prof. Nick Higham. Upon completion Gnu Octave should have no problem (extending compatibility with Matlab) when running the toolboxes by Higham, and should also have a reliable working funm based on the Schur-Parlett algorithms, that calls to specific matrix functions if these have an instance of their own.

Additional info: http://wiki.octave.org/User:Antonio_Pino

Introduction

I am Antonio Pino Robles, and if selected I will be working on the project for about 6-8 hours a day (8:00-16:00 UTC+0), with the exception of the first two weeks when I will be taking my final exams. Therefore, mine will be a soft start. As for IRC, I may be contacted anytime during the day at AntonioPino in the #octave channel at freenode, via a mobile connection. That work plan shall not be altered, as I don't plan to travel this summer.

On the other hand, I am a fluent English speaker, hold a Cambridge CAE certificate and have taken several university courses taught entirely in the English language. Besides, I am an avid reader, with a passion for the English literature. What I mean is that I do not expect any problem communicating with the mentors or organizers, either in a written fashion or orally.


Benefit-Deliverables

The project's aim is to improve the existing implementations of Matrix Functions in Gnu Octave based on the algorithms developed by a team lead by Prof. Higham at the University of Manchester. At this point in time, in Gnu Octave there are the following: expm makes use of Padé approximant, logm uses a Schur-Parlett algorithm, and sqrtm using a variant of the algorithm in A New sqrtm for MATLAB[0]. On the other hand, in Octave-Forge there are funm and trigonometric and hyperbolic matrix functions.

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.

Part of the work is already done by Prof. N.J. Higham and is available under a GPLv3+ license: The Matrix Function Toolbox[1] which is closely related to the book by the same author[4], The Matrix Computation Toolbox[2] is also provided by the same author, under the same license. That is the project offers a twofold benefit: renewed Matrix Functions as well as further Matlab compatibility.

Hence, the first part of the project is to focus on Octave-Matlab compatibility by making the toolboxes --originally intended to work with Matlab-- work smoothly as they are under Octave. Then recent algorithms will be used to replace existing implementations.

funm should be ready by the mid-term. The tentative time line can be read in the "Additional Info URL".

Qualification

Despite I consider myself an introvert person, I get most of my time when working with people, for example at study groups in university. I have been let down by harsh or ambiguous comments in the past, I still get an enormous benefit from properly filtered feedback, which I try to give when I think its necessary.

On one side, I hope to learn how programming is done outside of the sand boxed problems I have done until now (at Uni) while contributing to free software. Besides, I have been following the FSF for a long time, and been a free software user for longer, so this is in fact a way of giving back while receiving.

On the other, more and more dynamical systems can be approximated by a Matrix differential equation, and to have efficient Matrix Function implementations in Gnu Octave will help any free software user (including myself) approach these systems.

Finally, I have been writing m-scripts for two years now, to solve specific engineering problems, a strong python background. I order to fulfill it I will have to refresh my C++ knowledge by becoming familiar with the source tree, and get used to mercurial (hg), the version control system used to manage Gnu Octave.

[0] N.J. Higham. A New sqrtm for MATLAB. Numerical Analysis Report No. 336, Manchester Centre for Computational Mathematics, Manchester, England, January 1999.

[1] N. J. Higham. The Matrix Function Toolbox. http://www.ma.man.ac.uk/~higham/mftoolbox

[2] N. J. Higham. The Matrix Computation Toolbox. http://www.ma.man.ac.uk/~higham/mctoolbox