Next: geometry, Previous: simplex, Up: Base modules
mathThis package extends Asymptote's mathematical capabilities with
radian/degree conversion routines, point-in-polygon and intersection
algorithms, matrix arithmetic and inversion, and a linear
equation solver (via Gauss-Jordan elimination).
Unlike MetaPost, Asymptote does not implicitly solve
linear equations and therefore does not have the notion of a
whatever unknown. The following routine provides a useful
replacement for a common use of whatever: finding the
intersection point of the lines through P, Q
and p, q, respectively:
pair extension(pair P, pair Q, pair p, pair q);PQ and pq.
Here are some additional routines provided in the math package:
void drawline(picture pic=currentpicture, pair P, pair Q, pen p=currentpen);P and Q, without altering the size of picture pic,
using pen p.
real intersect(triple P, triple Q, triple n, triple Z);PQ
with the plane perpendicular to n and passing through Z.
triple intersectionpoint(triple n0, triple P0, triple n1, triple P1);n0 and n1 passing through points P0 and P1,
respectively. If the planes are parallel, return
(infinity,infinity,infinity).
real[] solve(real[][] a, real[] b)ax=b by Gauss-Jordan
elimination, returning the solution x, where a is an
n \times n matrix and b is an array of length n.
For example:
import math;
real[][] a={{1,-2,3,0},{4,-5,6,2},{-7,-8,10,5},{1,50,1,-2}};
real[] b={7,19,33,3};
real[] x=solve(a,b);
write(a); write();
write(b); write();
write(x); write();
write(a*x);
If the matrix a is tridiagonal, the routine tridiagonal provides
a more efficient algorithm (see tridiagonal).
real[][] solve(real[][] a, real[][] b)ax=b returning the
solution x, where a is an n \times n matrix and
b is an n \times m matrix.
bool straight(path p)true iff the path p is straight.