functions in math.i -
_dgecox
|
_dgecox LAPACK dgecon routine, except norm argument not a string. |
_dgelss
|
_dgelss LAPACK dgelss routine. |
_dgelx
|
_dgelx LAPACK dgels routine, except trans argument not a string. |
_dgesv
|
_dgesv LAPACK dgesv routine. |
_dgesvx
|
_dgesvx LAPACK dgesvd routine, except jobu and jobvt are not strings. |
_dgetrf
|
_dgetrf LAPACK dgetrf routine. Performs LU factorization. |
_dgtsv
|
_dgtsv LAPACK dgtsv routine. |
fft
|
fft(x, direction) fft(x, ljdir, rjdir) or fft(x, ljdir, rjdir, setup=workspace) returns the complex Fast Fourier Transform of array X. The DIRECTION determines which direction the transform is in -- e.g.- from time to frequency or vice-versa -- as follows: DIRECTION meaning --------- ------- 1 "forward" transform (coefficients of exp(+i * 2*pi*kl/N)) on every dimension of X -1 "backward" transform (coefficients of exp(-i * 2*pi*kl/N)) on every dimension of X [1,-1,1] forward transform on first and third dimensions of X, backward transform on second dimension of X (any other dimensions remain untransformed) [-1,0,0,1] backward transform on first dimension of X, forward transform on fourth dimension of X etc. The third positional argument, if present, allows the direction of dimensions of X to be specified relative to the final dimension of X, instead of relative to the first dimension of X. In this case, both LJDIR and RJDIR must be vectors of integers -- the scalar form is illegal: LJDIR RJDIR meaning ----- ----- ------- [] [1] forward transform last dimension of X [1] [] forward transform first dimension of X [] [-1,-1] backward transform last two dimensions of X, leaving any other dimensions untransformed [-1,0,0,1] [] backward transform on first dimension of X, forward transform on fourth dimension of X [] [-1,0,0,1] backward transform on 4th to last dimension of X, forward transform on last dimension of X etc. Note that the final element of RJDIR corresponds to the last dimension of X, while the initial element of LJDIR corresponds to the first dimension of X. The explicit meaning of "forward" transform -- the coefficients of exp(+i * 2*pi*kl/N) -- is: result for j=1,...,n result(j)=the sum from k=1,...,n of x(k)*exp(-i*(j-1)*(k-1)*2*pi/n) where i=sqrt(-1) Note that the result is unnormalized. Applying the "backward" transform to the result of a "forward" transform returns N times the original vector of length N. Equivalently, applying either the "forward" or "backward" transform four times in succession yields N^2 times the original vector of length N. Performing the transform requires some WORKSPACE, which can be set up beforehand by calling fft_setup, if fft is to be called more than once with arrays X of the same shape. If no setup keyword argument is supplied, the workspace allocation and setup must be repeated for each call. | |
SEE ALSO: | roll, fft_setup, fft_inplace |
fft_braw
|
fft_braw, n, c, wsave Swarztrauber's cfftb. You can use this to avoid the additional 2*N storage incurred by fft_setup. |
fft_fraw
|
fft_fraw, n, c, wsave Swarztrauber's cfftf. You can use this to avoid the additional 2*N storage incurred by fft_setup. |
fft_init
|
fft_init, n, wsave Swarztrauber's cffti. This actually requires wsave=array(0.0, 4*n+15), instead of the 6*n+15 doubles of storage used by fft_raw to handle the possibility of multidimensional arrays. If the storage matters, you can call cfftf and/or cfftb as the Yorick functions fft_fraw and/or fft_braw. |
fft_inplace
|
fft_inplace, x, direction or fft_inplace, x, ljdir, rjdir or fft_inplace, x, ljdir, rjdir, setup=workspace is the same as the fft function, except that the transform is performed "in_place" on the array X, which must be of type complex. | |
SEE ALSO: | fft, fft_setup |
fft_setup
|
workspace= fft_setup(dimsof(x)) or workspace= fft_setup(dimsof(x), direction) or workspace= fft_setup(dimsof(x), ljdir, rjdir) allocates and sets up the workspace for a subsequent call to fft(X, DIRECTION, setup=WORKSPACE) or fft(X, LJDIR, RJDIR, setup=WORKSPACE) The DIRECTION or LJDIR, RJDIR arguments compute WORKSPACE only for the dimensions which will actually be transformed. If only the dimsof(x) argument is supplied, then WORKSPACE will be enough to transform any or all dimensions of X. With DIRECTION or LJDIR, RJDIR supplied, WORKSPACE will only be enough to compute the dimensions which are actually to be transformed. The WORKSPACE does not depend on the sign of any element in the DIRECTION (or LJDIR, RJDIR), so you can use the same WORKSPACE for both "forward" and "backward" transforms. Furthermore, as long as the length of any dimensions of the array X to be transformed are present in WORKSPACE, it may be used in a call to fft with the array. Thus, if X were a 25-by-64 array, and Y were a 64-vector, the following sequence is legal: ws= fft_setup(dimsof(x)); xf= fft(x, 1, setup=ws); yf= fft(y, -1, setup=ws); The WORKSPACE required for a dimension of length N is 6*N+15 doubles. | |
SEE ALSO: | fft, dimsof, fft_inplace |
LUrcond
|
LUrcond(a) or LUrcond(a, one_norm=1) returns the reciprocal condition number of the N-by-N matrix A. If the ONE_NORM argument is non-nil and non-zero, the 1-norm condition number is returned, otherwise the infinity-norm condition number is returned. The condition number is the ratio of the largest to the smallest singular value, max(singular_values)*max(1/singular_values) (or sum(abs(singular_values)*sum(abs(1/singular_values)) if ONE_NORM is selected?). If the reciprocal condition number is near zero then A is numerically singular; specifically, if 1.0+LUrcond(a) == 1.0 then A is numerically singular. | |
SEE ALSO: | LUsolve |
LUsolve
|
LUsolve(a, b) or LUsolve(a, b, which=which) or a_inverse= LUsolve(a) returns the solution x of the matrix equation: A(,+)*x(+) = B If A is an n-by-n matrix then B must have length n, and the returned x will also have length n. B may have additional dimensions, in which case the returned x will have the same additional dimensions. The WHICH dimension of B, and of the returned x is the one of length n which participates in the matrix solve. By default, WHICH=1, so that the equations being solved are: A(,+)*x(+,..) = B Non-positive WHICH counts from the final dimension (as for the sort and transpose functions), so that WHICH=0 solves: x(..,+)*A(,+) = B Other examples: A_ij X_jklm = B_iklm (WHICH=1) A_ij X_kjlm = B_kilm (WHICH=2) A_ij X_klmj = B_klmi (WHICH=4 or WHICH=0) If the B argument is omitted, the inverse of A is returned: A(,+)*x(+,) and A(,+)*x(,+) will be unit matrices. LUsolve works by LU decomposition using Gaussian elimination with pivoting. It is the fastest way to solve square matrices. QRsolve handles non-square matrices, as does SVsolve. SVsolve is slowest, but can deal with highly singular matrices sensibly. | |
SEE ALSO: | QRsolve, TDsolve, SVsolve, SVdec, LUrcond |
QRsolve
|
QRsolve(a, b) or QRsolve(a, b, which=which) returns the solution x (in a least squares or least norm sense described below) of the matrix equation: A(,+)*x(+) = B If A is an m-by-n matrix (i.e.- m equations in n unknowns), then B must have length m, and the returned x will have length n. If n | |
SEE ALSO: | LUsolve, TDsolve, SVsolve, SVdec |
roll
|
roll(x, ljoff, rjoff) or roll, x, ljoff, rjoff or roll(x) or roll, x "rolls" selected dimensions of the array X. The roll offsets LJOFF and RJOFF (both optional) work in the same fashion as the LJDIR and RJDIR arguments to the fft function: A scalar LJDIR (and nil RJDIR) rolls all dimensions of X by the specified offset. Otherwise, the elements of the LJDIR vector [ljoff1, ljoff2, ...] are used as the roll offsets for the first, second, etc. dimensions of X. Similarly, the elements of the RJDIR vector [..., rjoff1, rjoff0] are matched to the final dimensions of X, so the next to last dimension is rolled by rjoff1 and the last dimension by rjoff0. As a special case (mostly for use with the fft function), if both LJDIR and RJDIR are nil, every dimension is rolled by half of its length. Thus, roll(x) it equivalent to roll(x, dimsof(x)(2:0)/2) The result of the roll function is complex if X is complex, otherwise double (i.e.- any other array type is promoted to type double). If roll is invoked as a subroutine, the operation is performed in place. | |
SEE ALSO: | fft |
SVdec
|
s= SVdec(a, u, vt) or s= SVdec(a, u, vt, full=1) performs the singular value decomposition of the m-by-n matrix A: A = (U(,+) * SIGMA(+,))(,+) * VT(+,) where U is an m-by-m orthogonal matrix, VT is an n-by-n orthogonal matrix, and SIGMA is an m-by-n matrix which is zero except for its min(m,n) diagonal elements. These diagonal elements are the return value of the function, S. The returned S is always arranged in order of descending absolute value. U(,1:min(m,n)) are the left singular vectors corresponding to the min(m,n) elements of S; VT(1:min(m,n),) are the right singular vectors. (The original A matrix maps a right singular vector onto the corresponding left singular vector, stretched by a factor of the singular value.) Note that U and VT are strictly outputs; if you don't need them, they need not be present in the calling sequence. By default, U will be an m-by-min(m,n) matrix, and V will be a min(m,n)-by-n matrix (i.e.- only the singular vextors are returned, not the full orthogonal matrices). Set the FULL keyword to a non-zero value to get the full m-by-m and n-by-n matrices. On rare occasions, the routine may fail; if it does, the first SVinfo values of the returned S are incorrect. Hence, the external variable SVinfo will be 0 after a successful call to SVdec. If SVinfo>0, then external SVe contains the superdiagonal elements of the bidiagonal matrix whose diagonal is the returned S, and that bidiagonal matrix is equal to (U(+,)*A(+,))(,+) * V(+,). Numerical Recipes (Press, et. al. Cambridge University Press 1988) has a good discussion of how to use the SVD -- see section 2.9. | |
SEE ALSO: | SVsolve, LUsolve, QRsolve, TDsolve |
SVsolve
|
SVsolve(a, b) or SVsolve(a, b, rcond) or SVsolve(a, b, rcond, which=which) returns the solution x (in a least squares sense described below) of the matrix equation: A(,+)*x(+) = B If A is an m-by-n matrix (i.e.- m equations in n unknowns), then B must have length m, and the returned x will have length n. If n | |
SEE ALSO: | SVdec, LUsolve, QRsolve, TDsolve |
TDsolve
|
TDsolve(c, d, e, b) or TDsolve(c, d, e, b, which=which) returns the solution to the tridiagonal system: D(1)*x(1) + E(1)*x(2) = B(1) C(1:-1)*x(1:-2) + D(2:-1)*x(2:-1) + E(2:0)*x(3:0) = B(2:-1) C(0)*x(-1) + D(0)*x(0) = B(0) (i.e.- C is the subdiagonal, D the diagonal, and E the superdiagonal; C and E have one fewer element than D, which is the same length as both B and x) B may have additional dimensions, in which case the returned x will have the same additional dimensions. The WHICH dimension of B, and of the returned x is the one of length n which participates in the matrix solve. By default, WHICH=1, so that the equations being solved involve B(,..) and x(+,..). Non-positive WHICH counts from the final dimension (as for the sort and transpose functions), so that WHICH=0 involves B(..,) and x(..,+). The C, D, and E arguments may be either scalars or vectors; they will be broadcast as appropriate. | |
SEE ALSO: | LUsolve, QRsolve, SVsolve, SVdec |
unit
|
unit(n) or unit(n, m) returns n-by-n (or n-by-m) unit matrix, i.e.- matrix with diagonal elements all 1.0, off diagonal elements 0.0 |