home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Geek Gadgets 1
/
ADE-1.bin
/
ade-dist
/
octave-1.1.1p1-src.tgz
/
tar.out
/
fsf
/
octave
/
doc
/
octave.info-4
(
.txt
)
< prev
next >
Wrap
GNU Info File
|
1996-09-28
|
49KB
|
1,109 lines
This is Info file octave.info, produced by Makeinfo-1.55 from the input
file octave.texi.
Copyright (C) 1993, 1994, 1995 John W. Eaton.
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 modified versions of
this manual under the conditions 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 language, under the above conditions for modified
versions.
File: octave.info, Node: User Preferences, Next: Other Built-in Variables, Prev: Predefined Constants, Up: Built-in Variables
User Preferences
================
This section describes the variables that you can use to customize
Octave's behavior.
Normally, preferences are set in the file `~/.octaverc', so that you
can customize your environment in the same way each time you use Octave
without having to remember and retype all the necessary commands.
*Note Startup Files:: for more information.
`EDITOR'
A string naming the editor to use with the `edit_history' command.
If the environment variable `EDITOR' is set when Octave starts, its
value is used as the default. Otherwise, `EDITOR' is set to
`"vi"'.
`IMAGEPATH'
A colon separated list of directories in which to search for image
files. *Note Image Processing:: for a description of Octave's
image processing capabilities.
`INFO_FILE'
A string naming the location of the Octave info file.
The default value is `"/usr/local/info/octave.info"'.
`LOADPATH'
A colon separated list of directories in which to search for
function files. *Note Functions and Scripts::. The value of
`LOADPATH' overrides the environment variable `OCTAVE_PATH'.
*Note Installation::.
`LOADPATH' is now handled in the same way as TeX handles
`TEXINPUTS'. If the path starts with `:', the standard path is
prepended to the value of `LOADPATH'. If it ends with `:' the
standard path is appended to the value of `LOADPATH'.
In addition, if any path element ends in `//', that directory and
all subdirectories it contains are searched recursively for
function files. This can result in a slight delay as Octave
caches the lists of files found in the `LOADPATH' the first time
Octave searches for a function. After that, searching is usually
much faster because Octave normally only needs to search its
internal cache for files.
To improve performance of recursive directory searching, it is
best for each directory that is to be searched recursively to
contain *either* additional subdirectories *or* function files, but
not a mixture of both.
*Note Organization of Functions:: for a description of the
function file directories that are distributed with Octave.
`OCTAVE_VERSION'
The version number of Octave, as a string.
`PAGER'
The default value is `"less"', or, if `less' is not available on
your system, `"more"'. *Note Installation::, and *Note Input and
Output::.
`PS1'
The primary prompt string. When executing interactively, Octave
displays the primary prompt `PS1' when it is ready to read a
command. Octave allows the prompt to be customized by inserting a
number of backslash-escaped special characters that are decoded as
follows:
`\t'
The time.
`\d'
The date.
`\n'
Begins a new line by printing the equivalent of a carriage
return followed by a line feed.
`\s'
The name of the program (usually just `octave').
`\w'
The current working directory.
`\W'
The basename of the current working directory.
`\u'
The username of the current user.
`\h'
The hostname.
`\#'
The command number of this command, counting from when Octave
starts.
`\!'
The history number of this command. This differs from `\#'
by the number of commands in the history list when Octave
starts.
`\$'
If the effective UID is 0, a #, otherwise a $.
`\nnn'
The character whose character code in octal is `nnn'.
`\\'
A backslash.
The default value of `PS1' is `"\s:\#> "'. To change it, use a
command like
octave:13> PS1 = "\\u@\\h> "
which will result in the prompt `boris@kremvax> ' for the user
`boris' logged in on the host `kremvax'. Note that two
backslashes are required to enter a backslash into a string.
*Note String Constants::.
`PS2'
The secondary prompt string, which is printed when Octave is
expecting additional input to complete a command. For example,
when defining a function over several lines, Octave will print the
value of `PS1' at the beginning of each line after the first.
Octave allows `PS2' to be customized in the same way as `PS1'.
The default value of `PS2' is `"> "'.
`PS4'
If Octave is invoked with the `--echo-input' option, the value of
`PS4' is printed before each line of input that is echoed. Octave
allows `PS4' to be customized in the same way as `PS1'. The
default value of `PS4' is `"+ "'. *Note Invoking Octave::, for a
description of `--echo-input'.
`automatic_replot'
If this variable is `"true"', Octave will automatically send a
`replot' command to `gnuplot' each time the plot changes. Since
this is fairly inefficient, the default value is `"false"'.
`default_return_value'
The value given to otherwise unitialized return values if
`define_all_return_values' is `"true"'. The default value is `[]'.
`default_save_format'
Specify the default format used by the `save' command. Options are
`"ascii"', `"binary"', `"mat-binary"', or `"float-binary"'. The
default value is `ascii'.
`define_all_return_values'
If the value of `define_all_return_values' is `"true"', Octave
will substitute the value specified by `default_return_value' for
any return values that remain undefined when a function returns.
The default value is `"false"'.
`do_fortran_indexing'
If the value of `do_fortran_indexing' is `"true"', Octave allows
you to select elements of a two-dimensional matrix using a single
index by treating the matrix as a single vector created from the
columns of the matrix. The default value is `"false"'.
`empty_list_elements_ok'
This variable controls whether Octave ignores empty matrices in a
matrix list.
For example, if the value of `empty_list_elements_ok' is `"true"',
Octave will ignore the empty matrices in the expression
a = [1, [], 3, [], 5]
and the variable `a' will be assigned the value `[ 1 3 5 ]'.
The default value is `"warn"'.
`gnuplot_binary'
The name of the program invoked by the plot command. The default
value is `"gnuplot"'. *Note Installation::.
`ignore_function_time_stamp'
This variable variable can be used to prevent Octave from making
the system call `stat()' each time it looks up functions defined in
function files. If `ignore_function_time_stamp' to `"system"',
Octave will not automatically recompile function files in
subdirectories of `/usr/local/lib/1.1.1' if they have changed
since they were last compiled, but will recompile other function
files in the `LOADPATH' if they change. If set to `"all"', Octave
will not recompile any function files unless their definitions are
removed with `clear'. For any other value of
`ignore_function_time_stamp', Octave will always check to see if
functions defined in function files need to recompiled. The
default value of `ignore_function_time_stamp' is `"system"'.
`implicit_str_to_num_ok'
If the value of `implicit_str_to_num_ok' is `"true"', implicit
conversions of strings to their numeric ASCII equivalents are
allowed. Otherwise, an error message is printed and control is
returned to the top level. The default value is `"false"'.
`ok_to_lose_imaginary_part'
If the value of `ok_to_lose_imaginary_part' is `"true"', implicit
conversions of complex numbers to real numbers are allowed (for
example, by fsolve). If the value is `"warn"', the conversion is
allowed, but a warning is printed. Otherwise, an error message is
printed and control is returned to the top level. The default
value is `"warn"'.
`output_max_field_width'
This variable specifies the maximum width of a numeric output
field. The default value is 10.
It is possible to achieve a wide range of output styles by using
different values of `output_precision' and
`output_max_field_width'. Reasonable combinations can be set using
the `format' function. *Note Basic Input and Output::.
`output_precision'
This variable specifies the minimum number of significant figures
to display for numeric output. The default value is 5.
It is possible to achieve a wide range of output styles by using
different values of `output_precision' and
`output_max_field_width'. Reasonable combinations can be set using
the `format' function. *Note Basic Input and Output::.
`page_screen_output'
If the value of `page_screen_output' is `"true"', all output
intended for the screen that is longer than one page is sent
through a pager. This allows you to view one screenful at a time.
Some pagers (such as `less'--see *Note Installation::) are also
capable of moving backward on the output. The default value is
`"true"'. *Note Input and Output::.
You can choose the program to use as the pager by setting the
variable `PAGER'.
`prefer_column_vectors'
If `prefer_column_vectors' is `"true"', operations like
for i = 1:10
a (i) = i;
endfor
(for `a' previously undefined) produce column vectors.
Otherwise, row vectors are preferred. The default value is
`"false"'.
If a variable is already defined to be a vector (a matrix with a
single row or column), the original orientation is respected,
regardless of the value of `prefer_column_vectors'.
`prefer_zero_one_indexing'
If the value of `prefer_zero_one_indexing' is `"true"', Octave
will perform zero-one style indexing when there is a conflict with
the normal indexing rules. *Note Index Expressions::. For
example, given a matrix
a = [1, 2, 3, 4]
with `prefer_zero_one_indexing' is set to `"true"', the expression
a ([1, 1, 1, 1])
results in the matrix `[ 1 2 3 4 ]'. If the value of
`prefer_zero_one_indexing' set to `"false"', the result would be
the matrix `[ 1 1 1 1 ]'.
In the first case, Octave is selecting each element corresponding
to a `1' in the index vector. In the second, Octave is selecting
the first element multiple times.
The default value for `prefer_zero_one_indexing' is `"false"'.
`print_answer_id_name'
If the value of `print_answer_id_name' is `"true"', variable names
are printed along with the result. Otherwise, only the result
values are printed. The default value is `"true"'.
`print_empty_dimensions'
If the value of `print_empty_dimensions' is `"true"', the
dimensions of empty matrices are printed along with the empty
matrix symbol, `[]'. For example, the expression
zeros (3, 0)
will print
ans =
[](3x0)
`propagate_empty_matrices'
If the value of `propagate_empty_matrices' is `"true"', functions
like `inverse' and `svd' will return an empty matrix if they are
given one as an argument. The default value is `"true"'. *Note
Empty Matrices::.
`resize_on_range_error'
If the value of `resize_on_range_error' is `"true"', expressions
like
for i = 1:10
a (i) = i;
endfor
(for `a' previously undefined) result in the variable `a' being
resized to be just large enough to hold the new value. Otherwise
uninitialized elements are set to zero. If the value of
`resize_on_range_error' is `"false"', an error message is printed
and control is returned to the top level. The default value is
`"true"'.
`return_last_computed_value'
If the value of `return_last_computed_value' is true, and a
function is defined without explicitly specifying a return value,
the function will return the value of the last expression.
Otherwise, no value will be returned. The default value is
`"false"'.
For example, the function
function f ()
2 + 2;
endfunction
will either return nothing, if `return_last_computed_value' is
`"false"', or 4, if it is `"true"'.
`save_precision'
This variable specifies the number of digits to keep when saving
data with the `save' command. The default value is 17.
`silent_functions'
If the value of `silent_functions' is `"true"', internal output
from a function is suppressed. Otherwise, the results of
expressions within a function body that are not terminated with a
semicolon will have their values printed. The default value is
`"false"'.
For example, if the function
function f ()
2 + 2
endfunction
is executed, Octave will either print `ans = 4' or nothing
depending on the value of `silent_functions'.
`split_long_rows'
For large matrices, Octave may not be able to display all the
columns of a given row on one line of your screen. This can
result in missing information or output that is nearly impossible
to decipher, depending on whether your terminal truncates or wraps
long lines.
If the value of `split_long_rows' is `"true"', Octave will display
the matrix in a series of smaller pieces, each of which can fit
within the limits of your terminal width. Each set of rows is
labeled so that you can easily see which columns are currently
being displayed. For example:
octave:13> rand (2, 9)
ans =
Columns 1 through 7:
0.92205 0.72628 0.99841 0.62590 0.82422 0.77486 0.30258
0.15999 0.79484 0.75443 0.86995 0.91430 0.23980 0.64591
Columns 8 and 9:
0.08894 0.13266
0.28008 0.65575
The default value of `split_long_rows' is `"true"'.
`suppress_verbose_help_message'
If the value of `suppress_verbose_help_message' is `"true"',
Octave will not add additional help information to the end of the
output from the `help' command and usage messages for built-in
commands.
`treat_neg_dim_as_zero'
If the value of `treat_neg_dim_as_zero' is `"true"', expressions
like
eye (-1)
produce an empty matrix (i.e., row and column dimensions are zero).
Otherwise, an error message is printed and control is returned to
the top level. The default value is `"false"'.
`warn_assign_as_truth_value'
If the value of `warn_assign_as_truth_value' is `"true"', a
warning is issued for statements like
if (s = t)
...
since such statements are not common, and it is likely that the
intent was to write
if (s == t)
...
instead.
There are times when it is useful to write code that contains
assignments within the condition of a `while' or `if' statement.
For example, statements like
while (c = getc())
...
are common in C programming.
It is possible to avoid all warnings about such statements by
setting `warn_assign_as_truth_value' to `"false"', but that may
also let real errors like
if (x = 1) # intended to test (x == 1)!
...
slip by.
In such cases, it is possible suppress errors for specific
statements by writing them with an extra set of parentheses. For
example, writing the previous example as
while ((c = getc()))
...
will prevent the warning from being printed for this statement,
while allowing Octave to warn about other assignments used in
conditional contexts.
The default value of `warn_assign_as_truth_value' is `"true"'.
`warn_comma_in_global_decl'
If the value of `warn_comma_in_global_decl' is `"true"', a warning
is issued for statements like
global a = 1, b
which makes the variables `a' and `b' global and assigns the value
1 to the variable `a', because in this context, the comma is not
interpreted as a statement separator.
The default value of `warn_comma_in_global_decl' is `"true"'.
`warn_divide_by_zero'
If the value of `warn_divide_by_zero' is `"true"', a warning is
issued when Octave encounters a division by zero. If the value is
`"false"', the warning is omitted. The default value is `"true"'.
`warn_function_name_clash'
If the value of `warn_function_name_clash' is `"true"', a warning
is issued when Octave finds that the name of a function defined in
a function file differs from the name of the file. If the value is
`"false"', the warning is omitted. The default value is `"true"'.
`whitespace_in_literal_matrix'
This variable allows some control over how Octave decides to
convert spaces to commas and semicolons in matrix expressions like
`[m (1)]' or
[ 1, 2,
3, 4 ]
If the value of `whitespace_in_literal_matrix' is `"ignore"',
Octave will never insert a comma or a semicolon in a literal matrix
list. For example, the expression `[1 2]' will result in an error
instead of being treated the same as `[1, 2]', and the expression
[ 1, 2,
3, 4 ]
will result in the vector [1 2 3 4] instead of a matrix.
If the value of `whitespace_in_literal_matrix' is `"traditional"',
Octave will convert spaces to a comma between identifiers and `('.
For example, given the matrix
m = [3 2]
the expression
[m (1)]
will be parsed as
[m, (1)]
and will result in
[3 2 1]
and the expression
[ 1, 2,
3, 4 ]
will result in a matrix because the newline character is converted
to a semicolon (row separator) even though there is a comma at the
end of the first line (trailing commas or semicolons are ignored).
This is apparently how MATLAB behaves.
Any other value for `whitespace_in_literal_matrix' results in
behavior that is the same as traditional, except that Octave does
not convert spaces to a comma between identifiers and `('. For
example, the expression
[m (1)]
will produce `3'. This is the way Octave has always behaved.
File: octave.info, Node: Other Built-in Variables, Next: Summary of Preference Variables, Prev: User Preferences, Up: Built-in Variables
Other Built-in Variables
========================
In addition to these variables, there are two other special built-in
variables whose values are automatically updated.
`ans'
This variable holds the most recently computed result that was not
explicitly assigned to a variable. For example, after the
expression
3^2 + 4^2
is evaluated, the value of `ans' is `25'.
`PWD'
The current working directory. The value of `PWD' is updated each
time the current working directory is changed with the `cd'
command. *Note System Utilities::.
File: octave.info, Node: Summary of Preference Variables, Prev: Other Built-in Variables, Up: Built-in Variables
Summary of Preference Variables
===============================
Here is a summary of all of Octave's preference variables and their
default values. In the following table `OCTAVE_HOME' stands for the
root directory where Octave is installed, and `VERSION' stands for the
Octave version number.
EDITOR EDITOR environment variable, or "vi"
INFO_FILE "OCTAVE_HOME/info/octave.info"
LOADPATH OCTAVE_PATH environment variable, or
".:OCTAVE_HOME/lib/VERSION"
PAGER "less", or "more"
PS1 "\s:\#> "
PS2 "> "
PS4 "+ "
automatic_replot "false"
default_return_value []
do_fortran_indexing "false"
define_all_return_values "false"
empty_list_elements_ok "warn"
gnuplot_binary "gnuplot"
ignore_function_time_stamp "system"
implicit_str_to_num_ok "false"
ok_to_lose_imaginary_part "warn"
output_max_field_width 10
output_precision 5
page_screen_output "true"
prefer_column_vectors "false"
prefer_zero_one_indexing "false"
print_answer_id_name "true"
print_empty_dimensions "true"
resize_on_range_error "true"
return_last_computed_value "false"
save_precision 17
silent_functions "false"
split_long_rows "true"
suppress_verbose_help_message "true"
treat_neg_dim_as_zero "false"
warn_assign_as_truth_value "true"
warn_comma_in_global_decl "true"
warn_divide_by_zero "true"
warn_function_name_clash "true"
whitespace_in_literal_matrix ""
File: octave.info, Node: Arithmetic, Next: Linear Algebra, Prev: Built-in Variables, Up: Top
Arithmetic
**********
Unless otherwise noted, all of the functions described in this
chapter will work for real and complex scalar or matrix arguments.
* Menu:
* Utility Functions::
* Complex Arithmetic::
* Trigonometry::
* Sums and Products::
* Special Functions::
File: octave.info, Node: Utility Functions, Next: Complex Arithmetic, Prev: Arithmetic, Up: Arithmetic
Utility Functions
=================
The following functions are available for working with complex
numbers. Each expects a single argument, and given a matrix, they work
on an element by element basis.
`ceil (X)'
Return the smallest integer not less than X. If X is complex,
return `ceil (real (X)) + ceil (imag (X)) * I'.
`floor (X)'
Return the largest integer not greater than X. If X is complex,
return `floor (real (X)) + floor (imag (X)) * I'.
`fix (X)'
Truncate X toward zero. If X is complex, return `fix (real (X)) +
fix (imag (X)) * I'.
`round (X)'
Return the integer nearest to X. If X is complex, return `round
(real (X)) + round (imag (X)) * I'.
`sign (X)'
Compute the "signum" function, which is defined as
-1, x < 0;
sign (x) = 0, x = 0;
1, x > 0.
For complex arguments, `sign' returns `x ./ abs (X)'.
`exp (X)'
Compute the exponential of X. To compute the matrix exponential,
see *Note Linear Algebra::.
`gcd (X, `...')'
Compute the greatest common divisor of the elements of X, or the
list of all the arguments. For example,
gcd (a1, ..., ak)
is the same as
gcd ([a1, ..., ak])
An optional second return value, V contains an integer vector such
that
g = v(1) * a(k) + ... + v(k) * a(k)
`lcm (X, `...')'
Compute the least common multiple of the elements elements of X, or
the list of all the arguments. For example,
lcm (a1, ..., ak)
is the same as
lcm ([a1, ..., ak]).
`log (X)'
Compute the natural logarithm of X. To compute the matrix
logarithm, see *Note Linear Algebra::.
`log2 (X)'
Compute the base-2 logarithm of X.
`log10 (X)'
Compute the base-10 logarithm of X.
`sqrt (X)'
Compute the square root of X. To compute the matrix square root,
see *Note Linear Algebra::.
`max (X)'
For a vector argument, return the maximum value. For a matrix
argument, return the maximum value from each column, as a row
vector. Thus,
max (max (X))
returns the largest element of X.
For complex arguments, the magnitude of the elements are used for
comparison.
`min (X)'
Like `max', but return the minimum value.
`rem (X, Y)'
Return the remainder of `X / Y', computed using the expression
x - y .* fix (x ./ y)
An error message is printed if the dimensions of the arguments do
not agree, or if either of the arguments is complex.
File: octave.info, Node: Complex Arithmetic, Next: Trigonometry, Prev: Utility Functions, Up: Arithmetic
Complex Arithmetic
==================
The following functions are available for working with complex
numbers. Each expects a single argument. Given a matrix they work on
an element by element basis.
`abs (X)'
Compute the magnitude of X.
`angle (X)'
`arg (X)'
Compute the argument of X.
`conj (X)'
Return the complex conjugate of X.
`imag (X)'
Return the imaginary part of X.
`real (X)'
Return the real part of X.
File: octave.info, Node: Trigonometry, Next: Sums and Products, Prev: Complex Arithmetic, Up: Arithmetic
Trigonometry
============
Octave provides the following trigonometric functions:
sin asin sinh asinh
cos acos cosh acosh
tan atan tanh atanh
sec asec sech asech
csc acsc csch acsch
cot acot coth acoth
Each of these functions expect a single argument. For matrix arguments,
they work on an element by element basis. For example, the expression
sin ([1, 2; 3, 4])
produces
ans =
0.84147 0.90930
0.14112 -0.75680
`atan2 (Y, X)'
File: octave.info, Node: Sums and Products, Next: Special Functions, Prev: Trigonometry, Up: Arithmetic
Sums and Products
=================
`sum (X)'
For a vector argument, return the sum of all the elements. For a
matrix argument, return the sum of the elements in each column, as
a row vector. The sum of an empty matrix is 0 if it has no
columns, or a vector of zeros if it has no rows (*note Empty
Matrices::.).
`prod (X)'
For a vector argument, return the product of all the elements.
For a matrix argument, return the product of the elements in each
column, as a row vector. The product of an empty matrix is 1 if
it has no columns, or a vector of ones if it has no rows (*note
Empty Matrices::.).
`cumsum (X)'
Return the cumulative sum of each column of X. For example,
cumsum ([1, 2; 3, 4])
produces
ans =
1 2
4 6
`cumprod (X)'
Return the cumulative product of each column of X. For example,
cumprod ([1, 2; 3, 4])
produces
ans =
1 2
3 8
`sumsq (X)'
For a vector argument, return the sum of the squares of all the
elements. For a matrix argument, return the sum of the squares of
the elements in each column, as a row vector.
File: octave.info, Node: Special Functions, Prev: Sums and Products, Up: Arithmetic
Special Functions
=================
`beta'
Returns the beta function,
beta (a, b) = gamma (a) * gamma (b) / gamma (a + b).
`betai (A, B, X)'
Returns the incomplete beta function,
x
/
betai (a, b, x) = beta (a, b)^(-1) | t^(a-1) (1-t)^(b-1) dt.
/
t=0
If x has more than one component, both A and B must be scalars.
If X is a scalar, A and B must be of compatible dimensions.
`erf'
Computes the error function,
z
/
erf (z) = (2/sqrt (pi)) | e^(-t^2) dt
/
t=0
`erfc (Z)'
Computes the complementary error function, `1 - erf (Z)'.
`erfinv'
Computes the inverse of the error function.
`gamma (Z)'
Computes the gamma function,
infinity
/
gamma (z) = | t^(z-1) exp (-t) dt.
/
t=0
`gammai (A, X)'
Computes the incomplete gamma function,
x
1 /
gammai (a, x) = --------- | exp (-t) t^(a-1) dt
gamma (a) /
t=0
If A is scalar, then `gammai (A, X)' is returned for each element
of X and vice versa.
If neither A nor X is scalar, the sizes of A and X must agree, and
GAMMAI is applied element-by-element.
`lgamma'
Returns the natural logarithm of the gamma function.
File: octave.info, Node: Linear Algebra, Next: Polynomial Manipulations, Prev: Arithmetic, Up: Top
Linear Algebra
**************
This chapter documents the linear algebra functions of Octave.
Reference material for many of these options may be found in Golub and
Van Loan, `Matrix Computations, 2nd Ed.', Johns Hopkins, 1989, and in
`LAPACK Users' Guide', SIAM, 1992.
* Menu:
* Basic Matrix Functions::
* Matrix Factorizations::
* Functions of a Matrix::
File: octave.info, Node: Basic Matrix Functions, Next: Matrix Factorizations, Prev: Linear Algebra, Up: Linear Algebra
Basic Matrix Functions
======================
`balance'
aa = balance (a, opt)
[dd, aa] = balance(a, opt)
[dd, aa] = balance (a, opt)
[cc, dd, aa, bb] = balance (a, b, opt)
`[dd, aa] = balance (a)' returns `aa = dd \ a * dd'. `aa' is a
matrix whose row/column norms are roughly equal in magnitude, and
`dd' = `p * d', where `p' is a permutation matrix and `d' is a
diagonal matrix of powers of two. This allows the equilibration
to be computed without roundoff. Results of eigenvalue
calculation are typically improved by balancing first.
`[cc, dd, aa, bb] = balance (a, b)' returns `aa' (`bb') `=
cc*a*dd (cc*b*dd)'), where `aa' and `bb' have non-zero elements of
approximately the same magnitude and `cc' and `dd' are permuted
diagonal matrices as in `dd' for the algebraic eigenvalue problem.
The eigenvalue balancing option `opt' is selected as follows:
`"N"', `"n"'
No balancing; arguments copied, transformation(s) set to
identity.
`"P"', `"p"'
Permute argument(s) to isolate eigenvalues where possible.
`"S"', `"s"'
Scale to improve accuracy of computed eigenvalues.
`"B"', `"b"'
Permute and scale, in that order. Rows/columns of a (and b)
that are isolated by permutation are not scaled. This is the
default behavior.
Algebraic eigenvalue balancing uses standard LAPACK routines.
Generalized eigenvalue problem balancing uses Ward's algorithm
(SIAM Journal on Scientific and Statistical Computing, 1981).
`cond (A)'
Compute the (two-norm) condition number of a matrix. `cond (a)' is
defined as `norm (a) * norm (inv (a))', and is computed via a
singular value decomposition.
`det (A)'
Compute the determinant of A using LINPACK.
`eig'
= eig (a)
[v, lambda] = eig (a)
The eigenvalues (and eigenvectors) of a matrix are computed in a
several step process which begins with a Hessenberg decomposition
(see `hess'), followed by a Schur decomposition (see `schur'), from
which the eigenvalues are apparent. The eigenvectors, when
desired, are computed by further manipulations of the Schur
decomposition.
See also: `hess', `schur'.
`givens'
[c, s] = givens (x, y)
G = givens (x, y)
`G = givens(x, y)' returns a 2 x 2 orthogonal matrix `G = [c s;
-s' c]' such that `G [x; y] = [*; 0]' (x, y scalars)
`inv (A)'
`inverse (A)'
Compute the inverse of the square matrix A.
`norm (A, P)'
Compute the p-norm of the matrix A. If the second argument is
missing, `p = 2' is assumed.
If A is a matrix:
P = `1'
1-norm, the largest column sum of A.
P = `2'
Largest singular value of A.
P = `Inf'
Infinity norm, the largest row sum of A.
P = `"fro"'
Frobenius norm of A, `sqrt (sum (diag (a' * a)))'.
If A is a vector or a scalar:
P = `Inf'
`max (abs (a))'.
P = `-Inf'
`min (abs (a))'.
other
p-norm of A, `(sum (abs (a) .^ p)) ^ (1/p)'.
`null (A, TOL)'
Returns an orthonormal basis of the null space of A.
The dimension of the null space is taken as the number of singular
values of A not greater than TOL. If the argument TOL is missing,
it is computed as
max (size (a)) * max (svd (a)) * eps
`orth (A, TOL)'
Returns an orthonormal basis of the range of A.
The dimension of the range space is taken as the number of singular
values of A greater than TOL. If the argument TOL is missing, it
is computed as
max (size (a)) * max (svd (a)) * eps
`pinv (X, TOL)'
Returns the pseudoinverse of X. Singular values less than TOL are
ignored.
If the second argument is omitted, it is assumed that
tol = max (size (X)) * sigma_max (X) * eps,
where `sigma_max (X)' is the maximal singular value of X.
`rank (A, TOL)'
Compute the rank of A, using the singular value decomposition.
The rank is taken to be the number of singular values of A that
are greater than the specified tolerance TOL. If the second
argument is omitted, it is taken to be
tol = max (size (a)) * sigma (1) * eps;
where `eps' is machine precision and `sigma' is the largest
singular value of `a'.
`trace (A)'
Compute the trace of A, `sum (diag (a))'.
File: octave.info, Node: Matrix Factorizations, Next: Functions of a Matrix, Prev: Basic Matrix Functions, Up: Linear Algebra
Matrix Factorizations
=====================
`chol (A)'
Compute the Cholesky factor, R, of the symmetric positive definite
matrix A, where
r' * r = a.
`hess (A)'
Compute the Hessenberg decomposition of the matrix A.
h = hess (a)
[p, h] = hess (a)
The Hessenberg decomposition is usually used as the first step in
an eigenvalue computation, but has other applications as well (see
Golub, Nash, and Van Loan, IEEE Transactions on Automatic Control,
1979. The Hessenberg decomposition is `p * h * p' = a' where `p'
is a square unitary matrix (`p' * p = I', using complex-conjugate
transposition) and `h' is upper Hessenberg (`i >= j+1 => h (i, j)
= 0').
`lu (A)'
Compute the LU decomposition of A, using subroutines from LAPACK.
The result is returned in a permuted form, according to the
optional return value P. For example, given the matrix `a = [1,
2; 3, 4]',
[l, u, p] = lu (a)
returns
l =
1.00000 0.00000
0.33333 1.00000
u =
3.00000 4.00000
0.00000 0.66667
p =
0 1
1 0
`qr (A)'
Compute the QR factorization of A, using standard LAPACK
subroutines. For example, given the matrix `a = [1, 2; 3, 4]',
[q, r] = qr (a)
returns
q =
-0.31623 -0.94868
-0.94868 0.31623
r =
-3.16228 -4.42719
0.00000 -0.63246
The `qr' factorization has applications in the solution of least
squares problems
`min norm(A x - b)'
for overdetermined systems of equations (i.e., `a' is a tall,
thin matrix). The `qr' factorization is `q * r = a' where `q' is
an orthogonal matrix and `r' is upper triangular.
The permuted `qr' factorization `[q, r, pi] = qr (a)' forms the
`qr' factorization such that the diagonal entries of `r' are
decreasing in magnitude order. For example, given the matrix `a =
[1, 2; 3, 4]',
[q, r, pi] = qr(a)
returns
q =
-0.44721 -0.89443
-0.89443 0.44721
r =
-4.47214 -3.13050
0.00000 0.44721
p =
0 1
1 0
The permuted `qr' factorization `[q, r, pi] = qr (a)'
factorization allows the construction of an orthogonal basis of
`span (a)'.
`schur'
[u, s] = schur (a, opt) opt = "a", "d", or "u"
s = schur (a)
The Schur decomposition is used to compute eigenvalues of a square
matrix, and has applications in the solution of algebraic Riccati
equations in control (see `are' and `dare'). `schur' always
returns `s = u' * a * u' where `u' is a unitary matrix (`u'* u'
is identity) and `s' is upper triangular. The eigenvalues of `a'
(and `s') are the diagonal elements of `s' If the matrix `a' is
real, then the real Schur decomposition is computed, in which the
matrix `u' is orthogonal and `s' is block upper triangular with
blocks of size at most `2 x 2' blocks along the diagonal. The
diagonal elements of `s' (or the eigenvalues of the `2 x 2'
blocks, when appropriate) are the eigenvalues of `a' and `s'.
The eigenvalues are optionally ordered along the diagonal
according to the value of `opt'. `opt = "a"' indicates that all
eigenvalues with negative real parts should be moved to the leading
block of `s' (used in `are'), `opt = "d"' indicates that all
eigenvalues with magnitude less than one should be moved to the
leading block of `s' (used in `dare'), and `opt = "u"', the
default, indicates that no ordering of eigenvalues should occur.
The leading `k' columns of `u' always span the `a'-invariant
subspace corresponding to the `k' leading eigenvalues of `s'.
`svd (A)'
Compute the singular value decomposition of A
a = u * sigma * v'
The function `svd' normally returns the vector of singular values.
If asked for three return values, it computes U, S, and V. For
example,
svd (hilb (3))
returns
ans =
1.4083189
0.1223271
0.0026873
and
[u, s, v] = svd (hilb (3))
returns
u =
-0.82704 0.54745 0.12766
-0.45986 -0.52829 -0.71375
-0.32330 -0.64901 0.68867
s =
1.40832 0.00000 0.00000
0.00000 0.12233 0.00000
0.00000 0.00000 0.00269
v =
-0.82704 0.54745 0.12766
-0.45986 -0.52829 -0.71375
-0.32330 -0.64901 0.68867
If given a second argument, `svd' returns an economy-sized
decomposition, eliminating the unnecessary rows or columns of U or
V.
File: octave.info, Node: Functions of a Matrix, Prev: Matrix Factorizations, Up: Linear Algebra
Functions of a Matrix
=====================
`expm'
expm (a)
Returns the exponential of a matrix, defined as the infinite
Taylor series
expm(a) = I + a + a^2/2! + a^3/3! + ...
The Taylor series is *not* the way to compute the matrix
exponential; see Moler and Van Loan, `Nineteen Dubious Ways to
Compute the Exponential of a Matrix', SIAM Review, 1978. This
routine uses Ward's diagonal Pade' approximation method with three
step preconditioning (SIAM Journal on Numerical Analysis, 1977).
Diagonal Pade' approximations are rational polynomials of matrices
-1
D (a) N (a)
whose Taylor series matches the first `2q+1' terms of the Taylor
series above; direct evaluation of the Taylor series (with the
same preconditioning steps) may be desirable in lieu of the Pade'
approximation when `Dq(a)' is ill-conditioned.
`logm (A)'
Compute the matrix logarithm of the square matrix A. Note that
this is currently implemented in terms of an eigenvalue expansion
and needs to be improved to be more robust.
`sqrtm (A)'
Compute the matrix square root of the square matrix A. Note that
this is currently implemented in terms of an eigenvalue expansion
and needs to be improved to be more robust.
`kron (A, B)'
Form the kronecker product of two matrices, defined block by block
as
x = [a(i, j) b]
`qzhess (A, B)'
Compute the Hessenberg-triangular decomposition of the matrix
pencil `(a, b)'. This function returns `aa = q * a * z', `bb = q
* b * z', `q', `z' orthogonal. For example,
[aa, bb, q, z] = qzhess (a, b)
The Hessenberg-triangular decomposition is the first step in Moler
and Stewart's QZ decomposition algorithm. (The QZ decomposition
will be included in a later release of Octave.)
Algorithm taken from Golub and Van Loan, `Matrix Computations, 2nd
edition'.
`qzval (A, B)'
Compute generalized eigenvalues.
`syl (A, B, C)'
Solve the Sylvester equation
A X + X B + C = 0
using standard LAPACK subroutines.
File: octave.info, Node: Polynomial Manipulations, Next: Nonlinear Equations, Prev: Linear Algebra, Up: Top
Polynomial Manipulations
************************
In Octave, a polynomial is represented by its coefficients (arranged
in descending order). For example, a vector C of length N+1
corresponds to the following N-th order polynomial
p(x) = c(1) x^n + ... + c(n) x + c(n+1).
`compan (C)'
Compute the companion matrix corresponding to polynomial
coefficient vector C.
The companion matrix is
_ _
| -c(2)/c(1) -c(3)/c(1) ... -c(n)/c(1) -c(n+1)/c(1) |
| 1 0 ... 0 0 |
| 0 1 ... 0 0 |
A = | . . . . . |
| . . . . . |
| . . . . . |
|_ 0 0 ... 1 0 _|
The eigenvalues of the companion matrix are equal to the roots of
the polynomial.
`conv (A, B)'
Convolve two vectors.
`y = conv (a, b)' returns a vector of length equal to `length (a)
+ length (b) - 1'. If A and B are polynomial coefficient vectors,
`conv' returns the coefficients of the product polynomial.
`deconv (Y, A)'
Deconvolve two vectors.
`[b, r] = deconv (y, a)' solves for B and R such that `y = conv
(a, b) + r'.
If Y and A are polynomial coefficient vectors, B will contain the
coefficients of the polynomial quotient and R will be a remander
polynomial of lowest order.
`poly (A)'
If A is a square N-by-N matrix, `poly (A)' is the row vector of
the coefficients of `det (z * eye (n) - a)', the characteristic
polynomial of A. If X is a vector, `poly (X)' is a vector of
coefficients of the polynomial whose roots are the elements of X.
`polyderiv (C)'
Returns the coefficients of the derivative of the polynomial whose
coefficients are given by vector C.
`polyinteg (C)'
Returns the coefficients of the integral the polynomial whose
coefficients are represented by the vector C.
The constant of integration is set to zero.
`polyreduce (C)'
Reduces a polynomial coefficient vector to a minimum number of
terms by stripping off any leading zeros.
`polyval (C, X)'
Evaluate a polynomial.
`polyval (C, X)' will evaluate the polynomial at the specified
value of X.
If X is a vector or matrix, the polynomial is evaluated at each of
the elements of X.
`polyvalm (C, X)'
Evaluate a polynomial in the matrix sense.
`polyvalm (C, X)' will evaluate the polynomial in the matrix
sense, i.e. matrix multiplication is used instead of element by
element multiplication as is used in polyval.
The argument X must be a square matrix.
`residue (B, A, TOL)'
If B and A are vectors of polynomial coefficients, then residue
calculates the partial fraction expansion corresponding to the
ratio of the two polynomials.
The function `residue' returns R, P, K, and E, where the vector R
contains the residue terms, P contains the pole values, K contains
the coefficients of a direct polynomial term (if it exists) and E
is a vector containing the powers of the denominators in the
partial fraction terms.
Assuming B and A represent polynomials P (s) and Q(s) we have:
P(s) M r(m) N
---- = SUM ------------- + SUM k(n)*s^(N-n)
Q(s) m=1 (s-p(m))^e(m) n=1
where M is the number of poles (the length of the R, P, and E
vectors) and N is the length of the K vector.
The argument TOL is optional, and if not specified, a default
value of 0.001 is assumed. The tolerance value is used to
determine whether poles with small imaginary components are
declared real. It is also used to determine if two poles are
distinct. If the ratio of the imaginary part of a pole to the
real part is less than TOL, the imaginary part is discarded. If
two poles are farther apart than TOL they are distinct. For
example,
Example:
b = [1, 1, 1];
a = [1, -5, 8, -4];
[r, p, k, e] = residue (b, a)
returns
r = [-2, 7, 3]
p = [2, 2, 1]
k = [](0x0)
e = [1, 2, 1]
which implies the following partial fraction expansion
s^2 + s + 1 -2 7 3
------------------- = ----- + ------- + -----
s^3 - 5s^2 + 8s - 4 (s-2) (s-2)^2 (s-1)
`roots (V)'
For a vector V with N components, return the roots of the
polynomial
v(1) * z^(n-1) + ... + v(n-1) * z + v(n).
File: octave.info, Node: Nonlinear Equations, Next: Differential Equations, Prev: Polynomial Manipulations, Up: Top
Nonlinear Equations
*******************
Octave can solve sets of nonlinear equations of the form
F (x) = 0
using the function `fsolve', which is based on the MINPACK subroutine
`hybrd'.
For example, to solve the set of equations
-2x^2 + 3xy + 4 sin(y) = 6
3x^2 - 2xy^2 + 3 cos(x) = -4
you first need to write a function to compute the value of the given
function. For example:
function y = f (x)
y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6;
y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4;
endfunction
Then, call `fsolve' with a specified initial condition to find the
roots of the system of equations. For example, given the function `f'
defined above,
[x, info] = fsolve ("f", [1; 2])
results in the solution
x =
0.57983
2.54621
info = 1
A value of `info = 1' indicates that the solution has converged.
The function `perror' may be used to print English messages
corresponding to the numeric error codes. For example,
perror ("fsolve", 1)
prints
solution converged to requested tolerance
Tolerances and other options for `fsolve' may be specified using the
function `fsolve_options'.
File: octave.info, Node: Differential Equations, Next: Optimization, Prev: Nonlinear Equations, Up: Top
Differential Equations
**********************
Octave has two built-in functions for solving differential equations.
Both are based on reliable ODE solvers written in Fortran.
* Menu:
* Ordinary Differential Equations::
* Differential-Algebraic Equations::