J.Ph. Chancelier1
L'interface Java/Scilab repose sur la classe Matrix
du paquet
javasci
et sur une bibliothèque native libjavasci.so
.
Elle permet de transmettre des instructions à Scilab et
d'échanger des données entre Java et Scilab ;
ces données sont des matrices pleines.
Il faut dire où se trouve la bibliothèque libjavasci.so
, en
exécutant la commande suivante :
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/usr/local/eleves/scilab-2.6-lib
On notera qu´en fait cette commande est déjà présente dans les fichiers de configuration des élèves et il est donc inutile de la taper.
Sauvegardez le fichier d'archives
MatrixUtilities
on suivra le lien suivant :
javasci.tgz
dans votre répertoire
~/info/classes
, placez-vous dans ce répertoire et extrayez les fichiers de classe qu'il contient au moyen de :
tar zxvf javasci.tgz
Ceci crée un répertoire javasci
sous ~/info/classes
, qui contient les fichiers de classe nécessaires.
Pour accéder à la documentation des fonctionnalités des classes
Matrix
et MatrixUtilities
, on suivra le lien
suivant : Matrix et MatrixUtilities.
import javasci.* ; class TestMatrix { public static void main(String[] args) { // creation d'une matrice 4x4 MatrixUtilities a = new MatrixUtilities("A",4,4); // on la remplit aléatoirement (loi uniforme sur (0,1)). a.rand(); // display Scilab de la matrice. a.disp(); MatrixUtilities b = new MatrixUtilities("B",2,2, new double [] {1,2,3,4} ); b.disp(); // calcul de l'inverse b.inv(); b.disp(); MatrixUtilities v = new MatrixUtilities("Void",0,0); v.disp(); // Attention aux ' il faut les doubler // on fait executer une instruction Scilab Matrix.scilabExec("write(%io(2),''coucou'')"); MatrixUtilities h = new MatrixUtilities("H",2,2, new double [] {1,2,3,4} ); // on envoit h a Scilab h.scilabSend(); // on fait executer une instruction Scilab Matrix.scilabExec("disp(H)"); // un peu de dessin double x[] = new double[10]; double y[] = new double[x.length]; for ( int i= 0 ; i < x.length ; i++ ) { x[i]= (double) i; y[i]= Math.sin((double) i); } Matrix mx = new Matrix("x",1,x.length,x); Matrix my = new Matrix("y",1,y.length,y); mx.scilabSend(); my.scilabSend(); Matrix.scilabExec("plot(x,y);halt();"); } }
import javasci.* ; class TestMatrix1 { public static void main(String[] args) { MatrixUtilities a = new MatrixUtilities("A",2,2,new double [] {1,2,3,4}); MatrixUtilities b = new MatrixUtilities("B",2,2,new double [] {5,6,7,8}); MatrixUtilities x = new MatrixUtilities("X",1,2); a.scilabSend(); b.scilabSend(); Matrix.scilabExec("C=A*B;"); // on suppose qu'on ne connait pas la taille de C ? // on la demande a Scilab x.scilabJob("X=size(C);"); double xv[]= x.getData(); MatrixUtilities c = new MatrixUtilities("C",(int) xv[0],(int) xv[1]); c.scilabGet(); double val[]= c.getData(); for ( int i=0 ; i < val.length ; i++) System.out.println("val " + i + "=" + val[i]); c.disp(); } }
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.47)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 javascilab.tex
The translation was initiated by Jean-Philippe Chancelier on 2001-11-07