comparison doc/interpreter/intro.txi @ 19630:0e1f5a750d00

maint: Periodic merge of gui-release to default.
author John W. Eaton <jwe@octave.org>
date Tue, 20 Jan 2015 10:24:46 -0500
parents 0850b5212619 446c46af4b42
children 4197fc428c7d
comparison
equal deleted inserted replaced
19626:37d37297acf8 19630:0e1f5a750d00
4 @c 4 @c
5 @c Octave is free software; you can redistribute it and/or modify it 5 @c Octave is free software; you can redistribute it and/or modify it
6 @c under the terms of the GNU General Public License as published by the 6 @c under the terms of the GNU General Public License as published by the
7 @c Free Software Foundation; either version 3 of the License, or (at 7 @c Free Software Foundation; either version 3 of the License, or (at
8 @c your option) any later version. 8 @c your option) any later version.
9 @c 9 @c
10 @c Octave is distributed in the hope that it will be useful, but WITHOUT 10 @c Octave is distributed in the hope that it will be useful, but WITHOUT
11 @c ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 @c ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 @c FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 @c FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 @c for more details. 13 @c for more details.
14 @c 14 @c
15 @c You should have received a copy of the GNU General Public License 15 @c You should have received a copy of the GNU General Public License
16 @c along with Octave; see the file COPYING. If not, see 16 @c along with Octave; see the file COPYING. If not, see
17 @c <http://www.gnu.org/licenses/>. 17 @c <http://www.gnu.org/licenses/>.
18 18
19 @node Introduction 19 @node Introduction
20 @chapter A Brief Introduction to Octave 20 @chapter A Brief Introduction to Octave
21 @cindex introduction 21 @cindex introduction
22 22
23 GNU Octave is a high-level language, primarily intended for numerical 23 GNU Octave is a high-level language, primarily intended for numerical
24 computations. It is typically used for such problems as solving 24 computations. It is typically used for such problems as solving
25 linear and nonlinear equations, numerical linear algebra, statistical 25 linear and nonlinear equations, numerical linear algebra, statistical
26 analysis, and for performing other numerical experiments. It may also 26 analysis, and for performing other numerical experiments. It may also
27 be used as a batch-oriented language for automated data processing. 27 be used as a batch-oriented language for automated data processing.
28 28
29 Until recently GNU Octave provided a command-line interface with 29 Until recently GNU Octave provided a command-line interface with
30 graphical results displayed in separate windows. The current version 30 graphical results displayed in separate windows. The current version
31 (version 3.8, released in late 2013) also provides, by default, a 31 (version 3.8, released in late 2013) also provides, by default, a
32 graphical user interface. 32 graphical user interface.
33 33
34 GNU Octave is freely redistributable software. You may redistribute 34 GNU Octave is freely redistributable software. You may redistribute
35 it and/or modify it under the terms of the GNU General Public License 35 it and/or modify it under the terms of the GNU General Public License
36 as published by the Free Software Foundation. The GPL is included in 36 as published by the Free Software Foundation. The GPL is included in
37 this manual, @pxref{Copying}. 37 this manual, @pxref{Copying}.
38 38
39 This manual provides comprehensive documentation on how to install, 39 This manual provides comprehensive documentation on how to install,
40 run, use, and extend GNU Octave. Additional chapters describe how 40 run, use, and extend GNU Octave. Additional chapters describe how
41 to report bugs and help contribute code. 41 to report bugs and help contribute code.
42 42
43 This document corresponds to Octave version @value{VERSION}. 43 This document corresponds to Octave version @value{VERSION}.
44 44
45 @menu 45 @menu
55 This, by default, starts the graphical user interface (GUI). The central 55 This, by default, starts the graphical user interface (GUI). The central
56 window in the GUI is the Octave command-line interface. Octave displays 56 window in the GUI is the Octave command-line interface. Octave displays
57 an initial message and then a prompt indicating it is ready to accept 57 an initial message and then a prompt indicating it is ready to accept
58 input. If you have chosen the traditional command-line interface only 58 input. If you have chosen the traditional command-line interface only
59 the command prompt appears. In any case, you can immediately begin 59 the command prompt appears. In any case, you can immediately begin
60 typing Octave commands. 60 typing Octave commands.
61 61
62 If you get into trouble, you can usually interrupt Octave by typing 62 If you get into trouble, you can usually interrupt Octave by typing
63 @kbd{Control-C} (written @kbd{C-c} for short). @kbd{C-c} gets 63 @kbd{Control-C} (written @kbd{C-c} for short). @kbd{C-c} gets
64 its name from the fact that you type it by holding down @key{CTRL} and 64 its name from the fact that you type it by holding down @key{CTRL} and
65 then pressing @key{c}. Doing this will normally return you to Octave's 65 then pressing @key{c}. Doing this will normally return you to Octave's
84 are lines you type, ending each with a carriage return. Octave will 84 are lines you type, ending each with a carriage return. Octave will
85 respond with an answer, or by displaying a graph. 85 respond with an answer, or by displaying a graph.
86 86
87 @subsection Elementary Calculations 87 @subsection Elementary Calculations
88 88
89 Octave can easily be used for basic numerical calculations. Octave 89 Octave can easily be used for basic numerical calculations. Octave
90 knows about arithmetic operations (+,-,*,/), exponentiation (^), 90 knows about arithmetic operations (+,-,*,/), exponentiation (^),
91 natural logarithms/exponents (log, exp), and the trigonometric 91 natural logarithms/exponents (log, exp), and the trigonometric
92 functions (sin, cos, @dots{}). Moreover, Octave calculations work 92 functions (sin, cos, @dots{}). Moreover, Octave calculations work
93 on real or imaginary numbers (i,j). In addition, some mathematical 93 on real or imaginary numbers (i,j). In addition, some mathematical
94 constants such as the base of the natural logarithm (e) and the ratio 94 constants such as the base of the natural logarithm (e) and the ratio
95 of a circle's circumference to its diameter (pi) are pre-defined. 95 of a circle's circumference to its diameter (pi) are pre-defined.
96 96
97 @noindent 97 @noindent
98 For example, to verify Euler's Identity, 98 For example, to verify Euler's Identity,
99 @tex 99 @tex
107 @end display 107 @end display
108 @end ifnottex 108 @end ifnottex
109 109
110 @noindent 110 @noindent
111 type the following which will evaluate to @code{-1} within the 111 type the following which will evaluate to @code{-1} within the
112 tolerance of the calculation. 112 tolerance of the calculation.
113 113
114 @example 114 @example
115 octave:1> exp (i*pi) 115 octave:1> exp (i*pi)
116 @end example 116 @end example
117 117
118 @subsection Creating a Matrix 118 @subsection Creating a Matrix
119 119
120 Vectors and matrices are the basic building blocks for numerical analysis. 120 Vectors and matrices are the basic building blocks for numerical analysis.
121 To create a new matrix and store it in a variable so that you can 121 To create a new matrix and store it in a variable so that you can
122 refer to it later, type the command 122 refer to it later, type the command
123 123
124 @example 124 @example
125 octave:1> A = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ] 125 octave:1> A = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ]
126 @end example 126 @end example
127 127
128 @noindent 128 @noindent
129 Octave will respond by printing the matrix in neatly aligned columns. 129 Octave will respond by printing the matrix in neatly aligned columns.
130 Octave uses a comma or space to separate entries in a row, and a 130 Octave uses a comma or space to separate entries in a row, and a
131 semicolon or carriage return to separate one row from the next. 131 semicolon or carriage return to separate one row from the next.
132 Ending a command with a semicolon tells Octave not to print the result 132 Ending a command with a semicolon tells Octave not to print the result
133 of the command. For example, 133 of the command. For example,
134 134
135 @example 135 @example
136 octave:2> B = rand (3, 2); 136 octave:2> B = rand (3, 2);
139 @noindent 139 @noindent
140 will create a 3 row, 2 column matrix with each element set to a random 140 will create a 3 row, 2 column matrix with each element set to a random
141 value between zero and one. 141 value between zero and one.
142 142
143 To display the value of a variable, simply type the name of the 143 To display the value of a variable, simply type the name of the
144 variable at the prompt. For example, to display the value stored in the 144 variable at the prompt. For example, to display the value stored in the
145 matrix @code{B}, type the command 145 matrix @code{B}, type the command
146 146
147 @example 147 @example
148 octave:3> B 148 octave:3> B
149 @end example 149 @end example
200 but avoids computing the inverse of a matrix directly. 200 but avoids computing the inverse of a matrix directly.
201 201
202 If the coefficient matrix is singular, Octave will print a warning 202 If the coefficient matrix is singular, Octave will print a warning
203 message and compute a minimum norm solution. 203 message and compute a minimum norm solution.
204 204
205 A simple example comes from chemistry and the need to obtain balanced 205 A simple example comes from chemistry and the need to obtain balanced
206 chemical equations. Consider the burning of hydrogen and oxygen to 206 chemical equations. Consider the burning of hydrogen and oxygen to
207 produce water. 207 produce water.
208 @tex 208 @tex
209 $$ {\rm H_{2}} + {\rm O_{2}} \rightarrow {\rm H_{2}O} $$ 209 $$ {\rm H_{2}} + {\rm O_{2}} \rightarrow {\rm H_{2}O} $$
210 @end tex 210 @end tex
211 @ifnottex 211 @ifnottex
214 H2 + O2 --> H2O 214 H2 + O2 --> H2O
215 @end example 215 @end example
216 216
217 @end ifnottex 217 @end ifnottex
218 @noindent 218 @noindent
219 The equation above is not accurate. The Law of Conservation of Mass requires 219 The equation above is not accurate. The Law of Conservation of Mass requires
220 that the number of molecules of each type balance on the left- and right-hand 220 that the number of molecules of each type balance on the left- and right-hand
221 sides of the equation. Writing the variable overall reaction with 221 sides of the equation. Writing the variable overall reaction with
222 individual equations for hydrogen and oxygen one finds: 222 individual equations for hydrogen and oxygen one finds:
223 @tex 223 @tex
224 \vbox{ 224 \vbox{
225 $$ x_{1}{\rm H_{2}} + x_{2}{\rm O_{2}} \rightarrow {\rm H_{2}O} $$ 225 $$ x_{1}{\rm H_{2}} + x_{2}{\rm O_{2}} \rightarrow {\rm H_{2}O} $$
226 $$ {\rm H:}\quad 2x_{1} + 0x_{2} \rightarrow 2 $$ 226 $$ {\rm H:}\quad 2x_{1} + 0x_{2} \rightarrow 2 $$
292 function, Octave responds with a different prompt, to indicate that it 292 function, Octave responds with a different prompt, to indicate that it
293 is waiting for you to complete your input. 293 is waiting for you to complete your input.
294 294
295 @example 295 @example
296 @group 296 @group
297 octave:1> function xdot = f (x, t) 297 octave:1> function xdot = f (x, t)
298 > 298 >
299 > r = 0.25; 299 > r = 0.25;
300 > k = 1.4; 300 > k = 1.4;
301 > a = 1.5; 301 > a = 1.5;
302 > b = 0.16; 302 > b = 0.16;
440 @cindex documentation fonts 440 @cindex documentation fonts
441 441
442 Examples of Octave code appear in this font or form: @code{svd (a)}. 442 Examples of Octave code appear in this font or form: @code{svd (a)}.
443 Names that represent variables or function arguments appear 443 Names that represent variables or function arguments appear
444 in this font or form: @var{first-number}. Commands that you type at the 444 in this font or form: @var{first-number}. Commands that you type at the
445 shell prompt appear in this font or form: @samp{octave --no-init-file}. 445 shell prompt appear in this font or form: @samp{octave --no-init-file}.
446 Commands that you type at the Octave prompt sometimes appear in this font 446 Commands that you type at the Octave prompt sometimes appear in this font
447 or form: @kbd{foo --bar --baz}. Specific keys on your keyboard appear 447 or form: @kbd{foo --bar --baz}. Specific keys on your keyboard appear
448 in this font or form: @key{ANY}. 448 in this font or form: @key{ANY}.
449 449
450 @node Evaluation Notation 450 @node Evaluation Notation
451 @subsection Evaluation Notation 451 @subsection Evaluation Notation
452 @cindex evaluation notation 452 @cindex evaluation notation
507 @node Printing Notation 507 @node Printing Notation
508 @subsection Printing Notation 508 @subsection Printing Notation
509 @cindex printing notation 509 @cindex printing notation
510 510
511 Many of the examples in this manual print text when they are 511 Many of the examples in this manual print text when they are
512 evaluated. In this manual the printed text resulting from an example 512 evaluated. In this manual the printed text resulting from an example
513 is indicated by @samp{@print{}}. The value that is returned by 513 is indicated by @samp{@print{}}. The value that is returned by
514 evaluating the expression is displayed with @samp{@result{}} 514 evaluating the expression is displayed with @samp{@result{}}
515 (@code{1} in the next example) and follows on a separate line. 515 (@code{1} in the next example) and follows on a separate line.
516 516
517 @example 517 @example
518 @group 518 @group
519 printf ("foo %s\n", "bar") 519 printf ("foo %s\n", "bar")
539 539
540 @node Format of Descriptions 540 @node Format of Descriptions
541 @subsection Format of Descriptions 541 @subsection Format of Descriptions
542 @cindex description format 542 @cindex description format
543 543
544 Functions and commands are described in this manual in a 544 Functions and commands are described in this manual in a
545 uniform format. The first line of a description contains the name of 545 uniform format. The first line of a description contains the name of
546 the item followed by its arguments, if any. 546 the item followed by its arguments, if any.
547 @ifnottex 547 @ifnottex
548 The category---function, command, or whatever---appears at the 548 The category---function, command, or whatever---appears at the
549 beginning of the line. 549 beginning of the line.