Table des matières Scilab

Interface avec Scilab

1. Élément Scilab

L'attribut type (optionnel) permet de préciser l'action à effectuer

1.a. Attribut type='code'

C'est la valeur par défaut. Le noeud scilab doit contenir le texte du code scilab à exécuter. Le code de tous les blocs scilab est exécuté en une seule fois. Le code apparait dans la page sous forme d'un bloc préformaté identique à l'original; il faut donc éviter les lignes trop longues.

Exemple : le fragment xml suivant :

      
<scilab>      
function y=f(x)   
    y=sin(2*%pi*x)           
endfunction      
x=linspace(0,5,100); 
y=f(x);   
titre="sinus"    
</scilab>  
            

génère le résultat :


function y=f(x)     
    y=sin(2*%pi*x)  
endfunction  
x=linspace(0,5,200);   
titre='sinus';  
            

1.b. Attribut type='plot'

Le noeud scilab doit contenir le code d'une (seule) fonction Mathematica de tracé, par exemple plot2d ou plot3d. L'image générée est au format PNG. Les attributs supplémentaires sont name pour le nom du ficher png (avec l'extension), width et height pour la taille de l'image. Une figure PDF est aussi générée, avec un lien vers cette figure apparaissant à côté de l'image PNG. Certaines figures très complexes ne peuvent être converties en PDF : si l'attribut pdf est false, la figure PDF n'est pas générée.

Exemple : le fragment xml

<scilab type="plot" name="plotSinus.png" width="600" height="600">fplot2d(x,f)</scilab>
            

génère le résultat :

plotSinus=scf();
fplot2d(x,f)
plotSinus.pngplotSinus.pdf

L'extension du nom de fichier permet de spécifier le type d'image demandée. On peut aussi obtenir une image SVG :

<scilab type="plot" name="plotSinus2.svg" width="600" height="600">fplot2d(x,f)</scilab>
            
plotSinus2=scf();
fplot2d(x,f)
../../../../figures/scidocxml/pages/scilab/plotSinus2.svgFigure pleine page

1.c. Attribut type='print'

Le noeud scilab contient une expression Scilab qui est convertie en chaîne de caractère.

Exemple : le fragment xml

 
<scilab> a=[1,2,3;1,2,3]</scilab>
<scilab type='print'>a</scilab>             
            

génère le résultat :

 a=[1,2,3;1,2,3]
1 2 3 
1 2 3 

1.d. Attribut type='datatable'

Le noeud scilab permet de convertir une matrice scilab numérique (valeurs réelles) en structure de donnée xml. Dans ce cas, la balise ne fournit aucun résultat visible. Il doit y avoir au moins l'un des attributs export ou id (mais pas les deux). L'attribut export indique le nom du fichier xml où est enregistrée la liste, pour un usage dans la même page ou dans une autre page. L'attribut id identifie la liste pour un usage dans la même page. Le noeud scilab doit contenir un élément title, un élément type précisant le type de données dans chaque colonne (%g : réel flottant ou %s : chaine de caractères, séparés par un ;), un élément head donnant les légendes des colonnes, un élément array indiquant la matrice scilab à convertir.

Exemple : le fragment xml

<scilab type="datatable" id="tableA">
        <title>Table A</title>
        <type>%g;%g;%g</type>
        <head separator='#'>a#b#c</head>
        <array>a</array>
</scilab>                
                

génère une table numérique qui peut être affichée avec le fragment suivant :

<table type="data" src="#tableA"/>

qui donne :

Table Aabc123123

1.e. Attribut type='xml'

L'élément scilab contient dans ce cas une chaine de caractères Scilab, constituant un fragment XML qui est inséré à l'emplacement correspondant.

Exemple : le fragment suivant (auquel il faut ajouter un CDATA pour encadrer la chaine)

<scilab type="xml">"<p><sb>"+string(sqrt(2))+"</sb></p>"</scilab>

produit le paragraphe suivant :

1.4142136

La principale application de cette option est la génération de courbes et autres figures générées par le calcul. Voir la page sur le tracé de courbes avec le module Draw.

1.f. Attribut visible

L'attribut optionnel visible indique si le code scilab doit être visible (true, valeur par défaut) ou pas (false) dans la page. Dans ce dernier cas, le code est tout de même présent dans le fichier html final mais avec un attribut css le rendant invisible. Dans le cas type='math', il y a toujours visibilité de l'équation MathML générée.

2. Exemple

Diffraction par une ouverture circulaire :


a=0.0001; // diametre
lambda=0.5e-6; 
k=2*%pi/lambda;
function i=intensite(theta) 
    x = k*a/2*sin(theta)
    i=(2*besselj(1,x)/x)**2
endfunction 
theta = linspace(-0.02,0.02,200);
            
figDiffraction=scf();
fplot2d(theta,intensite,style=5)
figDiffraction.pngfigDiffraction.pdf

Création de la matrice à exporter

 
n=length(theta); 
m=zeros(n,2); 
for p=1:n, m(p,1)=theta(p); m(p,2)=intensite(theta(p)); end;
            

Exportation des données puis tracé de la courbe avec le fragment xml suivant :

            <scilab type="datatable" export="tableB.xml">  
                    <title>Table B</title>
                    <type>%g;%g</type>
                    <head separator='#'>theta#I</head>
                    <array>m</array> 
            </scilab> 
                <plot type="plot2d" name="figDiffraction.svg" width="600">
                    <plot2d> 
                        <view xmin="-0.02" xmax="0.02" ymin="0" ymax="1"/>
                        <legends>
<title>Diffraction par un ouverture circulaire (a = 0.1 mm, \lambda;=0.5 &amp;\m)</title> 
                            <x>theta</x> 
                            <y>I</y> 
                        </legends>
                        <axes xticks="10" yticks="10" grid="true"/>
                        <plotxy datasrc="tableB.xml" x="0" y="1"> 
                            <curve stroke="red" stroke-width="1" dasharray="none"/>
                        </plotxy>
                    </plot2d>
                </plot>  
            
figDiffraction.svgFigure pleine page
Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.