# HG changeset patch
# User Jaroslav Hajek
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Other than bug fixes, there were no user-visible changes in version
-2.0.1.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- No warnings or error messages are printed while BODY is
- executing. If an error does occur during the execution of BODY,
- CLEANUP can access the text of the message that would have been
- printed in the builtin constant __error_text__. This is the same
- as eval (TRY, CATCH) (which may now also use __error_text__) but
- it is more efficient since the commands do not need to be parsed
- each time the TRY and CATCH statements are evaluated.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The following functions return a matrix of ones and zeros.
- Elements that are nonzero indicate that the condition was true for
- the corresponding character in the string array.
-
- These functions return new strings.
-
-
-
-
-
-
- The `clock' and `date' functions are now implemented in M-files
- using these basic functions.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Octave is a high-level language, primarily intended for numerical
-computations. It provides a convenient command line interface for
-solving linear and nonlinear problems numerically.
-
-Version 2.0.10 was released Friday February 6, 1998. Most bugs reported
-since the release of version 2.0 have been fixed.
-
-Version 2.0 was released Tuesday December 10, 1996. There are many
-new features including:
- News for Octave Version 1
-
-
-Summary of changes for version 1.1.1
-
-
- * New built-in variables, default_return_value and
- define_all_return_values.
-
- If define_all_return_values is set to "false", Octave does not do
- anything special for return values that are left undefined, and
- you will get an error message if you try to use them. For
- example, if the function
-
- function [x, y] = f ()
- y = 1;
- endfunction
-
- is called as
-
- octave:13> [a, b] = f ()
-
- Octave will print an error message for the attempt to assign an
- undefined value to `a'.
-
- This is incompatible with Matlab, which will define the return
- variable `x' to be the empty matrix. To get the Matlab-like
- behavior, you can set the variable define_all_return_values to
- "true" (the default is "false") and default_return_value to `[]'
- (the default). Then, any return values that remain undefined when
- the function returns will be initialized to `[]'.
-
- If the function is called without explicitly asking for an output,
- it will succeed. This behavior is compatible and unchanged from
- previous versions of Octave.
-
- * New built-in variable suppress_verbose_help_message. If set to
- "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. The default value is "false".
-
- * New built-in variable PS4 is used as the prefix of echoed input
- (enabled with the --echo-input (-x) option).
-
- * The function size() now accepts an optional second argument.
-
- * Output from `save - ...' now goes through the pager.
-
- * The break statement may also be used to exit a function, for
- compatibility with Matlab.
-
- * The directory tree for installing Octave is now closer to
- conforming with the current GNU standards.
-
- * More bug fixes.
-
-
-Summary of changes for version 1.1.0
-
-
- * Octave now requires g++ 2.6.3 or later. This change is necessary
- to make template instantiations cleaner, and to avoid having to
- have special cases in the code for earlier versions of gcc.
-
- * A new data structure type has been added. The implementation uses
- an associative array with indices limited to strings, but the
- syntax is more like C-style structures. here are some examples of
- using it.
-
- Elements of structures can be of any type, including structures:
-
- octave:1> x.a = 1;
- octave:2> x.b = [1, 2; 3, 4];
- octave:3> x.c = "string";
- octave:4> x
- x =
-
-
-
-Summary of changes for version 1.0
-
-
- * C-style I/O functions now handle files referenced by name or by
- number more consistently.
-
-
-Summary of changes for version 0.83
-
-
- * Loading global symbols should work now.
-
- * Clearing the screen doesn't reprint the prompt unnecessarily.
-
- * The operations
-
-Summary of changes for version 0.82
-
-
- * Octave now comes with a reference card.
-
- * The manual has been improved, but more work remains to be done.
-
- * The atanh function now works for complex arguments.
-
- * The asin, acos, acosh, and atanh functions now work properly when
- given real-valued arguments that produce complex results.
-
- * SEEK_SET, SEEK_CUR, and SEEK_END are now constants.
-
- * The `using' qualifier now works with gplot and gsplot when the
- data to plot is coming directly from a file.
-
- * The strcmp function now works correctly for empty strings.
-
- * Eliminated bogus parse error for M-files that don't end with `end'
- or `endfunction'.
-
- * For empty matrices with one nonzero dimension, the +, -, .*, and
- ./ operators now correctly preserve the dimension.
-
- * Octave no longer crashes if you type ^D at the beginning of a line
- in the middle of defining a loop or if statement.
-
- * On AIX systems, Back off on indexing DiagArray via Proxy class to
- avoid gcc (or possibly AIX assembler?) bug.
-
- * Various other bug and portability fixes.
-
-
-Summary of changes for version 0.81
-
-
- * Octave no longer dumps core if you try to define a function in
- your .octaverc file.
-
- * Fixed bug in Array class that resulted in bogus off-diagonal
- elements when computing eigenvalue and singular value
- decompositions.
-
- * Fixed bug that prevented lsode from working on the SPARCstation,
- at least with some versions of Sun's f77. This bug was introduced
- in 0.80, when I changed LSODE to allow the user to abort the
- integration from within the RHS function.
-
- * Fixed bug that prevented global attribute of variables from being
- saved with save(), and another that prevented load() from working
- at all.
-
-
-Summary of changes for version 0.80
-
-
- * I have started working on a manual for the C++ classes. At this
- point, it is little more than a list of function names. If you
- would like to volunteer to help work on this, please contact
- bug@octave.org.
-
- * The patterns accepted by the save and clear commands now work like
- file name globbing patterns instead of regular expressions. I
- apologize for any inconvenience this change may cause, but file
- name globbing seems like a more reasonable style of pattern
- matching for this purpose.
-
- * It is now possible to specify tolerances and other optional inputs
- for dassl, fsolve, lsode, npsol, qpsol, and quad. For each of
- these functions, there is a corresponding function X_options,
- which takes a keyword and value arguments. If invoked without any
- arguments, the X_options functions print a list of possible
- keywords and current values. For example,
-
- npsol_options ()
-
- prints a list of possible options with values, and
-
- npsol_options ("major print level", 10)
-
- sets the major print level to 10.
-
- The keyword match is not case sensitive, and the keywords may be
- abbreviated to the shortest unique match. For example,
-
- npsol_options ("ma p", 10)
-
- is equivalent to the statement shown above.
-
- * The new built-in variable save_precision can be used to set the
- number of digits preserved by the ASCII save command.
-
- * Assignment of [] now works in most cases to allow you to delete
- rows or columns of matrices and vectors. For example, given a
- 4x5 matrix A, the assignment
-
- A (3, :) = []
-
- deletes the third row of A, and the assignment
-
- A (:, 1:2:5) = []
-
- deletes the first, third, and fifth columns.
-
- * Variable argument lists. Octave now has a real mechanism for
- handling functions that take an unspecified number of arguments,
- so it is no longer necessary to place an upper bound on the number
- of optional arguments that a function can accept.
-
- Here is an example of a function that uses the new syntax to print
- a header followed by an unspecified number of values:
-
- function foo (heading, ...)
- disp (heading);
- va_start ();
- while (--nargin)
- disp (va_arg ());
- endwhile
- endfunction
-
- Note that the argument list must contain at least one named
- argument (this restriction may eventually be removed), and the
- ellipsis must appear as the last element of the argument list.
-
- Calling va_start() positions an internal pointer to the first
- unnamed argument and allows you to cycle through the arguments
- more than once. It is not necessary to call va_start() if you
- do not plan to cycle through the arguments more than once.
-
- * Recursive functions should work now.
-
- * The environment variable OCTAVE_PATH is now handled in the same
- way as TeX handles TEXINPUTS. If the path starts with `:', the
- standard path is prepended to the value obtained from the
- environment. If it ends with `:' the standard path is appended to
- the value obtained from the environment.
-
- * New functions, from Kurt Hornik (hornik@neuro.tuwien.ac.at) and
- the Department of Probability Theory and Statistics TU Wien,
- Austria:
-
- corrcoef -- corrcoef (X, Y) is the correlation between the i-th
- variable in X and the j-th variable in Y
- corrcoef (X) is corrcoef (X, X)
- cov -- cov (X, Y) is the covariance between the i-th
- variable in X and the j-th variable in Y
- cov (X) is cov (X, X)
- gls -- generalized least squares estimation
- kurtosis -- kurtosis(x) = N^(-1) std(x)^(-4) SUM_i (x(i)-mean(x))^4 - 3
- If x is a matrix, return the row vector containing
- the kurtosis of each column
- mahalanobis -- returns Mahalanobis' D-square distance between the
- multivariate samples X and Y, which must have the
- same number of components (columns), but may have
- a different number of observations (rows)
- ols -- ordinary least squares estimation
- pinv -- returns the pseudoinverse of X; singular values
- less than tol are ignored
- skewness -- skewness (x) = N^(-1) std(x)^(-3) SUM_i (x(i)-mean(x))^3
- if x is a matrix, return the row vector containing
- the skewness of each column
-
- * Errors in user-supplied functions called from dassl, fsolve,
- lsode, npsol, and quad are handled more gracefully.
-
- * Programming errors in the use of the C++ classes within Octave
- should no longer cause Octave to abort. Instead, Octave's error
- handler function is called and execution continues as best as is
- possible. This should result in eventually returning control to
- the top-level Octave prompt. (It would be nice to have a real
- exception handling mechanism...)
-
- * A number of memory leaks have been eliminated. Thanks to
- Fong Kin Fui
-
-Summary of changes for version 0.79
-
-
- * New control systems functions:
-
- dgram -- Returns the discrete controllability and observability gramian.
- dlqr -- Discrete linear quadratic regulator design.
- dlqe -- Discrete linear quadratic estimator (Kalman Filter) design.
- c2d -- Convert continuous system description to discrete time
- description assuming zero-order hold and given sample time.
-
- * The max (min) functions can now return the index of the max (min)
- value as a second return value.
-
-
-Summary of changes for version 0.78
-
-
- * Octave's handling of global variables has been completely
- rewritten. To access global variables inside a function, you must
- now declare them to be global within the function body. Likewise,
- if you do not declare a variable as global at the command line,
- you will not have access to it within a function, even if it is
- declared global there. For example, given the function
-
- function f ()
- global x = 1;
- y = 2;
- endfunction
-
- the global variable `x' is not visible at the top level until the
- command
-
- octave:13> global x
-
- has been evaluated, and the variable `y' remains local to the
- function f() even if it is declared global at the top level.
-
- Clearing a global variable at the top level will remove its global
- scope and leave it undefined. For example,
-
- octave:1> function f () # Define a function that accesses
- > global x; # the global variable `x'.
- > x
- > endfunction
- octave:2> global x = 1 # Give the variable `x' a value.
- octave:3> f () # Evaluating the function accesses the
- x = 1 # global `x'.
- octave:4> clear x # Remove `x' from global scope, clear value.
- octave:5> x = 2 # Define new local `x' at the top level
- x = 2
- octave:6> f # The global `x' is no longer defined.
- error: `x' undefined near line 1 column 25
- error: evaluating expression near line 1, column 25
- error: called from `f'
- octave:7> x # But the local one is.
- x = 2
-
- * The new function, `is_global (string)' returns 1 if the variable
- named by string is globally visible. Otherwise, returns 0.
-
- * The implementation of `who' has changed. It now accepts the
- following options:
-
- -b -builtins -- display info for built-in variables and functions
- -f -functions -- display info for currently compiled functions
- -v -variables -- display info for user variables
- -l -long -- display long info
-
- The long output looks like this:
-
- octave:5> who -l
-
- *** currently compiled functions:
-
- prot type rows cols name
- ==== ==== ==== ==== ====
- wd user function - - f
-
- *** local user variables:
-
- prot type rows cols name
- ==== ==== ==== ==== ====
- wd real scalar 1 1 y
-
- *** globally visible user variables:
-
- prot type rows cols name
- ==== ==== ==== ==== ====
- wd complex matrix 13 13 x
-
- where the first character of the `protection' field is `w' if the
- symbol can be redefined, and `-' if it has read-only access. The
- second character may be `d' if the symbol can be deleted, or `-'
- if the symbol cannot be cleared.
-
- * The new built-in variable ignore_function_time_stamp can be used
- to prevent Octave from calling stat() each time it looks up
- functions defined in M-files. If set to "system", Octave will not
- automatically recompile M-files in subdirectories of
- $OCTAVE_HOME/lib/VERSION if they have changed since they were last
- compiled, but will recompile other M-files in the LOADPATH if they
- change. If set to "all", Octave will not recompile any M-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 M-files need to recompiled. The
- default value of ignore_function_time_stamp is "system".
-
- * The new built-in variable EDITOR can be used to specify the editor
- for the edit_history command. It is set to the value of the
- environment variable EDITOR, or `vi' if EDITOR is not set, or is
- empty.
-
- * There is a new built-in variable, INFO_FILE, which is used as the
- location of the info file. Its initial value is
- $OCTAVE_HOME/info/octave.info, so `help -i' should now work
- provided that OCTAVE_HOME is set correctly, even if Octave is
- installed in a directory different from that specified at compile
- time.
-
- * There is a new command line option, --info-file FILE, that may be
- used to set Octave's idea of the location of the info file. It
- will override any value of OCTAVE_INFO_FILE found in the
- environment, but not any INFO_FILE="filename" commands found in
- the system or user startup files.
-
- * Octave's Info reader will now recognize gzipped files that have
- names ending in `.gz'.
-
- * The save command now accepts regular expressions as arguments.
- Note that these patterns are regular expressions, and do not work
- like filename globbing. For example, given the variables `a',
- `aa', and `a1', the command `save a*' saves `a' and `aa' but not
- `a1'. To match all variables beginning with `a', you must use an
- expression like `a.*' (match all sequences beginning with `a'
- followed by zero or more characters).
-
- * Line and column information is included in more error messages.
-
-
-Summary of changes for version 0.77
-
-
- * Improved help. The command `help -i topic' now uses the GNU Info
- browser to display help for the given topic directly from the
- Texinfo documenation.
-
- * New function: chol -- Cholesky factorization.
-
-
-Summary of changes for version 0.76
-
-
- * Better run-time error messages. Many now include line and column
- information indicating where the error occurred. Octave will also
- print a traceback for errors occurring inside functions. If you
- find error messages that could use improvement, or errors that
- Octave fails to catch, please send a bug report to
- bug@octave.org.
-
- * If gplot (or gsplot) is given a string to plot, and the string
- does not name a file, Octave will pass the string along to gnuplot
- directly. This allows commands like
-
- gplot "sin (x)" w l, data w p
-
- to work (assuming that data is a variable containing a matrix of
- values).
-
- * Long options (--help, --version, etc.) are supported.
-
-
-Summary of changes for version 0.75
-
-
- * The documentation is much more complete, but still could use a lot
- of work.
-
- * The history function now prints line numbers by default. The
- command `history -q' will omit them.
-
- * The clear function now accepts regular expressions.
-
- * If gplot (or gsplot) is given a string to plot, and the string
- names a file, Octave attempts to plot the contents of the file.
-
- * New functions:
-
- history:
-
- run_history -- run commands from the history list.
- edit_history -- edit commands from the history list with your
- favorite editor.
-
- linear algebra:
-
- balance -- Balancing for algebraic and generalized
- eigenvalue problems.
- givens -- Givens rotation.
- is_square -- Check to see if a matrix is square.
- qzhess -- QZ decomposition of the matrix pencil (a - lambda b).
- qzval -- Generalized eigenvalues for real matrices.
- syl -- Sylvester equation solver.
-
- control systems:
-
- is_symmetric -- Check to see if a matrix is symmetric.
- abcddim -- Check dimensions of linear dynamic system [A,B,C,D].
- is_controllable -- Check to see if [A,B,C,D] is controllable.
- is_observable -- Check to see if [A,B,C,D] is observable.
- are -- Solve algebraic Ricatti equation.
- dare -- Solve discrete-time algebraic Ricatti equation.
- lqe -- Kalman filter design for continuous linear system.
- lqr -- Linear Quadratic Regulator design.
- lyap -- Solve Lyapunov equation.
- dlyap -- Solve discrete Lyapunov equation.
- tzero -- Compute the transmission zeros of [A,B,C,D].
-
-
-Summary of changes for version 0.74
-
-
- * Formal parameters to functions are now always considered to be
- local variables, so things like
-
- global x = 0
- global y = 0
- function y = f (x) x = 1; y = x; end
- f (x)
-
- result in the function returning 1, with the global values of x
- and y unchanged.
-
- * Multiple assignment expressions are now allowed to take indices,
- so things like
-
- octave:13> [a([1,2],[3,4]), b([5,6],[7,8])] = lu ([1,2;3,4])
-
- will work correctly.
-
-
-Summary of changes for version 0.73
-
-
- * Saving and loading global variables works correctly now.
-
- * The save command no longer saves built-in variables.
-
- * Global variables are more reliable.
-
- * Matrices may now have one or both dimensions zero, so that
- operations on empty matrices are now handled more consistently.
-
- By default, dimensions of the empty matrix are now printed along
- with the empty matrix symbol, `[]'. For example:
-
- octave:13> zeros (3, 0)
- ans =
-
- [](3x0)
-
- The new variable `print_empty_dimensions' controls this behavior.
-
- See also Carl de Boor, An Empty Exercise, SIGNUM, Volume 25,
- pages 2--6, 1990, or C. N. Nett and W. M. Haddad, A
- System-Theoretic Appropriate Realization of the Empty Matrix
- Concept, IEEE Transactions on Automatic Control, Volume 38,
- Number 5, May 1993.
-
- * The right and left division operators `/' and `\' will now find a
- minimum norm solution if the system is not square, or if the
- coefficient matrix is singular.
-
- * New functions:
-
- hess -- Hessenberg decomposition
- schur -- Ordered Schur factorization
- perror -- print error messages corresponding to error codes
- returned from the functions fsolve, npsol, and qpsol
- (with others to possibly be added later).
-
- * Octave now prints a warning if it finds anything other than
- whitespace or comments after the final `end' or `endfunction'
- statement.
-
- * The bodies of functions, and the for, while, and if commands are
- now allowed to be empty.
-
- * Support for Gill and Murray's QPSOL has been added. Like NPSOL,
- QPSOL is not freely redistributable either, so you must obtain
- your own copy to be able to use this feature. More information
- about where to find QPSOL and NPSOL are in the file README.NLP.
-
-
-Summary of changes for version 0.72
-
-
- * For numeric output, columns are now lined up on the decimal point.
- (This requires libg++-2.3.1 or later to work correctly).
-
- * If octave is running interactively and the output intended for the
- screen is longer than one page and a pager is available, it is
- sent to the pager through a pipe. You may specify the program to
- use as the pager by setting the variable PAGER. PAGER may also
- specify a command pipeline.
-
- * Spaces are not always significant inside square brackets now, so
- commands like
-
- [ linspace (1, 2) ]
-
- will work. However, some possible sources of confusion remain
- because Octave tries (possibly too hard) to determine exactly what
- operation is intended from the context surrounding an operator.
- For example:
-
- -- In the command
-
- [ 1 - 1 ]
-
- the `-' is treated as a binary operator and the result is the
- scalar 0, but in the command
-
- [ 1 -1 ]
-
- the `-' is treated as a unary operator and the result is the
- vector [ 1 -1 ].
-
- -- In the command
-
- a = 1; [ 1 a' ]
-
- the single quote character `'' is treated as a transpose operator
- and the result is the vector [ 1 1 ], but in the command
-
- a = 1; [ 1 a ' ]
-
- an error message indicating an unterminated string constant is
- printed.
-
- * Assignments are just expressions now, so they are valid anywhere
- other expressions are. This means that things like
-
- if (a = n < m) ... endif
-
- are valid. This is parsed as: compare `n < m', assign the result
- to the variable `a', and use it as the test expression in the if
- statement.
-
- To help avoid errors where `=' has been used but `==' was
- intended, Octave issues a warning suggesting parenthesis around
- assignments used as truth values. You can suppress this warning
- by adding parenthesis, or by setting the value of the new built-in
- variable `warn_assign_as_truth_value' to 'false' (the default
- value is 'true').
-
- This is also true for multiple assignments, so expressions like
-
- [a, b, c] = [u, s, v] = expression
-
- are now possible. If the expression is a function, nargout is set
- to the number of arguments for the right-most assignment. The
- other assignments need not contain the same number of elements.
- Extra left hand side variables in an assignment become undefined.
-
- * The default line style for plots is now `lines' instead of
- `points'. To change it, use the `set data style STYLE' command.
-
- * New file handling and I/O functions:
-
- fopen -- open a file for reading or writing
- fclose -- close a file
- fflush -- flush output to a file
- fgets -- read characters from a file
- frewind -- set file position to the beginning of a file
- fseek -- set file position
- ftell -- tell file position
- freport -- print a report for all open files
- fscanf -- read from a file
- sscanf -- read from a string
- scanf -- read from the standard input
-
- * New built-in variables for file and I/O functions:
-
- stdin -- file number corresponding to the standard input stream.
- stdout -- file number corresponding to the standard output stream.
- stderr -- file number corresponding to the standard error stream.
-
- The following may be used as the final (optional) argument for
- fseek:
-
- SEEK_SET -- set position relative to the beginning of the file.
- SEEK_CUR -- set position relative to the current position.
- SEEK_END -- set position relative to the end of the file.
-
- * New function: setstr -- convert vectors or scalars to strings
- (doesn't work for matrices yet).
-
- * If possible, computer now prints the system type instead of
- always printing `Hi Dave, I'm a HAL-9000'.
-
- * Octave now properly saves and restores its internal state
- correctly in more places. Interrupting Octave while it is
- executing a script file no longer causes it to exit.
-
- * Octave now does tilde expansion on each element of the LOADPATH.
-
- * A number of memory leaks have been plugged.
-
- * Dependencies for C++ source files are now generated automatically
- by g++.
-
- * There is a new command line option, -p PATH, that may be used to
- set Octave's loadpath from the command line. It will override any
- value of OCTAVE_PATH found in the environment, but not any
- LOADPATH="path" commands found in the system or user startup files.
-
- * It is now possible to override Octave's default idea of the
- location of the system-wide startup file (usually stored in
- $(prefix)/lib/octave/octaverc) using the environment variable
- OCTAVE_HOME. If OCTAVE_HOME has a value, Octave will look for
- octaverc and its M-files in the directory $OCTAVE_HOME/lib/octave.
-
- This allows people who are using binary distributions (as is
- common with systems like Linux) to install the real octave binary
- in any directory (using a name like octave.bin) and then install
- a simple script like this
-
- #!/bin/sh
- OCTAVE_HOME=/foo/bar/baz
- export OCTAVE_HOME
- exec octave.bin
-
- to be invoked as octave.
-
-
-
-Summary of changes for version 0.71
-
-
- * Much improved plotting facility. With this release, Octave does
- not require a specially modified version of gnuplot, so gnuplot
- sources are no longer distributed with Octave. For a more
- detailed description of the new plotting features, see the file
- PLOTTING.
-
- * New plotting commands:
-
- plot -- 2D plots
- semilogx -- 2D semilog plot with logscale on the x axis
- semilogy -- 2D semilog plot with logscale on the y axis
- loglog -- 2D log-log plot
- mesh -- 3D mesh plot
- meshdom -- create matrices for 3D plotting from two vectors
- contour -- contour plots of 3D data
- bar -- create bar graphs
- stairs -- create stairstep plots
- polar -- 2D plots from theta-R data
- grid -- turn plot grid lines on or off
- xlabel, ylabel -- place labels on the x and y axes of 2D plots
- sombrero -- demonstrate 3D plotting
- gplot -- 2D plot command with gnuplot-like syntax
- gsplot -- 3D plot command with gnuplot-like syntax
- set -- set plot options with gnuplot syntax
- show -- show plot options with gnuplot syntax
- closeplot -- close stream to gnuplot process
- purge_tmp_files -- delete temporary files created by plot command
-
- * Other new commands:
-
- ls, dir -- print a directory listing
- shell_cmd -- execute shell commands
- keyboard -- get input from keyboard, useful for debugging
- menu -- display a menu of options and ask for input
- fft -- fast fourier transform
- ifft -- inverse fast fourier transform
-
- * Strings may be enclosed in either single or double quote
- characters. Double quote characters are not special within single
- quote strings, and single quotes are not special within double
- quote strings.
-
- * Command name completion now works for M-file names too.
-
- * Better help and usage messages for many functions.
-
- * Help is now available for functions defined in M-files. The first
- block of comments is taken as the text of the help message.
-
- * Numerous changes in preparation to support dynamic loading of
- object files with dld.
-
- * Bug fixes to make solving DAEs with dassl actually work.
-
- * The command `save file' now saves all variables in the named file.
-
- * If do_fortran_indexing is 'true', indexing a scalar with
- [1,1,1,...] (n times) replicates its value n times. The
- orientation of the resulting vector depends on the value of
- prefer_column_vectors.
-
- * Things like [[1,2][3,4]] no longer cause core dumps, and invalid
- input like [1,2;3,4,[5,6]] now produces a diagnositic message.
-
- * The cd, save, and load commands now do tilde expansion.
-
- * It's now possible to clear global variables and functions by name.
-
- * Use of clear inside functions is now a parse error.
-
-
-Summary of changes for version 0.70
-
-
- * Better parse error diagnostics. For interactive input, you get
- messages like
-
- octave:1> a = 3 + * 4;
-
- parse error:
-
- a = 3 + * 4;
- ^
-
- and for script files, the message includes the file name and input
- line number:
-
- octave:1> foo
-
- parse error near line 4 of file foo.m:
-
- a = 3 + * 4;
- ^
-
- * New built-in variable PS2 which is used as the secondary prompt.
- The default value is '> '.
-
- * New file, octave-mode.el, for editing Octave code with GNU Emacs.
- This is a modified version of Matthew R. Wette's matlab-mode.el.
-
- * Better support for missing math functions.
-
- * User preferences are now cached in a global struct so we don't
- have to do a symbol table lookup each time we need to know what
- they are. This should mean slightly improved performance for
- evaluating expressions.
-
-
-Summary of changes for version 0.69
-
-
- * Multiple assignments are now possible, so statements like
-
- a = b = c = 3;
- a = b = c = [1,2;3,4];
-
- or
-
- c = (a = (b = 2) * 3 + 4) * 5
-
- are legal, as are things that have even more bizarre effects, like
-
- a(4:6,4:6) = b(2:3,2:3) = [1,2;3,4];
-
- (try it).
-
- * Improved parsing of strings (but they still don't work as matrix
- elements).
-
- * An M-file may now either define a function or be a list of
- commands to execute.
-
- * Better detection and conditional compilation of IEEE functions
- isinf, finite, and isnan.
-
- * Replacements for acosh, asinh, atanh, and gamma from the BSD math
- library for those systems that don't have them.
-
-
-Summary of changes for version 0.68
-
-
- * New functions:
-
- eval -- evaluate a string as a sequence of Octave commands.
- input -- print a prompt and get user input.
-
-
-Summary of changes for version 0.67
-
-
- * New functions:
-
- find -- return the indices of nonzero elements.
-
- * Zero-one style indexing now works. For example,
-
- a = [1,2,3,4];
- b = a([1,0,0,1])
-
- sets b to the first and fourth elememnts of a.
-
- Zero-one style indexing also works for indexing the left hand side
- of an assignment. For example,
-
- a = rand (1,2;3,4);
- a([0,1],:) = [-1,-2]
-
- sets the second row of a to [-1 -2]
-
- The behavior for the ambiguous case
-
- a = [1,2,3,4];
- b = a([1,1,1,1]);
-
- is controlled by the new global variable `prefer_zero_one_indexing'.
- If this variable is equal to 'true', b will be set to [1 2 3 4].
- If it is false, b will be set to [1 1 1 1]. The default value is
- 'false'.
-
- * Using the new global variable `propagate_empty_matrices', it is
- possible to have unary andy binary operations on empty matrices
- return an empty matrix. The default value of this variable is
- 'warn', so that empty matrices are propagated but you get a
- warning. Some functions, like eig and svd have also been changed
- to handle this.
-
- * Empty matrices can be used in conditionals, but they always
- evaluate to `false'. With propagate_empty_matrices = 'true', both
- of the following expressions print 0:
-
- if [], 1, else 0, end
- if ~[], 1, else 0, end
-
- * Octave no longer converts input like `3.2 i' or `3 I' to complex
- constants directly because that causes problems inside square
- brackets, where spaces are important. This abbreviated notation
- *does* work if there isn't a space between the number and the i,
- I, j, or J.
-
-
-Summary of changes for version 0.66
-
-
- * Logical unary not operator (~ or !) now works for complex.
-
- * Left division works.
-
- * Right and left element by element division should work correctly
- now.
-
- * Numbers like .3e+2 are no longer errors.
-
- * Indexing a matrix with a complex value doesn't cause a core dump.
-
- * The min and max functions should work correctly for two arguments.
-
- * Improved (I hope!) configuration checks.
-
- * Octave is now installed as octave-M.N, where M and N are version
- numbers, and octave is a link to that file. This makes it
- possible to have more than one version of the interpreter installed.
-
-
-Summary of changes for version 0.63
-
-
- * The reshape function works again.
-
- * Octave now converts input like `3.2i' or `3 I' or `2.3e5 j' to be
- complex constants directly, rather than requiring an expression
- like `3.3 * i' to be evaluated.
-
-
-Summary of changes for version 0.61
-
-
- * Octave has been successfully compiled using gcc 2.3.3 and libg++ 2.3.
- on a 486 system running Linux.
-
- * The win_texas_lotto function is now called texas_lotto (it's a
- script file, and win_texas_lotto.m is too long for some Linux and
- System V systems).
-
-
-Summary of changes for version 0.57
-
-
- * The C-like formatted print functions printf, fprintf, and sprintf
- finally work.
-
-
-Summary of changes for version 0.56
-
-
- * By default, octave prints a short disclaimer when it starts.
- (You can suppress it by invoking octave with -q).
-
- * You can keep octave from reading your ~/.octaverc and .octaverc
- files by invoking it with -f.
-
- * When returning two values, eig now returns [v, d] instead of
- [lambda, v], where d is a diagonal matrix made from lambda.
-
- * The win_texas_lotto function now produces a sorted list.
-
- * New functions:
-
- expm -- matrix exponential.
- logm -- matrix logarithm.
-
-
-Summary of changes for version 0.55
-
-
- * The following (C-style) backslash escape sequences work in quoted
- strings (useful(?) with printf()):
-
- \a bell \r carriage return
- \b backspace \t horizontal tab
- \f formfeed \v vertical tab
- \n newline \\ backslash
-
- * Use of `...' at the end of a line will allow a statement to
- continue over more than one line.
-
- * The names `inf' and `nan' are now aliases for `Inf' and `NaN',
- respectively.
-
- * New functions:
-
- casesen -- print a warning if the luser tries to turn off case
- sensitivity.
- median -- find median value.
- norm -- compute the norm of a matrix.
- sort -- sort columns.
-
- * New variable, `silent_functions'. If silent_functions == 'true',
- the results of expressions are not printed even if they are not
- followed by a semicolon. The disp() and printf() functions still
- result in output. The default value for this variable is 'false'.
-
- * New variable `return_last_value_computed'. If it is 'true',
- functions defined in script files return the last value computed
- if a return value has not been explicitly declared. The default
- value for this variable is 'false'.
-
-
-Summary of changes for version 0.52
-
-
- * Name completion works for function and variable names currently in
- the symbol tables. Coming soon: completion for names of functions
- defined in script files but not yet compiled.
-
- * The initial value of do_fortran_indexing is now false, and the
- initial value of prefer_column_vectors is now true. Swap the
- values of these variables if you want behavior that is more like
- Matlab.
-
- * All script files check the number of input arguments before doing
- much real work.
-
- * The identifiers `i' and `j' are now also names for sqrt(-1).
- These symbols may be used for other purposes, but their original
- definition will reappear if they are cleared.
-
- * The symbol tables are now implemented with hash tables for faster
- searching.
-
- * A small amount of help is now available for most built-in
- operators, keywords and functions. Coming soon: help for script
- files.
-
- * Without any arguments, the help command now lists all known
- built-in operators, keywords and functions.
-
- * Generic parse errors are now signalled by `Eh, what's up doc?',
- which is closer to what Bugs actually says.
-
- * The who command now only prints variable names by default.
- Use the -fcn (or -fcns, or -functions) switch to print the names of
- built-in or currently compiled functions.
-
-
-Summary of changes for version 0.51
-
-
- * Major overhaul of array indexing.
-
- * The colloc function actually works now.
-
-
-Summary of changes for version 0.50
-
-
- * The lsode and dassl functions now return the states only,
- instead of the time and the states, so you must keep track of
- the corresponding times (this is easy though, because you have
- to specify a vector of desired output times anyway).
-
- * Solution of NLPs with NPSOL now works on the SPARC.
-
- * New keywords `endif', `endfor', `endfunction', `endif', and
- `endwhile', which allow for better diagnostics. The `end' keyword
- is still recognized. All script files have been changed to use
- these new keywords in place of `end'.
-
- * It is now possible to uninstall Octave by doing a `make uninstall'
- in the top level directory.
-
- * The Makefiles are much closer to conforming with GNU coding standards.
-
- * New functions:
-
- win_texas_lotto -- produce six unique random numbers between 1 and 50.
- quad -- numerical integration.
- lu -- LU factorization
- qr -- QR factorization
- dassl -- Solution of DAEs using DASSL.
-
- * New files:
-
- THANKS -- A list of people and organazations who have supported
- the development of Octave.
-
- NEWS -- This file, listing recent changes.
-
- * Help is now available at the gnuplot prompt.
-
-
-
-
diff -r 973f585cfdf2 -r e320928eeb3a WWW/NEWS-2.html
--- a/WWW/NEWS-2.html Fri Jan 22 10:21:33 2010 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,989 +0,0 @@
-
-
-
- News for Octave Version 2
-
-
-Summary of changes for version 2.0.10
-
-
-
-
-
- A*X + X*A' + C = 0
-
- instead of
-
- A'*X + X*A + C = 0
-
- To try to avoid confusion for people who are used to the way
- Octave behaved in previous versions, a warning is printed the
- first time lyap is called in a given session. To completely
- disable the warning, simply add
-
- global __disable_lyap_interface_change_warning__;
-
- to your ~/.octaverc file. The warning will eventually disappear
- for good in some future version of Octave.
-
- global g = 1
- global g = 2
-
- This is useful for initializing global variables that are used to
- maintain state information that is shared among several functions.
-Summary of changes for version 2.0.9
-
-This is a bug-fixing release, but there is one new user-visible
-feature:
-
-
-
-
-
- plot (x, y, "-*;sin(x);")
-
- plots y vs. x using the linespoints style and sets the title of
- the line in the key to be `sin(x)'
-Summary of changes for version 2.0.8
-
-This is a bug-fixing release. There are only a few new user-visible
-features.
-
-
-
-
-Summary of changes for version 2.0.7
-
-This is a bug-fixing release. There are no new user-visible features.
-
-Summary of changes for version 2.0.6
-
-This is primarily a bug-fixing release. There are only a few new
-user-visilbe features.
-
-
-
-
-Summary of changes for version 2.0.5
-
-
-
-
-Summary of changes for version 2.0.4
-
-
-
-
-Summary of changes for version 2.0.3
-
-
-
-
-
- x = zeros (1, 2);
- x(2) = 1
-
- still prints
-
- x =
-
- 0 1
-
-
- but an assignment like
-
- z = x(2) = 1
-
- sets z to 1 (not [ 0, 1 ] as in previous versions of Octave).
-Summary of changes for version 2.0.2
-
-
-
-
-
-
-
-
-Summary of changes for version 2.0.1
-
-Summary of changes for version 2.0
-
-
-
-
-
-
diff -r 973f585cfdf2 -r e320928eeb3a WWW/index.html
--- a/WWW/index.html Fri Jan 22 10:21:33 2010 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-
-
-
-
- A(i,j) = x
-
- where X is a scalar and the indices i and j define a matrix of
- elements now work as you would expect rather than giving an error.
- I am told that this is how Matlab 5.0 will behave when it is
- released.
-
- try
- BODY
- catch
- CLEANUP
- end_try_catch
-
- Where BODY and CLEANUP are both optional and may contain any
- Octave expressions or commands. The statements in CLEANUP are
- only executed if an error occurs in BODY.
-
-
- dassl_reltol = dassl_options ("relative tolerance");
-
-
- PS1 = ">> "
- PS2 = ""
- beep_on_error = 1
- default_save_format = "mat-binary"
- define_all_return_values = 1
- do_fortran_indexing = 1
- empty_list_elements_ok = 1
- implicit_str_to_num_ok = 1
- ok_to_lose_imaginary_part = 1
- page_screen_output = 0
- prefer_column_vectors = 0
- prefer_zero_one_indexing = 1
- print_empty_dimensions = 0
- treat_neg_dim_as_zero = 1
- warn_function_name_clash = 0
- whitespace_in_literal_matrix = "traditional"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Octave
-
-
-
-News
-
-
-A more complete list of changes for version 2
-is a available as is an older list of changes for
-versions up to 1.1.1.
-
-Octave source and binaries are available by anonymous ftp from -ftp://ftp.che.wisc.edu/pub/octave. -
- --Additional information about using - -Octave on OS/2 systems is available, thanks to the work of -Klaus Gebhardt. -
- -- -Binaries for Windows NT/95 systems are also available, thanks to -the work of Mumit Khan. -
- --To get started, there is a -brief introduction, and also the -preface to the manual. For more -detailed information, you can browse the -complete documentation, which has -been converted to HTML directly from the Texinfo source using -texi2html. -
- --If you still have questions, there is always the - -FAQ (with answers). -
- --There are three active mailing lists devoted to Octave. The -help-octave mailing list is available for questions related -to using, installing, and porting Octave that are not adequately -answered by the Octave manual or by the FAQ. The bug-octave -list is used for reporting bugs. the octave-sources list is -for posting sources and enhancements to Octave. -A complete archive of postings -and instructions for joining -the lists is also available. -
- --An archive of contributed functions for Octave is available from -http://www.tsc.uvigo.es/GTS/Octave. -
- -
-John W. Eaton
-jwe@octave.org
-
-
- --
- --
- --If you would like to join the discussion and receive all messages sent -to these mailing lists, please send a short note to -help-request@octave.org (to join help-octave) or -bug-request@octave.org (to join bug-octave), or -sources-request@octave.org (to join octave-sources). -
- --Please do NOT send subscription requests directly to the lists -themselves. -
- --Back to the Octave home page. -
-
-John W. Eaton
-jwe@octave.org
-
-Octave is a high-level language, primarily intended for numerical -computations. It provides a convenient command line interface for -solving linear and nonlinear problems numerically, and for performing -other numerical experiments. It may also be used as a batch-oriented -language. -
- --The best way to introduce Octave's language is probably to show a few -simple examples. -
- --If you are new to Octave, I recommend that you try these examples to -begin learning Octave by using it. Lines marked with -octave:13> are lines you type, ending each with a carriage -return. Octave will respond with an answer, or by displaying a graph. -
- --To create a new matrix and store it in a variable so that it you can -refer to it later, type the command - -
- octave:1> a = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ] -- -Octave will respond by printing the matrix in neatly aligned columns. -Ending a command with a semicolon tells Octave to not print the result -of a command. For example - -
- octave:2> b = rand (3, 2); -- -will create a 3 row, 2 column matrix with each element set to a random -value between zero and one. - - -
-To display the value of any variable, simply type the name of the -variable. For example, to display the value stored in the matrix -b, type the command - -
- octave:3> b -- -
-Octave has a convenient operator notation for performing matrix -arithmetic. For example, to multiply the matrix a by a -scalar value, type the command - -
- octave:4> 2 * a -- -
-To multiply the two matrices a and b, type the -command - -
- octave:5> a * b -- -
-To form the matrix product transpose (a) * a, type the command - -
- octave:6> a' * a -- - -
-To solve the set of linear equations Ax = b use the left -division operator, \: - -
- octave:7> a \ b -- -This is conceptually equivalent to inv (A) * b, but avoids -computing the inverse of a matrix directly. - - -
-If the coefficient matrix is singular, Octave will print a warning -message and compute a minimum norm solution. -
- --Octave has built-in functions for solving nonlinear differential -equations of the form - -
- dx - -- = f (x, t) - dt -- -with the initial condition - -
- x(t = t0) = x0 -- - -
-For Octave to integrate equations of this form, you must first provide a -definition of the function f (x, t). This is -straightforward, and may be accomplished by entering the function body -directly on the command line. For example, the following commands -define the right hand side function for an interesting pair of -nonlinear differential equations. Note that while you are entering a -function, Octave responds with a different prompt, to indicate that it -is waiting for you to complete your input. - -
- octave:8> function xdot = f (x, t) - > - > r = 0.25; - > k = 1.4; - > a = 1.5; - > b = 0.16; - > c = 0.9; - > d = 0.8; - > - > xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1)); - > xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2); - > - > endfunction -- - -
-Given the initial condition - -
- x0 = [1; 2]; -- -and the set of output times as a column vector (note that the first -output time corresponds to the initial condition given above) - -
- t = linspace (0, 50, 200)'; -- -it is easy to integrate the set of differential equations: - -
- x = lsode ("f", x0, t); -- -
-The function lsode uses the Livermore Solver for Ordinary -Differential Equations, described in A. C. Hindmarsh, ODEPACK, a -Systematized Collection of ODE Solvers, in: Scientific Computing, -R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pages -55-64. -
- --To display the solution of the previous example graphically, use the -command - -
- plot (t, x) -- - -
-If you are using the X Window System, Octave will automatically create -a separate window to display the plot. If you are using a terminal that -supports some other graphics commands, you will need to tell Octave what -kind of terminal you have. Type the command -
- -- gset term -- -to see a list of the supported terminal types. Octave uses -gnuplot to display graphics, and can display graphics on any -terminal that is supported by gnuplot. - -
-To capture the output of the plot command in a file rather than sending -the output directly to your terminal, you can use a set of commands like -this - -
- gset term postscript - gset output "foo.ps" - replot -- -This will work for other types of output devices as well. Octave's -gset command is really just piped to the gnuplot -subprocess, so that once you have a plot on the screen that you like, -you should be able to do something like this to create an output file -suitable for your graphics printer. - - -
-Or, you can eliminate the intermediate file by using commands like this - -
- gset term postscript - gset output "|lpr -Pname_of_your_graphics_printer" - replot -- -
-At the Octave prompt, you can recall, edit, and reissue previous -commands using Emacs- or vi-style editing commands. The default -keybindings use Emacs-style commands. -
- --Octave has an extensive help facility. The same documentation that is -available in printed form is also available from the Octave prompt, -because both forms of the documentation are created from the same input -file. -
- --In order to get good help you first need to know the name of the command -that you want to use. This name of the function may not always be -obvious, but a good place to start is to just type help. -This will show you all the operators, reserved words, functions, -built-in variables, and function files. You can then get more -help on anything that is listed by simply including the name as an -argument to help. For example, - -
- help plot -- -will display the help text for the plot function. - - -
-The complete text of the manual is availabe from Octave's command line -using the command help -i. Because it is written in Texinfo, -it is also possible to put -the manual -on the WWW. -
- --Octave is free software; you can redistribute it and/or modify it -under the terms of the -GNU -General Public License as published by the Free Software -Foundation; either version 3 of the License, or (at your option) any -later version. -
- --Octave is distributed in the hope that it will be useful, but WITHOUT -ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the file COPYING for more -details. -
- --The latest released version of Octave is always available via -anonymous ftp from -ftp://ftp.che.wisc.edu/pub/octave. -Complete source and binaries for several popular systems are available. -
- --Octave requires approximately 125MB of disk storage to unpack and -compile from source (significantly less if you don't compile with -debugging symbols or create shared libraries). Once installed, Octave -requires approximately 65MB of disk space (again, considerably less if -you don't build shared libraries or the binaries and libraries do not -include debugging symbols). -
- --In order to build Octave, you will need a current version of g++, -libstdc++, and GNU make. -
- --You must have GNU Make to compile Octave. Octave's Makefiles -use features of GNU Make that are not present in other versions of -make. GNU Make is very portable and easy to install. -
- --See the notes in the files INSTALL and INSTALL.OCTAVE for more -specific installation instructions, including directions for -installing Octave from a binary distribution. -
- --The file BUGS contains a recommended procedure for reporting bugs, as -well as a list of known problems and possible fixes. -
- --Octave's manual has been revised for version 2.0, but it is lagging a -bit behind the development of the software. In particular, there is -currently no complete documentation of the C++ class libraries or the -support for dynamic linking and user-defined data types. If you -notice ommissions or inconsistencies, please report them as bugs to -bug@@octave.org. Specific suggestions for ways to -improve Octave and its documentation are always welcome. -
- --Octave is being developed with the Free Software Foundation's make, -bison (a replacement for YACC), flex (a replacement for lex), gcc/g++, -and libstdc++ on an Intel Pentium II system running Linux/GNU. It -should be possible to install it on any machine that runs GCC/G++. It -may also be possible to install it using other implementations of -these tools, but it will most certainly require much more work. Do -yourself a favor and get the GNU development tools, either via -anonymous ftp from ftp.gnu.org or by writing the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. -
- --The underlying numerical solvers are currently standard Fortran ones -like Lapack, Linpack, Odepack, the Blas, etc., packaged in a library -of C++ classes (see the files in the libcruft and liboctave -subdirectories). If possible, the Fortran subroutines are compiled -with the system's Fortran compiler, and called directly from the C++ -functions. If that's not possible, they are translated with f2c and -compiled with a C compiler. Better performance is usually achieved if -the intermediate translation to C is avoided. -
- --The library of C++ classes may also be useful by itself. -
- --Back to the Octave home page. -
-