Symbolic algebra and Mathematics with Xcas
Renée De Graeve, Bernard Parisse
© 2002, 2007 Renée De Graeve, Bernard Parisse
e is the number exp(1);
pi is the number π.
infinity is unsigned ∞.
+infinity is +∞.
-infinity is −∞.
i is the complex number i.
convert or convertir can do different kind of conversions depending on the option given as the second argument.
To convert an integer n into the list of its coefficients in a
basis b, the option is base. The arguments of convert or
convertir are an integer n, base and b the value of the
convert or convertir returns the list of coefficients in a b basis of the integer n Input :
To check the answer,
input expr("0173") or horner(revlist([3,7,1]),8)
or convert([3,7,1],base,8) and output is 123
To convert the list of coefficients in a basis b of an integer n,
the option is also base.
convert or convertir returns the integer n.
For all functions in this section, you can use Gaussian integers (numbers of the form a+ib, where a and b in ℤ) in the place of integers.
A permutation p of size n is a bijection from [0..n−1] on
[0..n−1] and is represented by the list :
For example, the permutation p represented by [1,3,2,0] is the application from [0,1,2,3] on [0,1,2,3] defined by :
|p(0)=1, p(1)=3, p(2)=2, p(3)=0|
A cycle c of size p is represented by the list [a0,...,ap−1] (0≤ ak≤ n−1) it is the permutation such that
|c(ai)=ai+1 for (i=0..p−2), c(ap−1)=a0, c(k)=k otherwise|
A cycle c is represented by a list and a cycle decomposition
is represented by a list of lists.
For example, the cycle c represented by the list [3,2,1] is the permutation c defined by c(3)=2, c(2)=1, c(1)=3, c(0)=0 (i.e. the permutation represented by the list [0,3,1,2]).
Note that complex numbers are also used to represent a point in the plan or a 1-d function graph.
An operator is an infixed function.
A polynomial of one variable is represented either by a symbolic expression or by the list of it’s coefficients by decreasing powers order (dense representation). In the latter case, to avoid confusion with other kinds of list
poly1[...]as delimiters in inputs
Note that polynomials represented as lists of coefficients are always written in decreassing powers order even if increasing power is checked in cas configuration.
A polynomial of several variables is represented
Polynomials are represented by expressions or by list of coefficients by decreasing power order. In the first case, for instructions requiring a main variable (like extended gcd computations), the variable used by default is x if not specified. For modular coefficients in ℤ/nℤ, use % n for each coefficient of the list or apply it to the expression defining the polynomial.
The way to compute over ℤ/pℤ or over ℤ/pℤ[x] depends on the syntax mode :
The functions described here may be used if the statistic serie is contained in a list. See also section 2.42.31 for matrices and chapter ?? for weighted lists.
Define the list A by:
A table is an associative container (or map), it is used to store informations
associated to indexes which are much more general than integers,
like strings or sequences. It may be used for example to store
a table of phone numbers indexed by names.
In Xcas, the indexes in a table may be any kind of Xcas objects. Access is done by a binary search algorithm, where the sorting function first sorts by type then uses an order for each type (e.g. < for numeric types, lexicographic order for strings, etc.)
table takes as argument a list or a sequence of equalities index_name=element_value.
table returns this table.
If you assign T[n]:= ... where T is a variable name and n an integer
A matrix is represented by a list of lists, all having the same size.
In the Xcas answers, the matrix delimiters are  (bold brackets).
For example, [1,2,3] is the matrix [[1,2,3]] with only one row,
unlike [1,2,3] (normal brackets) which is the list [1,2,3].
In this document, the input notation ([[1,2,3]]) will be used for input and output.
Linear programming problems are maximization problem of a linear functional under linear equality or inequality constraints. The most simple case can be solved directly by the so-called simplex algorithm. Most cases requires to solve an auxiliary linear programming problem to find an initial vertex for the simplex algorithm.
Note that most matrix factorization algorithms are implemented numerically, only a few of them will work symbolically.
In this paragraph, we call "augmented matrix" of the system A · X=B (or matrix "representing" the system A · X=B), the matrix obtained by gluing the column vector B or −B to the right of the matrix A, as with border(A,tran(B)).
This section is limited to symbolic (or exact) solutions of differential equations. For numeric solutions of differential equations, see odesolve. For graphic representation of solutions of differential equations, see plotfield, plotode and interactive_plotode.
Most graph instructions take expressions as arguments. A few exceptions (mostly maple-compatibility instructions) also accept functions. Some optional arguments, like color, thickness, can be used as optional attributes in all graphic instructions. They are described below.
There are two kinds of attributes: global attributes of a graphic scene and individual attributes.
plot(f(x),x) draws the graph of y=f(x).
The second argument may specify the range of values x=xmin..xmax. One can also plot a function instead of an
expression using the syntax plot(f,xmin..xmax).
plot accepts an optional argument to specify
the step used in x for the discretisation with
xstep= or the number of points of the discretization
plot3d takes three arguments : a function of two variables or
an expression of two variables or a list of three functions of two variables
or a list of three expressions of two variables and the names of these two
variables with an optional range (for expressions) or the ranges
plot3d(f(x,y),x,y) (resp plot3d([f(u,v),g(u,v),h(u,v)],u,v)) draws the surface z=f(x,y) (resp x=f(u,v),y=g(u,v),z=h(u,v)). The syntax plot3d(f(x,y),x=x0..x1,y=y0..y1) or plot3d(f,x0..x1,y0..y1) specifies which part of surface will be computed (otherwise default values are taken from the graph configuration).
plotinequation([f1(x,y)<a1,...fk(x,y)<ak],[x=x1..x2,y=y1..y2]) draws the points of the plane whose coordinates satisfy the inequations of 2 variables :
|, x1≤ x ≤ x2, y1 ≤ y ≤ y2|
Note that if the ranges for x and y are not specified, Xcas takes the default values of X-,X+,Y-,Y+ defined in the general graphic configuration (Cfg▸Graphic configuration).
plotcontour(f(x,y),[x,y]) (or DrwCtour(f(x,y),[x,y]) or
contourplot(f(x,y),[x,y])) draws the contour lines of the surface defined by z=f(x,y) for z=−10, z=−8, .., z=0, z=2, .., z=10. You may specify the desired contour lines by a list of values of z given as third argument.
^2=n for n=1,2,3; the zones between these ellipses are filled with the color green,red or black
^2=n for n=-10,-8,..10
If you want to draw the surface in 3-d representation, input plotfunc(f(x,y),[x,y]), see 3.2.2):
plotdensity(f(x,y),[x,y]) or densityplot(f(x,y),[x,y])
draws the graph of z=f(x,y) in the plane where the values of
z are represented by the rainbow colors. The optional argument
z=zmin..zmax specifies the range of z corresponding to the
full rainbow, if it is not specified, it is deduced from the minimum
and maximum value of f on the discretisation. The discretisation
may be specified by optional xstep=... and ystep=...
or nstep=... arguments.
^2=z has a color from the rainbow
Remark : A rectangle representing the scale of colors is displayed below the graph.
plotimplicit or implicitplot draws curves or surfaces defined by an implicit expression or equation. If the option unfactored is given as last argument, the original expression is taken unmodified. Otherwise, the expression is normalized, then replaced by the factorization of the numerator of it’s normalization.
Each factor of the expression corresponds to a component of the implicit curve or surface. For each factor, Xcas tests if it is of total degree less or equal to 2, in that case conic or quadric is called. Otherwise the numeric implicit solver is called.
Optional step and ranges arguments may be passed to the numeric implicit solver, note that they are dismissed for each component that is a conic or a quadric.
Let Et be an expression depending of the variable t.
plotpolar(Et,t) draws the polar representation of the curve defined by ρ=Et for θ=t, that is in cartesian coordinates the curve (Et cos(t),Et sin(t)). The range of the parameter may be specified by replacing the second argument by t=tmin..tmax. The discretisation parameter may be specified by an optional tstep=... argument.
Let f(x) be an expression depending of the variable x
(resp. f(t) an expression depending of the variable t).
plotseq(f(x),a,n) (resp. plotseq(f(t),t=a,n)) draws the line y=x, the graph of y=f(x) (resp y=f(t)) and the n first terms of the recurrent sequence defined by : u0=a, un=f(un−1). The a value may be replaced by a list of 3 elements, [a,x−,x+] where x−..x+ will be passed as x range for the graph computation.
With two variables x,y, input :
Let f(t,y) be an expression depending of two variables t and y.
Output, the graph in the space of the solution of :
|[h,p]′=[h−0.3 h*p, 0.3 h*p−p] [h,p](0)=[0.3,0.7]|
To have a 2-d graph (in the plane), use the option plane
To compute the values of the solution, see the section ??.
Let f(t,y) be an expression depending of two
varaiables t and y.
interactive_plotode(f(t,y),[t,y]) draws the tangent field of the differential equation y′=f(t,y) in a new window. In this window, one can click on a point to get the plot of the solution of y′=f(t,y) crossing through this point.
You can further click to display several solutions. To stop press the Esc key.
Xcas can display animated 2D, 3D or "4D" graphs. This is done first by computing a sequence of graphic objects, then after completion, by displaying the sequence in a loop.
Real numbers may have an exact representation (e.g. rationals, symbolic expressions involving square roots or constants like π, ...) or approximate representation, which means that the real is represented by a rational (with a denominator that is a power of the basis of the representation) close to the real. Inside Xcas, the standard scientific notation is used for approximate representation, that is a mantissa (with a point as decimal separator) optionnally followed by the letter e and an integer exponent.
Note that the real number 10−4 is an exact number but 1e−4 is an approximate representation of this number.
In this section, we explain how real numbers are represented.
evalf or approx evaluates to a numeric
approximation (if possible).
Output, if in the cas configuration (Cfg menu) Digits=7 (that is hardware floats are used, and 7 digits are displayed) :
You can change the number of digits in a commandline by assigning the variable DIGITS or Digits. Input :
fsolve or nSolve solves numeric equations (unlike solve or proot, it is not limited to polynomial equations) of the form:
|f(x)=0, x ∈ ]a,b[|
fsolve or de nSolve accepts a last optional argument, the name of an iterative algorithm to be used by the GSL solver. The different methods are explained in the following section.
Xcas provides six methods (inherited from the GSL) to solve numeric systems of equations of the form f(x)=0:
All methods use an iteration of Newton kind
The four methods hybrid*_solver use also a method of gradient descent when the Newton iteration would make a too large step. The length of the step is computed without scaling for hybrid_solver and hybridj_solver or with scaling (computed from f′(xn)) for hybrids_solver and hybridsj_solver.
proot takes as argument a squarefree polynomial,
either in symbolic form or as a list of
polynomial coefficients (written by decreasing order).
proot returns a list of the numeric roots of this polynomial.
To find the numeric roots of P(x)=x3+1, input :
To find the numeric roots of x2−3, input :
Matrix numeric factorizations of
are described in section 2.48.
The Phys menu contains:
This document was translated from LATEX by HEVEA.