# Get started with Octave

## Download and install Octave

There are a number of Open Source alternatives to the program MatLab, one of the most known alternatives is GNU Octave. When using Octave you use a command line to enter commands. Octave can be downloaded and installed from GNU Octave.

### Install on Mac

If using Mac:

Install Homebrew.

Install XCode from App Store.

Open and run the XCode app to agree to the License Agreement.

Install XQuartz.

Import science packages, open the terminal and enter:

brew tap homebrew/science

Install Octave (this takes time):

brew update && brew upgrade brew install gcc brew install octave --without-docs

Update:

brew update && brew upgrade

At the end of the process a summary is shown displaying the path to Octave. If following is shown:

Summary /usr/local/Cellar/octave/3.8.1

then the path to Octave is `/usr/local/Cellar/octave/3.8.1/bin/Octave`

Open AppleScript Editor and make a New Document. Write following:

tell application "Terminal" do script "/path/to/octave; exit" end tell

where `/path/to/octave`

is the path. Save the script as Octave.app, select Application when saving.

For more information see Octave for MacOS X.

## As a calculator

The easiest way to get started, is to use Octave as a calculator.

The arithmetic operators are:

`+ - * / ^`

(to the power of) There are predefined constants in Octave, some of them are listed below:

constant | explanation |
---|---|

`pi ` , `e ` , `i` |
Make a wild guess! |

`Inf` (infinity) |
Operations yielding numbers larger than the maximum floating point will give this answer. |

`NaN` (not a number) |
Operations that can not be defined in any reasonably way will give this answer |

There are also a number of predefined mathematical functions in Octave, some of them are listed below:

function | explanation |
---|---|

`sin, cos, tan` |
Trigonometric functions using radians |

`asin, acos, atan` |
Inverse trigonometric functions |

`exp, log, log10` |
Exponential function, natural logarithm, logarithm to the base 10 |

`sqrt` |
Square root |

`abs` |
Absolute value |

`round, floor, ceil` |
Round to nearest integer, round down, round up |

`rem` |
Remainder when doing integer division |

### Showing more decimals

You can show more decimals by typing `format long`

. Go back to showing
few decimals by typing `format short`

.

## Exercise 1

Calculate following expressions

- \(\sqrt[5]{200}\)
- \(\dfrac{3\cdot 10^{-3}}{0.001+\sqrt{0.2}}\)

- \(\dfrac{2^{3+\sin{0.3}}+5}{10}\)

You should get these answers

`ans = 2.8854`

`ans = 0.0066932`

`ans = 1.4819`

You can see old commands by using up/down arrow keys.

## Exercise 2

Guess the output of following commands, then check the answers given by Octave

`1/0 0/0 tan(pi/2)`

`inf+inf inf-inf inf/inf inf*inf`

`nan+2 nan+nan`

## Exit Octave

Exit Octave by writing `exit`

or `quit`

.

## Numerical variables

When evaluating the value of an expression, the result is stored in a variable
called `ans`

(answer). You can also introduce variables of your own.

By writing `who`

you can see all variables. If you write a semi colon at the end of the line, the output is
not shown.

### Naming variables

Various programs have different rules for naming entities. Although some modern programs allow for all kind of characters in names, you may run into trouble if you use characters like "-" or blank. If you want to stay on the safe side, never having to bother about naming-rules for specific programs, follow these old-school rules:

- The first character must be an english letter :
`a`

-`z`

,`A`

-`Z`

Some programs can handle letters like å, Æ, Ç, ü; others cannot. Use english names when programming! - The name can include numbers :
`0`

-`9`

- The name can include underscore :
`_`

These rules apply to Octave and a number of other programs.

### Assignments

When writing `a=5`

at the command prompt, the equal-sign should
not be thought of as a logical equality; `a`

is not equal to 5, it
is assigned the value 5. Having that in mind, one can write assignments like
this

`a=a+1`

The statement above would be false if it was a logical statement, it is however
not a logical statement but an assignment. The **right-hand-side of the
statement is calculated first**, the result is then assigned to the variable
on the left-hand-side.

### Hiding the output and repeating previous commands

You can write several commands on one line by using comma, or semi colon. By using up-arrow, you can repeat the previous command, and alter it.

You can calculate a geometric series by using up-arrow several times.

## Exercise 3

Calculate the series:

\[\sum_{i=1}^{20} \left(\frac{1}{i} \right)^2 \](The answer is 1.5962)

## Exercises on Sequences

A sequence is a function with the domain being the natural numbers. A sequence can be written like this \(a_0,a_1,a_2,...\) or like this

\[\left( a_n \right)_{n=0}^{\infty} \]### Recurrence equations

A geometric progression can be defined in different ways. Consider the infinite geometric progression \(3, 3\cdot 2, 3\cdot 2^2,...\).

You can describe the geometric progression in two ways.

A recurrence equation:

\[ \left\{ \begin{align} a_0 &=3 \\ a_{n+1} &=2\cdot a_n, n\geq0 \end{align} \right. \]An explicit formula:

\[a_n=3\cdot 2^n, n\in \mathbb{n}\]## Exercise 4

Use Octave to find the limit as \(n\rightarrow\infty\) of following sequences. Type `format long`

to show more decimals.
Try different initial values \(c\), do you get different limits?

- \[ \left\{ \begin{align} a_0 &=c \\ a_{n+1} &=1+\frac{1}{a_n}, n\geq0 \end{align} \right. \]
- \[ \left\{ \begin{align} a_0 &=c \\ a_{n+1} &=\sqrt{1+a_n}, n\geq0 \end{align} \right. \]

Try to explain your answers. If you fail, do the exercises on Calculus - Fixpoints.

by Malin Christersson under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Sweden License