GNU Octave Beginner's Guide
3/5
()
About this ebook
Today, scientific computing and data analysis play an integral part in most scientific disciplines ranging from mathematics and biology to imaging processing and finance. With GNU Octave you have a highly flexible tool that can solve a vast number of such different problems as complex statistical analysis and dynamical system studies.
The GNU Octave Beginner's Guide gives you an introduction that enables you to solve and analyze complicated numerical problems. The book is based on numerous concrete examples and at the end of each chapter you will find exercises to test your knowledge. It's easy to learn GNU Octave, with the GNU Octave Beginner's Guide to hand.
Using real-world examples the GNU Octave Beginner's Guide will take you through the most important aspects of GNU Octave. This practical guide takes you from the basics where you are introduced to the interpreter to a more advanced level where you will learn how to build your own specialized and highly optimized GNU Octave toolbox package. The book starts by introducing you to work variables like vectors and matrices, demonstrating how to perform simple arithmetic operations on these objects before explaining how to use some of the simple functionality that comes with GNU Octave, including plotting. It then goes on to show you how to write new functionality into GNU Octave and how to make a toolbox package to solve your specific problem. Finally, it demonstrates how to optimize your code and link GNU Octave with C and C++ code enabling you to solve even the most computationally demanding tasks. After reading GNU Octave Beginner's Guide you will be able to use and tailor GNU Octave to solve most numerical problems and perform complicated data analysis with ease.
ApproachThis is a practical, step-by-step guide that will help you to quickly become a proficient Octave user. The book is packed with clear examples, screenshots, and code to carry out your data analysis without any problems.
Who this book is forThis book is intended for anyone interested in scientific computing and data analysis. The reader should have a good level of mathematics and a basic understanding of programming will be useful, although it is not a prerequisite.
Jesper Schmidt Hansen
Jesper Schmidt Hansen holds a Ph.D. in soft-material science and is currently doing research in the field of nanofluidics and dynamics at Roskilde University, Denmark. He has been using GNU Octave on a daily basis for many years, both as a student and later as a researcher. The applications have varied from solving partial and ordinary differential equations, simple data plotting, and data generation for other applications, to dynamical system investigations and advanced data analysis.
Related to GNU Octave Beginner's Guide
Related ebooks
NumPy: Beginner's Guide - Third Edition Rating: 4 out of 5 stars4/5Scientific Computing with Python 3 Rating: 0 out of 5 stars0 ratingsNumPy Beginner's Guide Rating: 5 out of 5 stars5/5Learning Linux Shell Scripting Rating: 4 out of 5 stars4/5LaTeX Beginner's Guide Rating: 4 out of 5 stars4/5Digital and Kalman Filtering: An Introduction to Discrete-Time Filtering and Optimum Linear Estimation, Second Edition Rating: 0 out of 5 stars0 ratingsMastering Julia Rating: 0 out of 5 stars0 ratingsMicroPython Projects: A do-it-yourself guide for embedded developers to build a range of applications using Python Rating: 0 out of 5 stars0 ratingsLearning SciPy for Numerical and Scientific Computing - Second Edition Rating: 0 out of 5 stars0 ratingsJulia: High Performance Programming Rating: 0 out of 5 stars0 ratingsQt5 C++ GUI Programming Cookbook Rating: 0 out of 5 stars0 ratingsIvor Horton's Beginning Visual C++ 2013 Rating: 0 out of 5 stars0 ratingsAlgebra: Polynomials, Galois Theory and Applications Rating: 0 out of 5 stars0 ratingsA Student's Guide to Python for Physical Modeling: Second Edition Rating: 0 out of 5 stars0 ratingsTcl/Tk 8.5 Programming Cookbook Rating: 5 out of 5 stars5/5Real Computing Made Real: Preventing Errors in Scientific and Engineering Calculations Rating: 3 out of 5 stars3/5Matrices with MATLAB (Taken from "MATLAB for Beginners: A Gentle Approach") Rating: 3 out of 5 stars3/5Linear Systems Theory: Second Edition Rating: 0 out of 5 stars0 ratingsIntroduction to Computational Science: Modeling and Simulation for the Sciences - Second Edition Rating: 3 out of 5 stars3/5Essential Radio Astronomy Rating: 0 out of 5 stars0 ratingsMicroPython Cookbook: Over 110 practical recipes for programming embedded systems and microcontrollers with Python Rating: 0 out of 5 stars0 ratingsLaTeX Cookbook Rating: 5 out of 5 stars5/5Learning Shell Scripting with Zsh Rating: 0 out of 5 stars0 ratingsGet Programming with Haskell Rating: 0 out of 5 stars0 ratingsC Clearly - Programming With C In Linux and On Raspberry Pi Rating: 0 out of 5 stars0 ratingsLighttpd Rating: 4 out of 5 stars4/5Engineering and Scientific Computations Using MATLAB Rating: 0 out of 5 stars0 ratingsJava Persistence with Hibernate Rating: 4 out of 5 stars4/5Programming the TI-83 Plus/TI-84 Plus Rating: 0 out of 5 stars0 ratings
Applications & Software For You
Logic Pro X For Dummies Rating: 0 out of 5 stars0 ratingsGarageBand For Dummies Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5How to Create Cpn Numbers the Right way: A Step by Step Guide to Creating cpn Numbers Legally Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Data Visualization: A Practical Introduction Rating: 5 out of 5 stars5/5Adobe Illustrator: A Complete Course and Compendium of Features Rating: 0 out of 5 stars0 ratingsSix Figure Blogging In 3 Months Rating: 3 out of 5 stars3/5Sound Design for Filmmakers: Film School Sound Rating: 5 out of 5 stars5/5FL Studio Cookbook Rating: 4 out of 5 stars4/5Kodi Made Easy: Complete Beginners Step by Step Guide on How to Install Kodi on Amazon Firestick Rating: 0 out of 5 stars0 ratingsNostalgia and Videogame Music: A Primer of Case Studies, Theories, and Analyses for the Player-Academic Rating: 0 out of 5 stars0 ratingsAdobe Photoshop: A Complete Course and Compendium of Features Rating: 5 out of 5 stars5/5Gray Hat Hacking the Ethical Hacker's Rating: 5 out of 5 stars5/5Adobe Premiere Pro: A Complete Course and Compendium of Features Rating: 5 out of 5 stars5/5Tableau Your Data!: Fast and Easy Visual Analysis with Tableau Software Rating: 4 out of 5 stars4/5OneNote Recipes: Elegant Techniques for Problem Solving and Visual Thinking Rating: 5 out of 5 stars5/5Digital Filmmaking for Beginners A Practical Guide to Video Production Rating: 0 out of 5 stars0 ratingsAdobe After Effects: A Complete Course and Compendium of Features Rating: 5 out of 5 stars5/5Start Your Own Podcast Business: Your Step-By-Step Guide to Success Rating: 5 out of 5 stars5/5Synthesizer Cookbook: How to Use Filters: Sound Design for Beginners, #2 Rating: 3 out of 5 stars3/5The Most Concise Step-By-Step Guide To ChatGPT Ever Rating: 3 out of 5 stars3/580 Ways to Use ChatGPT in the Classroom Rating: 5 out of 5 stars5/52022 Adobe® Premiere Pro Guide For Filmmakers and YouTubers Rating: 5 out of 5 stars5/5Blender 3D Basics Beginner's Guide Second Edition Rating: 5 out of 5 stars5/5Power OneNote Rating: 4 out of 5 stars4/5
Reviews for GNU Octave Beginner's Guide
2 ratings0 reviews
Book preview
GNU Octave Beginner's Guide - Jesper Schmidt Hansen
Table of Contents
GNU Octave
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Time for action – heading
What just happened?
Pop quiz – heading
Have a go hero – heading
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Introducing GNU Octave
So what is GNU Octave?
Applications
Limitations of Octave
Octave and MATLAB
The Octave community
Installing Octave
Windows
GNU/Linux
Building Octave from the source under GNU/Linux
Time for action – building Octave from source
What just happened?
Checking your installation with peaks
Time for action – testing with peaks
What just happened?
Customizing Octave
Time for action – creating an Octave home directory under Windows
What just happened?
Creating your first .octaverc file
Time for action – editing the .octaverc file
What just happened?
More on .octaverc
Installing additional packages
Time for action – installing additional packages
What just happened?
Uninstalling a package
Getting help
The behaviour of the Octave command prompt
Summary
2. Interacting with Octave: Variables and Operators
Simple numerical variables
Accessing and changing array elements
More examples
Time for action – manipulating arrays
What just happened?
Complex variables
Text variables
Higher-dimensional arrays
Pop Quiz – working with arrays
Structures and cell arrays
Structures
Time for action – instantiating a structure
What just happened?
Accessing structure fields
Cell arrays
Time for action – instantiating a cell array
What just happened?
Have a go hero – working with structures
Getting information
Time for action – using whos
What just happened?
Size, rows, columns, and length
Identifying the variable type
Deleting variables from the workspace
Pop Quiz – understanding arrays
A few things that make life easier
Basic arithmetic
Addition and subtraction
Time for action – doing addition and subtraction operations
What just happened?
Matrix multiplication
Time for action – doing multiplication operations
What just happened?
Element-by-element, power, and transpose operations
Operators for structures and cell arrays
Solving linear equation systems: left and right division
Time for action – doing left and right division
What just happened?
Basic arithmetic for complex variables
Summary of arithmetic operators
Pop Quiz – understanding simple operations
Have a go hero – doing the dot product
Comparison operators and precedence rules
Precedence rules
Time for action – working with precedence rules
What just happened?
Pop Quiz – understanding precedence rules
A few hints
Summary
3. Working with Octave:Functions and Plotting
Octave functions
Mathematical functions
Time for action – using the cos function
What just happened?
Polynomials in Octave
More complicated mathematical functions
Time for action – putting together mathematical functions
What just happened?
Helper functions
Generating random numbers
min and max
Sorting arrays
find, any, and all
floor, ceil, round, and fix
Time for action – trying out floor, ceil, round, and fix
What just happened?
sum and prod
Absolute values
Complex input arguments
Operator functions
Linear algebra
Time for action – using Octave for advanced linear algebra
What just happened?
Polynomials
Pop Quiz – using simple mathematical functions
Have a go hero – understanding the find function
Two-dimensional plotting
Time for action – making your first plot
What just happened?
plot and set
Time for action – changing the figure properties
What just happened?
Adding lines and text to your plot
Plot styles and colors
Title and legends
Ticks
Grids
fplot
Clear the figure window
Moving on
Time for action – having multiple graphs in the same figure
What just happened?
Multiple figure windows
Subplots
Time for action – making an inset
What just happened?
Saving your plot
Pop Quiz – understanding the plotting options
Have a go hero – making inserts
Three-dimensional plotting
Surface plot
Time for action – making a surface plot
What just happened?
view and colormap
Contour plots
Three-dimensional parametric plots
Time for action – plotting parametric curves
What just happened?
Have a go hero – revisiting peaks
Summary
4. Rationalizing: Octave Scripts
Writing and executing your first script
Time for action – making your first script
What just happened?
Improving your script: input and disp
Time for action – interacting with the user
What just happened?
Flush please
Comments
Very long commands
Workspace
For GNU/Linux and MacOS X users
Pop Quiz – understanding disp and input
Have a go hero – using scripts for plotting
Statements
Prime numbers
Decision making – the if statement
Interlude: Boolean operators
Element-wise Boolean operators
Short-circuit Boolean operators
Using Boolean operators with an if statement
Nested statements
The switch statement
Loops
The for statement
The while and do statements
Incremental operators
Nested loops
Putting it all together
Exception handling
Pop Quiz – understanding statements and Boolean operators
Added flexibility – C style input and output functions
printf
Pop Quiz – printing with printf
Saving your work
Loading your work
Functional forms
Have a go hero – investigating the prime gab
Summary
5. Extensions: Write Your Own Octave Functions
Your first Octave function
Time for action – programming the minmax function
What just happened?
Scripts versus functions
Defining functions at the command prompt
Writing a function help text
Checking the function call
The usage, warning, and error functions
nargin and nargout
Pop Quiz – understanding functions
Have a go hero – converting scripts into functions
Writing and applying user-supplied functions
Using fsolve
Providing the Jacobian
Using lsode – dynamical analysis of the Sel'kov model
Time for action – using lsode for numerical integration
What just happened?
Inline functions
Pop Quiz – implementing mathematical functions as Octave functions
Have a go hero – bifurcation in the Sel'kov model
More advanced function programming: Monte Carlo integration
The feval function
Validating the user-supplied function
Using quad and trapz for numerical integration
Vectorized programming
Time for action – vectorizing the Monte Carlo integrator
What just happened?
Simple debugging
Multiple function file
Pop Quiz – understanding vectorization
Have a go hero – using the debugger
Summary
6. Making Your Own Package: A Poisson Equation Solver
The Poisson equation – two examples of heat conduction
One-dimensional heat conduction
Two-dimensional heat conduction
The Poisson equation
The Dirichlet boundary condition
Pop Quiz – identifying the Poisson equation
Finite differencing
From finite difference to a linear equation system
Interlude: Sparse matrices
Time for action – instantiating a sparse matrix
What just happened?
Memory usage
Implementation and package functions
The coefficient matrix for one dimension
The coefficient matrix for two dimensions
The conversion function
Testing the functions
The coefficient matrices
Time for action – using imagesc
What just happened?
Comparison with analytical solution
Time for action – comparing with analytical solution
What just happened?
Two dimensions
Time for action – solving a two-dimensional Laplace equation
What just happened?
More examples
Wrapping everything into one function
Have a go hero – optimizing the usage of the sparse function
The pois-solv package
Organizing files into the package directory
The DESCRIPTION file
The COPYING file
The INDEX file
Building the package
Limitations and possible extensions to the package
Summary
7. More Examples: Data Analysis
Loading data files
Simple descriptive statistics
Histogram and moments
Sample moments
Comparing data sets
The correlation coefficient
The student t-test
Function fitting
Polynomial fitting
Time for action – using polyfit
What just happened?
Goodness of the fit
Time for action – calculating the correlation coefficient
What just happened?
Residual plot
Non-polynomial fits
Transforms
General least squares fitting
Time for action – using leasqr
What just happened?
Have a go hero – calculating the deviation of the Monte Carlo integrator
Fourier analysis
The Fourier transform
Time for action – using the fft function
What just happened?
Fourier analysis of currency exchange rate
Time for action – analysing the exchange rate
What just happened?
Inverse Fourier transform and data smoothing
The Butterworth filter
Time for action – applying a low pass filter
What just happened?
Have a go hero – implementing your own Fourier transform function
Summary
8. Need for Speed: Optimization and Dynamically Linked Functions
A few optimization techniques
tic, toc
Time for action – using tic and toc
What just happened?
Vectorization
Initialization of variables
Looping row-wise versus looping column-wise
Have a go hero – revision of cmat_1d
Dynamically linked functions
The DEFUN_DLD function macro
Time for action – writing a Hello World
program
What just happened?
Managing input arguments and outputs
Time for action – checking user inputs and outputs
What just happened?
Retrieving the inputs
Class types
Functions as input argument
Optimization with oct-files
Time for action – revisiting the Sel'kov model
What just happened
Have a go hero – implementing the Euler integrator
Summary
A. Pop Quiz Answers
Chapter 2: Interacting with Octave: Variables and Operators
Working with arrays
Understanding arrays
Understanding simple operations
Understanding precedence rules
Chapter 3: Working with Octave: Functions and Plotting
Using simple mathematical functions
Understanding the plotting options
Chapter 4: Rationalizing: Octave Scripts
Understanding disp and input
Understanding statements and Boolean operators
Printing with printf
Chapter 5: Extensions: Write Your Own Octave Functions
Understanding functions
Implementing mathematical functions as Octave functions
Understanding vectorization
Chapter 6: Making Your Own Package: A Poisson Equation Solver
Identifying the Poisson equation
Index
GNU Octave
Beginner's Guide
GNU Octave
Beginner's Guide
Copyright © 2011 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, its dealers, and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: June 2011
Production Reference: 2150611
Published by Packt Publishing Ltd.
32 Lincoln Road
Olton
Birmingham, B27 6PA, UK.
ISBN 978-1-849513-32-6
www.packtpub.com
Cover Image by John Quick (<[email protected]>)
Credits
Author
Jesper Schmidt Hansen
Reviewers
Piotr Gawron
Kenneth Geisshirt
Jordi Gutiérrez Hermoso
Acquisition Editor
Usha Iyer
Development Editor
Roger D'souza
Technical Editor
Dayan Hyames
Project Coordinator
Joel Goveya
Proofreaders
Lesley Harrison
Clyde Jenkins
Lynda Sliwoski
Indexers
Hemangini Bari
Tejal Daruwale
Monica Ajmera Mehta
Graphics
Nilesh R. Mohite
Production Coordinator
Kruthika Bangera
Cover Work
Kruthika Bangera
About the Author
Jesper Schmidt Hansen holds a Ph.D. in soft material science and is currently doing research in the field of nanofluidics and dynamics at Roskilde University, Denmark. He has been using GNU Octave on a daily basis for many years, both as a student and later as a researcher. The applications have varied from solving partial and ordinary differential equations, simple data plotting, data generation for other applications, dynamical system investigations, and advanced data analysis.
Firstly, I wish to thank the reviewers. They have been a great help and their many (at times overwhelmingly many) comments and hints have improved the manuscript considerably.
I have received encouragement and good ideas from everyone at the Department of Science, Systems and Models, Roskilde University. Especially, I want to thank Professor Jeppe Dyre from the Danish National Research Foundation centre Glass and Time
for giving me the opportunity to finish the book in the last phase of the writing.
Also, I have found Octave's official mailing list very useful. Unlike many other user groups, there is a very constructive and helpful atmosphere here. I thank everyone who has submitted questions and all those that have replied.
I now realize that having a one year old child, a full time job, as well as writing a book is not really an ideal cocktail. I must thank Signe Anthon for her tremendous support and patience during the writing of this book. When I signed the contract with Packt Publishing, I was happy finally to be able to make a contribution to the open source community—Signe's contribution is just as big as mine!
About the Reviewers
Piotr Gawron is a researcher in the field of quantum information processing. His main research topics are quantum programming languages, quantum game theory, and numerical and geometrical methods in quantum information. He works in the Quantum Computer Systems Group of the Institute of Theoretical and Applied Informatics of the Polish Academy of Sciences in Gliwice, Poland. Apart from research in theoretical aspects of computer science, he has gained practical experience in FPGA development and real-time image processing for applications in UAVs working closely with the industry. He is administrator of www.quantiki.org , a portal for the quantum information community. He is a user and strong supporter of free software. He likes hard science-fiction literature, live-action role-playing, and French rock music.
Kenneth Geisshirt is a chemist by education and a geek by nature. He has been programming for more than 25 years—the last 6 years as a subcontractor. In 1990, Kenneth first met free software, and in 1992 turned to Linux as his primary operating system (officially Linux user no. 573 at the Linux Counter). He has written books about Linux, PAM, and JavaScript—and many articles on open source software for computer magazines. Moreover, Kenneth has been a technical reviewer of books on Linux network administration, the Vim editor, and JavaScript testing.
Jordi Gutiérrez Hermoso studied mathematics in Canada and Mexico, both pure and applied respectively. He has been programming since the age of seven, when he started to learn about computers while writing silly programs in BASIC. He has been a Debian user since 2001, his first and still preferred GNU/Linux distribution, to which he now occasionally contributes with GNU Octave packaging. Since 2005, he has been an enthusiastic Octave user and started getting more involved with its development in 2010. As of 2011, he resides in Mexico and works in BlueMessaging, where he's responsible for natural language processing and artificial intelligence. An Emacs user at heart, Jordi feels at home in a GNU environment and will gladly share .emacs configurations with anyone who asks.
I would like to thank my close friends and family for helping me get through difficult times and for celebrating the good ones with me. John W. Eaton, Octave's creator, deserves much recognition for starting and leading the project on which this book is based.
www.PacktPub.com
Support files, eBooks, discount offers and more
You might want to visit www.PacktPub.com for support files and downloads related to your book.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters, and receive exclusive discounts and offers on Packt books and eBooks.
http://PacktLib.PacktPub.com
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read, and search across Packt's entire library of books.
Why Subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via web browser
Free Access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.
Preface
Using a range of very different examples, this beginner's guide will take you through the most important aspects of GNU Octave. The book starts by introducing how you work with mathematical objects like vectors and matrices, demonstrating how to perform simple arithmetic operations on these objects and explaining how to use some of the simple functionality that comes with GNU Octave, including plotting. It then goes on to show you how to extend and implement new functionality into GNU Octave, how to make a toolbox package to solve your specific problem, and how to use GNU Octave for complicated data analysis. Finally, it demonstrates how to optimize your code and link GNU Octave with C++ code enabling you to solve even the most computational demanding tasks. After reading GNU Octave Beginner's Guide, you will be able to use and tailor GNU Octave to solve most numerical problems and perform complicated data analysis with ease.
What this book covers
Chapter 1, Introducing GNU Octave briefly introduces you to GNU Octave. It explains how you can install GNU Octave and test your installation. This first chapter also discusses how to customize the appearance and the behavior of GNU Octave as well as how you install additional packages.
Chapter 2, Interacting with Octave: Variables and Operators shows you how to interact with GNU Octave through the interactive environment. Learn to instantiate objects of different types, control their values, and perform simple operations on and between them.
Chapter 3, Working with Octave: Functions and Plotting explains GNU Octave functions and shows several examples of the very useful functionalities that come with GNU Octave. In this chapter, you will see how you can perform two- and three-dimensional plotting, control the graph appearance, how to have multiple plots in the same figure window, and much more.
Chapter 4, Rationalizing: Octave Scripts looks at how you can rationalize your work using scripts. It will teach you how to control the programming flow in your script and how to perform loops using different statements. At the end of the chapter, you are shown how you can save your work and load it back into GNU Octave's workspace.
Chapter 5, Extensions: Write Your Own Octave Functions takes a closer look at functions and teaches how you can write your own GNU Octave functions. You will learn how to control and validate user input to the function. The important concept of vectorization is discussed and an example of this is given in the last part of the chapter.
Chapter 6, Making Your Own Package: A Poisson Equation Solver teaches you how to make your own GNU Octave package from a collection of related functions. The package will be able to solve one- and two-dimensional Poisson equations and is therefore relevant for many problems encountered in science and engineering. In this chapter, you will also learn how to work with sparse matrices in GNU Octave.
Chapter 7, More Examples: Data Analysis shows you examples of how GNU Octave can be used for data analysis. These examples range from simple statistics, through data fitting, to Fourier analysis and data smoothing.
Chapter 8, Need for Speed: Optimization and Dynamically Linked Functions discusses how you can optimize your code. This includes vectorization, partial looping, pre-instantiation of variables, and dynamically linked functions. The main part of the chapter shows how to use GNU Octave's C++ library and how to link this to the GNU Octave interactive environment. Special attention is paid to explaining when and when not to consider using dynamically linked functions.
What you need for this book
If you use Windows, you basically only need to have a full version of GNU Octave installed on your computer. For GNU/Linux, you may need a plotting program like gnuplot, a Fortran and C/C++ compiler like gcc, and the GNU make utility; fortunately these are standard packages on almost all GNU/Linux distributions. In Chapter 1, it will be shown how you install GNU Octave under Windows and GNU/Linux.
Who this book is for
This book is intended for anyone interested in scientific computing and data analysis. The reader should have a good knowledge of mathematics and also a basic understanding of programming will be useful, although it is not a prerequisite.
Conventions
In this book, you will find several headings appearing frequently.
To give clear instructions of how to complete a procedure or task, we use:
Time for action – heading
Action 1
Action 2
Action 3
Instructions often need some extra explanation so that they make sense, so they are followed with:
What just happened?
This heading explains the working of tasks or instructions that you have just completed.
You will also find some other learning aids in the book, including:
Pop quiz – heading
These are short multiple-choice questions intended to help you test your own understanding.
Have a go hero – heading
These set practical challenges and give you ideas for experimenting with what you have learned.
You will also find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text are shown as follows: For example, the inverse of sine is called asin and the inverse hyperbolic of sine is asinh.
A block of code is set as follows:
# flush the output stream
fflush(stdout);
# Get the number of rows and columns from the user
nr = input(Enter the number of rows in the matrix:
);
nc = input(Enter the number of columns in the matrix:
);
Any command-line input or output is written as follows:
octave:35> projectile = struct(mass
, 10.1, velocity
, [1 0 0], type
, Cannonball
);
New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: Now go to the Octave-Forge web page, find the msh package, and click on Details (to the right of the package name).
Specific commands entered in Octave are referred to using the relevant command numbers:
octave:5 > A = [1 2 3; 4 5 6]
A = 1 2 3 4 5 6
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message.
If there is