Linux °æ (¾«»ªÇø)
·¢ÐÅÈË: netiscpu (˵²»Èç×ö), ÐÅÇø: Linux
±ê Ìâ: [B] Red Hat Linux Unleashed (35)
·¢ÐÅÕ¾: ×Ï ¶¡ Ïã (Sat Jul 25 05:00:40 1998), תÐÅ
Mathematics on Linux
_________________________________________________________________
o Scilab
# How To Get and Install Scilab
@ Running Scilab
# More Information on Scilab
o Pari
# Where To Get Pari
# Running Pari
o Using LISP-STAT
# Where To Get LISP-STAT
# Running xlispstat
o A Last Note
o Summary
_________________________________________________________________
35
Mathematics on Linux
This book has dealt with many issues regarding the tools available for
Linux. Now, let's look at some of the mathematics tools for Linux.
Specifically, we will work with tools for doing mathematical and
statistical applications under Linux. One such tool we will be working
with is Scilab, an interactive math and graphics package. Another tool
for symbolic math is Pari. For statistical operations using LISP
choose LISP-STAT.
Scilab
The Scilab application was developed by the Institut National de
Recherche de Informatique et en Automatique (INRIA) in France.
Although this application is not as formidable as MATLAB, a commercial
product with more bells and whistles, Scilab is still powerful enough
to provide decent graphics and solutions to math problems.
With Scilab you can do matrix multiplication, plot graphs, and so on.
Using its built-in functions, Scilab enables you to write your own
functions. With its toolbox, you can build your own signal- processing
functions in addition to those provided by Scilab.
Added to all its features, the help file is quite voluminous. If you
want to find out how to do a math problem with Scilab, you will
probably find it in the docs. Added to the good documentation are
sample programs to get you started.
How To Get and Install Scilab
Now that you are probably interested in Scilab, you will want to know
where to get it. Scilab is free via the Internet. The primary site is
ftp.inria.fr, and the directory for this is in
INRIA/Projects/Meta2/Scilab. Look for the zipped file with the latest
date. Each zipped file is complete in itself.
The file you are looking for is called scilab-2.2-Linux-elf.tar.gz. In
its unzipped form, the file is about 15MB in size. After moving
scilab-2.2-Linux-elf.tar.gz to the directory you want it installed in
(such as /usr/local), untar by typing gunzip
scilab-2.2-Linux-elf.tar.gz | tar xvf-.
After you have installed it (into the /usr/local/scilab-2.2
directory), go to the /usr/local/scilab-2.2/bin subdirectory and
modify the scilab shell script file. Replace the assignment of the SCI
variable with the path to the location of your scilab files. For
example, in my case I set the value to
SCI="/home/khusain/scilab-2.1.1"
______________________________________________________________
NOTE: If Scilab does not show up in color the first time you invoke
it, try *customization: -color in your .Xdefaults file. Don't
forget to run xrdb .Xdefaults to enforce the change.
______________________________________________________________
Running Scilab
To invoke scilab, type scilab in an Xterm window while in the
/usr/local/scilab-2.2/bin directory.
The prompt for Scilab is —>. You will see responses to your
commands immediately below where you type in entries.
A healthy example of how to use Scilab would probably be beneficial.
Let's see how to declare values:
—>x=1.0
This sets x equal to 1.0. To declare an array, use square brackets:
—>x=[1 2 3]
x =
! 1. 2. 3. !
See Figure 35.1 to see what it looks like on your screen.
Figure 35.1. Main screen for Scilab.
To declare a large array you can use indices of the form [start:end].
Use a semicolon at the end of the line to indicate that you really do
not want Scilab to echo the results back to you. So, the following
statement
—>x=[1:100];
declares x as a vector of values from 1 to 100 and does not display
the contents of x back to you. If you want to give staggered values of
x, you can use an increment operator in the form
[start:increment:stop]. So, this statement declares x to contain five
odd numbers from 1:
—>x=[1:2:10]
x =
! 1. 3. 5. 7. 9. !
Let's try an example of a simple matrix multiplication problem of
ax=b. First declare the a matrix, separating all the rows with
semicolons. If you do not use semicolons, the values in matrix a will
be interpreted as a 25´1 vector instead of a 5´5 matrix.
—>a=[ 1 1 0 0 0; 1 1 1 0 0; 0 1 1 1 0; 0 0 1 1 1; 0 0 0 1 1]
a =
! 1. 1. 0. 0. 0. !
! 1. 1. 1. 0. 0. !
! 0. 1. 1. 1. 0. !
! 0. 0. 1. 1. 1. !
! 0. 0. 0. 1. 1. !
Then declare X as a vector.
—>X=[ 1 3 5 7 9 ]
X =
! 1. 3. 5. 7. 9. !
To get the dimensions right for the multiplication, you have to use
the single quotes ():Scilab multiplication;single quote operator () to
get the transpose of X. Then put the results of the multiplication of
a and X transpose into b.
—>b= a * X'
b =
! 4. !
! 9. !
! 15. !
! 21. !
! 16. !
—>
The results look right. In fact, Scilab displayed the dimensions
correctly too, since the results of the multiplication are a matrix of
size 5´1.
More Information on Scilab
The documentation for the Scilab application is available from
ftp.inria.fr in the /INRIA/Projects/Meta2/Scilab/doc directory. It
contains a PostScript document called intro.ps which contains the
user's manual titled Introduction to Scilab. Take time to read this
manual carefully.
Pari
The Pari package is useful for doing symbolic mathematical operations.
Its primary features include an arbitrary precision calculator, its
own programming facilities, and interfaces to C libraries.
Where To Get Pari
To get Pari, use the FTP site megrez.math.u-bordeaux.fr, and from the
/pub/pari/unix directory get the gplinux.tar.gz file. The binaries may
not work with a later version of Linux because the binaries are built
with older versions of shared libraries. If you have a newer version
of Linux than the one supported by Pari, either you can edit the
sources yourself or wait until the authors of Pari catch up. Sorry.
With the version of Linux on the CD-ROM, you need to compile your own
version of Pari. The source files are in the pari-1.39.03.tar.gz file.
The source tar file unpacks into three directories: src, doc, and
examples. You will find the examples very useful indeed.
To compile the sources, run the Makemakefile command in the src
directory. When creating this version, remove the definition of the
option -DULONG_NOT_DEFINED from the CFLAGS macro in the newly created
Makefile. Then type make at the prompt. Be prepared to wait awhile for
this package to compile.
Running Pari
After you have compiled the source files for Pari, type gp at the
console prompt. Your prompt will be a question mark (?). Start by
typing simple arithmetic expressions at this prompt. You should be
rewarded with answers immediately. Let's look at the following sample
session:
? 4*8
%1 = 32
? 4/7*5/6
%2 = 10/21
The answer was returned to us in fractions. To get real numbers,
introduce just one real number in the equation. You will then get the
answer as a real number. The percent signs identify the returned line
numbers.
? 4.0/7 * 5/6
%3 = 0.4761904761904761904761904761
To set the precision in number of digits, you use the ?\precision
command. The maximum number of digits is 315,623, a large number for
just about all users. For a modest precision of 10 digits to the right
of the decimal point, use
?\precision = 10
precision = 10 significant digits
? 4.0/7*5/6
%4 = 0.47619004761
You can even work with expressions, as shown in the following example:
? (x+2)*(x+3)
%5 = x^2+5*x + 6
You can assign values to variables to get the correct answer from
evaluating an expression.
? x = 3
%6 = 3
? eval(%5)
%7 = 60
This is not where the power of Pari ends, though. You can factor
numbers, solve differential equations, and even factor polynomials.
The FTP site for Pari contains a wealth of information and samples.
See megrez.math.u-bordeaux.fr. Also, the examples and docs directories
contain samples and the manual to help you get started.
Using LISP-STAT
For statistical computing, consider using LISP-STAT. Written by Luke
Tierney at the University of Minnesota, LISP-STAT is a very powerful,
interactive, object-oriented LISP package.
Where To Get LISP-STAT
The LISP-STAT package is available from ftp.stat.umn.edu in the
/pub/xlispstat directory. Get the latest tar file version you
can—currently, xlispstat-3-44.tar.gz. In order to build this file
you need the dld library for Linux. This dld library is found in
tsx-11.mit.edu in the /pub/linux/binaries/libs directory as
dld-3.2.5.bin.tar.gz. Install this dld library in the /lib directory
first.
Running xlispstat
At the command prompt in an Xterm, type xlispstat. You will be
presented with a > prompt. Type commands at this prompt. For example,
to multiply two matrices together, use the command:
> (def a (matrix '(3 3) '(2 5 7 1 2 3 1 1 2)))
A
> (def b (matrix '(3 1) '(4 5 6)))
B
> (matmult a b)
#2A((75.0) (32.0) (21))
The variables in LISP-STAT are not case-sensitive. Note the single
quote (') before the list of numbers for the matrix. If you omit the
quote, the list will be evaluated and replaced with the result of the
evaluation. By leaving the single quote in there, you are forcing the
interpreter to leave the list in its place.
Let's try solving a simple set of linear equations using LISP-STAT.
The following would be a simple example to solve:
3.8x + 7.2y = 16.5
1.3x - 0.9y = -22.1
The following script would set up and solve this linear equation
problem:
> (def a (matrix '(2 2) '(3.8 7.2 1.3 -0.9)))
A
> (def b (matrix '(2 1) '(16.5 -22.1)))
B
> (matmult (inverse a) b)
#2A((-11.288732394366198) (8.249608763693271))
You can do other math operations on lists of numbers as well. See the
following example for calculating the mean of a list of numbers:
> (def sm (list 1.1 2.3 4.1 5.7 2.1))
SM
> (mean SM)
3.06
There are many plotting functions available for LISP-STAT. For
plotting one variable, try the function plot-function. For (x,y) pairs
of numbers, use the plot-lines function. For a function of two
variables, use the spin-function. For 3-D plots, use the spin-plot
function.
Plots are not limited to lines. You can do histograms, planar plots,
and so on. See the help pages for details on specifics of how to
generate these plots. Two or more plots can be linked together so that
changes in one set of data can be reflected in another. You can add
points to a plot using the add-points function. For reconfiguring how
the points are displayed, you can send commands to the plot windows.
Plots can be linked together to enable more than one view of the same
data.
Each plot is displayed in an X window. You can move the mouse cursor
over a point, and it will echo back a value for you.
To get help on this system, use the help command. The help
documentation for this command should be visible. If nothing shows up,
check the environment variables to see if the binaries are in the
PATH.
A Last Note
For simple math operations involving spreadsheets, you can always use
the xspread program provided with the X package. (The CD-ROM at the
back of the book has version 2.1.) For more powerful spreadsheet
functions, you might want to resort to a commercial spreadsheet
package and take advantage of its support, too. The XESS spreadsheet
is available for Linux from Applied Information systems, (919)
942-7801 or http://www.ais.com/Xess. You can share data between
spreadsheets, or use the API to develop and have access to a full
suite of math functions available on spreadsheets that run under DOS
or UNIX.
Wolfram Research has released its Mathematica program for Linux. The
Mathematica package has extensive numeric and symbolic capabilities,
2-D and 3-D graphics, and a very large library of application
programs. With an additional feature called MathLink, you can exchange
information between other applications on a network. You can get more
information about Mathematica from info@wri.com or http://www.wri.com.
Summary
You have several options when it comes to performing mathematical
operations or writing such applications under Linux. You can either
write the code yourself using C, FORTRAN, or other available
languages—or you can use a package. If you are familiar with
MATLAB, consider using Scilab. For regular expressions and
polynomials, try using Pari. If you are a LISP user or want to do
vector operations or statistics, consider using the LISP-STAT package.
--
Enjoy Linux!
-----It's FREE!-----
¡ù ÐÞ¸Ä:£®netiscpu ÓÚ Jul 25 05:59:54 Ð޸ı¾ÎÄ£®[FROM: mtlab.hit.edu.cn]
¡ù À´Ô´:£®×Ï ¶¡ Ïã bbs.hit.edu.cn£®[FROM: fengyun.hit.edu.]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
Ò³ÃæÖ´ÐÐʱ¼ä£º202.650ºÁÃë