# GNU Octave Part 1 - Big picture

**Scientific Programming Language**

What’s Octave? According to the website —

- Powerful mathematics-oriented syntax with built-in 2D/3D plotting and visualization tools
- Free software, runs on GNU/Linux, macOS, BSD, and Microsoft Windows
- Drop-in compatible with many Matlab scripts (largely compatible with Matlab)

Download from official website and let’s get started. In this short article we gonna explore what Octave can do.

## 2D plott

`x = -2:0.5:2;`

y = x .^ 2;

plot(x,y);

title("Simple 2-D Plot");

xlabel("X");

ylabel("Y");

Beginner note: as soon as you use plot() method, a diagram will appear on GUI, then keep labeling the diagram and it will sync automatically.

## 3D plot

`x = linspace(-2,2,50);`

y = linspace(-2,2,50);

[xx,yy] = meshgrid(x,y);

meshc(xx, yy, 4-(xx .^ 2 + yy .^ 2));

## Elementary Calculations

For example, exponent to the multiplication of i and pi

`exp (i*pi)`

## Matrix Arithmetic

Let a be a simple 2x2 matrix and multiply with A transpose, just like math we can simple write.

`A = [1 2; 3 4];`

A * A';

## Huge libs

Octave has build-in function libraries to enhance programmability, sin() cost() etc. Helper function for quick util like —

`toupper(); `

lookfor -all "standard deviation";

## Package

The package is the bundle of functions providing extra functionality for GNU Octave. Octave Forge is a central location for the development of packages for GNU Octave.

`pkg install -forge package_name;`

## Tricks

- Semicolon at the end of each statement, will prevent from console out e.g

`a = 5;`

- It’s dynamic type language, variable copy by value and case sensitive

a = "text";

b = a;

a = 1;% a is 1 now, while b remain as 'text'

- It has both C-like Structures and Python style (mixed)

## Math problems

Solving Systems of Linear Equations, Integrating Differential Equations and more.