Does This Paradigm Have a Future?

Total Page:16

File Type:pdf, Size:1020Kb

Does This Paradigm Have a Future? Numerical Recip es: Do es This Paradigm Havea Future? William H. Press Harvard-Smithsonian Center for Astrophysics and Saul A. Teukolsky DepartmentofPhysics, Cornell University June 6, 1997 Long-time readers of Computers in Physics may rememb er us as the ed- itors/authors of the Numerical Recip es column that ran from 1988 through 1992. At that time, with the publication of the Second Edition of our Nu- merical Recipes (NR) b o oks in C and Fortran[1, 2 ], we to ok a sabbatical leave from column writing, a leave that b ecame inadvertently p ermanent. Now, as a part of CIP's Tenth Anniversary celebration, wehave b een invited backto o er some observations ab out the past of scienti c computing, including the educational niche o ccupied by our b o oks, and to make some prognostications ab out where the eld is going. CIP's rst decade of publication closely overlaps Numerical Recipes' rst decade in print, NR's original Fortran edition having b een published in early 1986. This is not entirely a coincidence. In the preceding 15 years (the 1970s through mid 80s) the constituency of scienti c computing had undergone an extraordinary broadening, from a few sp ecialists in only certain sub elds, to virtually every researcher in broad areas of science. Available technology had moved from the single campus computer, jobs submitted via punch-card decks handed to a functionary b ehind a little window, to widely available \time sharing systems", minicomputers, and the nascent PC, whose revolu- tion has b een the story of the last decade. Nevertheless, certain scienti c 1 institutions are notoriously slow to react to structural revolutions in science, with journals and textb o oks among the slowest and sto dgiest of all. By the 80s, there were obvious needs to which b oth CIP (as a journal) and NR (as a textb o ok) were inevitable reactions. Inside the BlackBoxes Through the 1970s, at least, almost all physicists { and we include ourselves { enjoyed a blissful, almost touching, ignorance of numerical metho ds. To give a p ersonal example, we recall an early collab oration, when wewere b oth graduate students at Caltech. Wewere having dicultyinintegrating a second-order ODE numerically,andourmutual thesis advisor suggested that we consult Herb Keller, the distinguished professor of applied mathematics. \What metho d are you using?" Keller asked us. Welooked at each other blankly { you mean there's more than one numerical metho d? \Runge-Kutta," of course weanswered. \Runge-Kutta! Runge-Kutta!" he exclaimed, banging his head with his st. \That's all you physicists know!" He suggested that welookinto Bulirsch-Sto er, whichwe did, to our eventual b ene t. Eventual, but not immediate, b ecause there is a twist to this story: Bulirsch-Sto er turned out to b e a poor choice of metho d for our problem, while Runge-Kutta, when weeventually learned to integrate awayfrom{ not into { singularities, and to make a pre-integration changeofvariables in the equations, worked splendidly. So this story illustrates not only our lack of knowledge ab out numerical metho ds, but also that when physicists con- sult professional numerical analysts, either in p erson or through a b o ok or journal article, they not infrequently will b e disapp ointed. This and similar early exp eriences rmly convinced us of the necessity for an algorithm's user (the physicist) to understand \what is inside the blackbox." This ideal b ecame, later, one of the de ning features of our Numerical Recip es pro ject. It was then, and remains now, exceedingly controversial. The physicist-reader may b e astonished, b ecause physicists are all tinker- ers and black-b ox disassemblers at heart. However, there is an opp osite, and much b etter established, dogma from the communityofnumerical an- alysts, roughly: \Go o d numerical metho ds are sophisticated, highly tuned, and based on theorems, not tinkering. Users should interact with such algo- 2 rithms through de ned interfaces, and should b e prevented from mo difying their internals { for the users' own go o d." This \central dogma of the mathematical software community" informed the large scienti c libraries that dominated the 1970s and 1980s, the NAG library (develop ed in the U.K.) and its American cousin, IMSL. It continues to b e a dominant in uence to dayinsuch useful computational environments as MATLAB and Mathematica. We don't subscrib e to this religion, but it is worth p ointing out that it is the dominant religion (except p erhaps among physicists and astronomers) in mathematical software. This controversy will continue, and NR's viewp ointisby no means assured of survival! An early b o ok review of NR, by Iserles[3], gives an interesting and balanced p ersp ective on the issue. Origins of Numerical Recip es Not infrequently we are asked questions like, \How did NR come ab out?" and \How long did it take to write?" A brief history: Although Brian Flannery and Bill Vetterling have pursued highly success- ful careers in industry (at Exxon Research Labs, and Polaroid, resp ectively), we four NR authors were all in academia at the pro ject's inception. Three of us (Flannery, Press, and Teukolsky) had taught courses on scienti c com- puting in our resp ective departments, and we had all noticed { one could hardly not notice { the almost complete lackofany usable text for a physics- oriented course. Flannery, who taught a course at Harvard to astronomers in 1979, was the rst to suggest that a b o ok should b e written, and his course notes were the original sca olding for the pro ject. Press to ok over the course, and leadership of the pro ject, when Flannery left Harvard for Exxon at the b eginning of 1981. Just as there was a \ fth Beatle," there was also a fth NR author! Paul Horowitz, co-author of the well known b o ok on electronics[4], was an NR author from Septemb er, 1982, through the rst part of 1983; so he was in fact the third, not fth, Beatle. When he left the collab oration (parting on friendly terms, but having written nothing), he contributed his no-doubt fa- vorite phrase, \the art of " to the b o ok's subtitle. Press sp ent the month of April, 1983, at the Institute for Advanced Study in Princeton, writing as fast as he could. The sheer volume of the output (or rather, lack thereof ) con- 3 vinced Press and Flannery that more recruitmentwas in order. Saul Teukol- sky joined the collab oration in August; and Bill Vetterling, in Septemb er. Vetterling, an exp erimental physicist, replaced Horowitz's useful lab oratory and instrumentation p ersp ective in the pro ject. With the increased numb er of collab orators, the b o ok was more than half done by early 1984, at whichtimewe b egan to talk to publishers. Several had expressed early interest, including Addison-Wesley's Carl Harris (who was probably the rst to suggest the idea of a b o ok based on Flannery's course), and Ed Tenner of Princeton University Press. Tenner senta big piece of our manuscript out for review, and agreed to share the reviews with us. The reviewers were Forman Acton (himself the author of a wonderful b o ok on computing[5]) and Stephen Wolfram (long b efore the rst release of Mathematica). Acton's review was laudatory.Wolfram wrote, \The b o ok's style is chatty, and in parts entertaining to read. But in achieving its practical ends, much of it is quite sterile." One would never saysuch a thing ab out Wolfram's new b o dice-ripp er[6], of course! David Tranah ultimately convinced us to sign with Cambridge University Press, a choice that we don't regret. C.U.P. is big enough to do a go o d job on worldwide distribution, but small enough to b e resp onsive to our needs as authors. As a not-for-pro t organization, C.U.P. also has the luxury of taking a longer view, where a purely commercial publisher might optimize only for the short run. For manyyears now, Lauren Cowles has b een our capable and indulgent editor at C.U.P.'s North American branchinNew York. The b eginning was somewhat ro ckier, however. Wedelivered the com- pleted manuscript, in the original version of TeX (now called TeX78 [7]), on Novemb er 24, 1984, in the form of a VAX/VMS half-inchbackup tap e, as cre- ated on a MicroVAX I I. (We include these details for their quaint ring.) Ours was the rst TeX manuscript ever received by C.U.P.Wewanted C.U.P.to have our crude formatting macros rede ned by a professional b o ok designer, and wewanted to have the b o ok copy-edited by a professional copy editor. In the event, we got the copy editing, but not the b o ok design. Atthat time, a mere decade ago, there was simply no interface b etween \book de- signers" and \p eople who can use TeX". Indeed, it to ok C.U.P.morethan 6months to nd a rm that could even read our tap e and pro duce camera- ready output in the same format that we originally delivered. (C.U.P. sug- gested seriously that the b o ok could b e published faster { and cheap er { 4 if they reset it all in typ e, by hand, in the U.K.
Recommended publications
  • (LINUX) Computer in Three Parts
    Science on a (LINUX) computer in three parts Introductory short couse, Part II Thorsten Becker University of Southern California, Los Angeles September 2007 The first part dealt with ● UNIX: what and why ● File system, Window managers ● Shell environment ● Editing files ● Command line tools ● Scripts and GUIs ● Virtualization Contents part II ● Typesetting ● Programming – common languages – philosophy – compiling, debugging, make, version control – C and F77 interfacing – libraries and packages ● Number crunching ● Visualization tools Programming: Traditional languages in the natural sciences ● Fortran: higher level, good for math – F77: legacy, don't use (but know how to read) – F90/F95: nice vector features, finally implements C capabilities (structures, memory allocation) ● C: low level (e.g. pointers), better structured – very close to UNIX philosophy – structures offer nice way of modular programming, see Wikipedia on C ● I recommend F95, and use C happily myself Programming: Some Languages that haven't completely made it to scientific computing ● C++: object oriented programming model – reusable objects with methods and such – can be partly realized by modular programming in C ● Java: what's good for commercial projects (or smart, or elegant) doesn't have to be good for scientific computing ● Concern about portability as well as general access Programming: Compromises ● Python – Object oriented – Interpreted – Interfaces easily with F90/C – Numerous scientific packages Programming: Other interpreted, high- abstraction languages
    [Show full text]
  • 4.4 Improper Integrals 135
    4.4 Improper Integrals 135 converges (with parameters as shown above) on the very first extrapolation, after just 5 calls to trapzd, while qsimp requires 8 calls (8 times as many evaluations of the integrand) and qtrap requires 13 calls (making 256 times as many evaluations of the integrand). CITED REFERENCES AND FURTHER READING: http://www.nr.com or call 1-800-872-7423 (North America only), or send email to [email protected] (outside North Amer readable files (including this one) to any server computer, is strictly prohibited. To order Numerical Recipes books or CDROMs, v Permission is granted for internet users to make one paper copy their own personal use. Further reproduction, or any copyin Copyright (C) 1986-1992 by Cambridge University Press. Programs Copyright (C) 1986-1992 by Numerical Recipes Software. Sample page from NUMERICAL RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Stoer, J., and Bulirsch, R. 1980, Introduction to Numerical Analysis (New York: Springer-Verlag), §§3.4–3.5. Dahlquist, G., and Bjorck, A. 1974, Numerical Methods (Englewood Cliffs, NJ: Prentice-Hall), §§7.4.1–7.4.2. Ralston, A., and Rabinowitz, P. 1978, A First Course in Numerical Analysis, 2nd ed. (New York: McGraw-Hill), §4.10–2. 4.4 Improper Integrals For our present purposes, an integral will be “improper” if it has any of the following problems: • its integrand goes to a finite limiting value at finite upper and lower limits, but cannot be evaluated right on one of those limits (e.g., sin x/x at x =0) • its upper limit is ∞ , or its lower limit is −∞ • it has an integrable singularity at either limit (e.g., x−1/2 at x =0) • it has an integrable singularity at a known place between its upper and lower limits • it has an integrable singularity at an unknown place between its upper and lower limits ∞ −1 If an integral is infinite (e.g., 1 x dx), or does not exist in a limiting sense ∞ (e.g., −∞ cos xdx), we do not call it improper; we call it impossible.
    [Show full text]
  • 3.2 Rational Function Interpolation and Extrapolation
    104 Chapter 3. Interpolation and Extrapolation do 11 i=1,n Here we find the index ns of the closest table entry, dift=abs(x-xa(i)) if (dift.lt.dif) then ns=i dif=dift endif c(i)=ya(i) and initialize the tableau of c’s and d’s. d(i)=ya(i) http://www.nr.com or call 1-800-872-7423 (North America only), or send email to [email protected] (outside North Amer readable files (including this one) to any server computer, is strictly prohibited. To order Numerical Recipes books or CDROMs, v Permission is granted for internet users to make one paper copy their own personal use. Further reproduction, or any copyin Copyright (C) 1986-1992 by Cambridge University Press. Programs Copyright (C) 1986-1992 by Numerical Recipes Software. Sample page from NUMERICAL RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) enddo 11 y=ya(ns) This is the initial approximation to y. ns=ns-1 do 13 m=1,n-1 For each column of the tableau, do 12 i=1,n-m we loop over the current c’s and d’s and update them. ho=xa(i)-x hp=xa(i+m)-x w=c(i+1)-d(i) den=ho-hp if(den.eq.0.)pause ’failure in polint’ This error can occur only if two input xa’s are (to within roundoff)identical. den=w/den d(i)=hp*den Here the c’s and d’s are updated. c(i)=ho*den enddo 12 if (2*ns.lt.n-m)then After each column in the tableau is completed, we decide dy=c(ns+1) which correction, c or d, we want to add to our accu- else mulating value of y, i.e., which path to take through dy=d(ns) the tableau—forking up or down.
    [Show full text]
  • GNU Scientific Library – 設計と実装の指針
    GNU Scienti¯c Library { 設計と実装の指針 マーク・ガラッシ (Mark Galassi) Los Alamos National Laboratory ジェイムズ・ティラー (James Theiler) Astrophysics and Radiation Measurements Group, Los Alamos National Laboratory ブライアン・ガウ (Brian Gough) Network Theory Limited とみながだいすけ訳 (translation: Daisuke Tominaga) 産業技術総合研究所 生命情報工学研究センター Copyright °c 1996,1997,1998,1999,2000,2001,2004 The GSL Project. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modi¯ed versions of this manual under the con- ditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another lan- guage, under the above conditions for modi¯ed versions, except that this permission notice may be stated in a translation approved by the Foundation. このライセンスの文面をつけさえすれば、この文書をそのままの形でコピー、再配布して構 いません。また、この文書を改編したものについても、同じライセンスにしたがうのであれ ば、コピー、再配布して構いません。この文書を翻訳したものについても、米フリーソフト ウェア財団 (the Free Software Foundation) が認可した翻訳済みのライセンス文面を添付す れば、コピー、再配布して構いません。 そういうわけで、この日本語に翻訳した文書は、GFDL 1.3 にしたがった複製、再配布を認 めるものとします。ライセンスの詳細はこの文書に添付されています。 平成 21 年 6 月 4 日 とみながだいすけ i Table of Contents GSL について :::::::::::::::::::::::::::::::::::::::: 1 1 目標 :::::::::::::::::::::::::::::::::::::::::::::: 2 2 開発への参加:::::::::::::::::::::::::::::::::::::: 4 2.1 パッケージ :::::::::::::::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Numerical Methods in Engineering with MATLAB R
    P1: PHB cuus734 CUUS734/Kiusalaas 0 521 19133 3 August 29, 2009 12:17 This page intentionally left blank ii P1: PHB cuus734 CUUS734/Kiusalaas 0 521 19133 3 August 29, 2009 12:17 Numerical Methods in Engineering with MATLAB R Second Edition Numerical Methods in Engineering with MATLAB R is a text for engi- neering students and a reference for practicing engineers. The choice of numerical methods was based on their relevance to engineering prob- lems. Every method is discussed thoroughly and illustrated with prob- lems involving both hand computation and programming. MATLAB M-files accompany each method and are available on the book Web site. This code is made simple and easy to understand by avoiding com- plex bookkeeping schemes while maintaining the essential features of the method. MATLAB was chosen as the example language because of its ubiquitous use in engineering studies and practice. This new edi- tion includes the new MATLAB anonymous functions, which allow the programmer to embed functions into the program rather than storing them as separate files. Other changes include the addition of rational function interpolation in Chapter 3, the addition of Ridder’s method in place of Brent’s method in Chapter 4, and the addition of the downhill simplex method in place of the Fletcher–Reeves method of optimization in Chapter 10. Jaan Kiusalaas is a Professor Emeritus in the Department of Engineer- ing Science and Mechanics at the Pennsylvania State University. He has taught numerical methods, including finite element and boundary ele- ment methods, for more than 30 years. He is also the co-author of four other books – Engineering Mechanics: Statics, Engineering Mechanics: Dynamics, Mechanics of Materials,andNumerical Methods in Engineer- ing with Python, Second Edition.
    [Show full text]
  • NUMERICAL RECIPES in FORTRAN 77: the ART of SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992 by Cambridge University Press
    Numerical Recipes http://www.nr.com or call 1-800-872-7423 (North America only), or send email to [email protected] (outside North Amer readable files (including this one) to any server computer, is strictly prohibited. To order Numerical Recipes books or CDROMs, v Permission is granted for internet users to make one paper copy their own personal use. Further reproduction, or any copyin Copyright (C) 1986-1992 by Cambridge University Press. Programs Copyright (C) 1986-1992 by Numerical Recipes Software. Sample page from NUMERICAL RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) in Fortran 77 The Art of Scientific Computing Second Edition Volume 1 of Fortran Numerical Recipes William H. Press Harvard-Smithsonian Center for Astrophysics Saul A. Teukolsky Department of Physics, Cornell University William T. Vetterling Polaroid Corporation Brian P. Flannery g of machine- EXXON Research and Engineering Company isit website ica). Published by the Press Syndicate of the University of Cambridge The Pitt Building, Trumpington Street, Cambridge CB2 1RP 40 West 20th Street, New York, NY 10011-4211, USA 10 Stamford Road, Oakleigh, Melbourne 3166, Australia Copyright c Cambridge University Press 1986, 1992 except for §13.10, which is placed into the public domain, and except for all other computer programs and procedures, which are http://www.nr.com or call 1-800-872-7423 (North America only), or send email to [email protected] (outside North Amer readable files (including this one) to any server computer, is strictly prohibited. To order Numerical Recipes books or CDROMs, v Permission is granted for internet users to make one paper copy their own personal use.
    [Show full text]
  • Chapter 1. Preliminaries
    Chapter 1. Preliminaries 1.0 Introduction This book, like its sibling versions in other computer languages, is supposed to teach you methods of numerical computing that are practical, efficient, and (insofar as possible) elegant. We presume throughout this book that you, the reader, have particular tasks that you want to get done. We view our job as educating you on how to proceed. Occasionally we may try to reroute you briefly onto a particularly beautiful side road; but by and large, we will guide you along main highways that lead to practical destinations. Throughout this book, you will find us fearlessly editorializing, telling you what you should and shouldn’t do. This prescriptive tone results from a conscious decision on our part, and we hope that you will not find it irritating. We do not claim that our advice is infallible! Rather, we are reacting against a tendency, in the textbook literature of computation, to discuss every possible method that has ever been invented, without ever offering a practical judgment on relative merit. We do, therefore, offer you our practical judgments whenever we can. As you gain experience, you will form your own opinion of how reliable our advice is. We presume that you are able to read computer programs in C++, that being the language of this version of Numerical Recipes. The books Numerical Recipes in Fortran 77, Numerical Recipes in Fortran 90, and Numerical Recipes in C are separately available, if you prefer to program in one of those languages. Earlier editions of Numerical Recipes in Pascal and Numerical Recipes Routines and Ex- amples in BASIC are also available; while not containing the additional material of the Second Edition versions, these versions are perfectly serviceable if Pascal or BASIC is your language of choice.
    [Show full text]
  • 9.4 Newton-Raphson Method Using Derivative 355
    9.4 Newton-Raphson Method Using Derivative 355 endif if(p.gt.0.) q=-q Check whether in bounds. p=abs(p) if(2.*p .lt. min(3.*xm*q-abs(tol1*q),abs(e*q))) then e=d Accept interpolation. d=p/q else d=xm Interpolation failed, use bisection. visit website http://www.nr.com or call 1-800-872-7423 (North America only),or send email to [email protected] (outside North America). readable files (including this one) to any servercomputer, is strictly prohibited. To order Numerical Recipes books,diskettes, or CDROMs Permission is granted for internet users to make one paper copy their own personal use. Further reproduction, or any copying of machine- Copyright (C) 1986-1992 by Cambridge University Press.Programs Numerical Recipes Software. Sample page from NUMERICAL RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) e=d endif else Bounds decreasing too slowly, use bisection. d=xm e=d endif a=b Move last best guess to a. fa=fb if(abs(d) .gt. tol1) then Evaluate new trial root. b=b+d else b=b+sign(tol1,xm) endif fb=func(b) enddo 11 pause ’zbrent exceeding maximum iterations’ zbrent=b return END CITED REFERENCES AND FURTHER READING: Brent, R.P. 1973, Algorithms for Minimization without Derivatives (Englewood Cliffs, NJ: Prentice- Hall), Chapters 3, 4. [1] Forsythe, G.E., Malcolm, M.A., and Moler, C.B. 1977, Computer Methods for Mathematical Computations (Englewood Cliffs, NJ: Prentice-Hall), 7.2. § 9.4 Newton-Raphson Method Using Derivative Perhaps the most celebrated of all one-dimensional root-®ndingroutines is New- ton'smethod, also called the Newton-Raphson method.
    [Show full text]
  • Numerical Recipes in C++ the Art of Scientific Computing Second Edition
    Numerical Recipes in C++ The Art of Scientific Computing Second Edition William H. Press Los Alamos National Laboratory Saul A. Teukolsky Department of Physics, Cornell University William T. Vetterling Polaroid Corporation Brian P. Flannery EXXON Research and Engineering Company PUBLISHED BY THE PRESS SYNDICATE OF THE UNIVERSITY OF CAMBRIDGE The Pitt Building, Trumpington Street, Cambridge, United Kingdom CAMBRIDGE UNIVERSITY PRESS The Edinburgh Building, Cambridge CB2 2RU, UK 40 West 20th Street, New York, NY 10011-4211, USA 477 Williamstown Road, Port Melbourne, VIC, 3207, Australia Ruiz de Alarcon´ 13, 28014 Madrid, Spain Dock House, The Waterfront, Cape Town 8001, South Africa http://www.cambridge.org c Cambridge University Press 1988, 1992, 2002 except for §13.10 and Appendix B, which are placed into the public domain, and except for all other computer programs and procedures, which are c Numerical Recipes Software 1987, 1988, 1992, 1997, 2002 All Rights Reserved. This book is copyright. Subject to statutory exception and to the provisions of relevant collective licensing agreements, no reproduction of any part may take place without the written permission of Cambridge University Press. Some sections of this book were originally published, in different form, in Computers in Physics magazine, c American Institute of Physics, 1988–1992. First Edition originally published 1988; Second Edition originally published 1992; C++ edition originally published 2002. This printing is corrected to software version 2.10 Printed in the United States of America Typeface Times 10/12 pt. System TEX[AU] Affiliations shown on title page are for purposes of identification only. No implication that the works contained herein were created in the course of employment is intended, nor is any knowledge of or endorsement of these works by the listed institutions to be inferred.
    [Show full text]
  • MATLAB/Octave
    14 Svein Linge · Hans Petter Langtangen Programming for Computations – MATLAB/Octave Editorial Board T. J.Barth M.Griebel D.E.Keyes R.M.Nieminen D.Roose T.Schlick Texts in Computational 14 Science and Engineering Editors Timothy J. Barth Michael Griebel David E. Keyes Risto M. Nieminen Dirk Roose Tamar Schlick More information about this series at http://www.springer.com/series/5151 Svein Linge Hans Petter Langtangen Programming for Computations –MATLAB/Octave A Gentle Introduction to Numerical Simulations with MATLAB/Octave Svein Linge Hans Petter Langtangen Department of Process, Energy and Simula Research Laboratory Environmental Technology Lysaker, Norway University College of Southeast Norway Porsgrunn, Norway On leave from: Department of Informatics University of Oslo Oslo, Norway ISSN 1611-0994 Texts in Computational Science and Engineering ISBN 978-3-319-32451-7 ISBN 978-3-319-32452-4 (eBook) DOI 10.1007/978-3-319-32452-4 Springer Heidelberg Dordrecht London New York Library of Congress Control Number: 2016947215 Mathematic Subject Classification (2010): 34, 35, 65, 68 © The Editor(s) (if applicable) and the Author(s) 2016 This book is published open access. Open Access This book is distributed under the terms of the Creative Commons Attribution-Non- Commercial 4.0 International License (http://creativecommons.org/licenses/by-nc/4.0/), which permits any noncommercial use, duplication, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, a link is provided to the Creative Commons license and any changes made are indicated. The images or other third party material in this book are included in the work’s Creative Commons license, unless indicated otherwise in the credit line; if such material is not included in the work’s Creative Commons license and the respective action is not permitted by statutory regulation, users will need to obtain permission from the license holder to duplicate, adapt or reproduce the material.
    [Show full text]
  • GNU Scientific Library (GSL)
    GNU Scientific Library (GSL) Http://www.gnu.org/software/gsl/ GSL Team M.Galassi, J. Theiler, G. Jungman (LANL) Brian Gough (GNU) What is GSL ? Numerical library for the GNU system Development started in 1996 Written in ANSI C Free software under the GNU GPL Relase 1.0 was in 2001 About 1000 functions (rngs, special fns, ...) Currently at release 1.3 What's GNU? Project to create free Unix operating system Started in 1984 In use today: GNU/Linux Demonstration of the viability of free software model What is Free Software? Four freedoms ¡ 0) to run the program ¡ 1) to study the program ¡ 2) to modify the program ¡ 3) to share the program Why Free Software? Copyright system invented several centuries ago Designed for books Software is different ¡ Difference between source and object files ¡ Development through incremental improvements Different system appropriate Software Model Software should be considered as a field of applied mathematics/computer science ¡ Everyone works together to solve problems ¡ Everyone benefits from the results GSL Motivation Needed a numerical library that could be used in free software (GPL'd) applications Existing Libraries ¡ Proprietary: NAG, IMSL ¡ Numerical Recipes (not free) ¡ .... Proprietary licenses incompatible with large-scale scientific collaboration Functionality (Ported Packages) Ports of well known public domain Fortran packages ¡ FFTPACK ¡ MINPACK ¡ QUADPACK ¡ MISCFUN ¡ VEGAS / MISER ¡ BLAS (CBLAS) Functionality Complex Numbers Roots of Polynomials Special Functions Vectors and Matrices Permutations
    [Show full text]
  • Financial Numerical Recipes in C++
    Financial Numerical Recipes in C++. Bernt Arne Ødegaard June 2014 5.1 The interchangeability of discount factors, spot interest rates and forward interest rates . 52 5.2 The term structure as an object . 55 5.2.1 Base class . 55 5.2.2 Flat term structure. 57 5.3 Using the currently observed term structure. 58 5.3.1 Linear Interpolation. 59 5.3.2 Interpolated term structure class. 61 Contents 5.4 Bond calculations with a general term structure and continous compounding . 64 6 The Mean Variance Frontier 67 6.1 Setup . 67 6.2 The minimum variance frontier . 69 1 On C++ and programming. 5 6.3 Calculation of frontier portfolios . 69 1.1 Compiling and linking . 5 6.4 The global minimum variance portfolio . 72 1.2 The structure of a C++ program . 6 6.5 Efficient portfolios . 72 1.2.1 Types . 6 6.6 The zero beta portfolio . 73 1.2.2 Operations . 6 6.7 Allowing for a riskless asset. 73 1.2.3 Functions and libraries . 7 6.8 Efficient sets with risk free assets. 74 1.2.4 Templates and libraries . 7 6.9 Short-sale constraints . 75 1.2.5 Flow control . 8 6.10 The Sharpe Ratio . 75 1.2.6 Input Output . 8 6.11 Equilibrium: CAPM . 76 1.2.7 Splitting up a program . 8 6.11.1 Treynor . 76 1.2.8 Namespaces . 9 6.11.2 Jensen . 76 1.3 Extending the language, the class concept. 9 6.12 Working with Mean Variance and CAPM . 76 1.3.1 date, an example class .
    [Show full text]