« Découvrir Scilab/Calcul numérique » : différence entre les versions

Contenu supprimé Contenu ajouté
export vers d'autres chapitres
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 26 :
: ƒ(''x'') = 2·''x''
peut se définir par
<sourcesyntaxhighlight lang="scilab">
deff("[y] = f(x)", "y = 2*x")
</syntaxhighlight>
</source>
On peut aussi utiliser l'instruction <code id="function2">function()</code> sous la forme
<sourcesyntaxhighlight lang="scilab">
-->function [y] = f(x)
--> …
--> endfunction
</syntaxhighlight>
</source>
la formule, sous la forme <code>y = ''expression''</code>, étant placée à la place des trois points. Avec l'exemple ci-dessus, cela donne :
<sourcesyntaxhighlight lang="scilab">
-->function [y] = f(x)
-->y=2*x
-->endfunction
</syntaxhighlight>
</source>
(voir aussi le chapitre ''[[Découvrir Scilab/Programmation|Programmation]]'').
 
La fonction s'utilise par la suite de la même manière qu'une fonction interne (sur l'exemple ci-dessus) :
<sourcesyntaxhighlight lang="scilab" id="feval2">
-->f(2)
ans =
Ligne 54 :
 
2.
</syntaxhighlight>
</source>
 
== Graphe d'une fonction ==
 
Il est souvent utile de pouvoir afficher des fonctions, ainsi voici un exemple de la syntaxe Scilab pour afficher la représentation graphique ''y'' = ƒ(''x'') d'une fonction ƒ.
<sourcesyntaxhighlight lang="scilab">
t=[1:0.1:30]; // t est un vecteur des valeurs de 1 à 30 par pas de 0,1
 
Ligne 65 :
 
plot(t, f(t)) // tracé de la fonction
</syntaxhighlight>
</source>
 
{{loupe|../Graphiques et sons#Tracé de fonction}}
Ligne 80 :
 
Le problème de la précision peut parfois se manifester sur des calculs « banals ». Par exemple, le vecteur <code>[-5.1:0.2:5.1]</code> devrait contenir les 51 éléments {–5,1 ; –4,9 ; … ; 4,9 ; 5,1}. Or, les cinquante additions successives de la quantité 0,2, du fait des erreurs d'arrondis, font que le dernier élément calculé est légèrement supérieur à 5,1 (il vaut environ 5,1 + 2⋅10<sup>-15</sup>) et donc la liste s'arrête à 4,9. Ce genre de problème peut se gérer avec la commande <code>nearfloat()</code> :
<sourcesyntaxhighlight lang="scilab">
-5.1:0.2:nearfloat("succ", 5.1)
</syntaxhighlight>
</source>
ou bien, pour la génération de vecteurs, avec la commande <code>linspace()</code>.
 
Ligne 99 :
| site = Aide de Scilab
}}</ref> :
<sourcesyntaxhighlight lang="scilab">
1-exp(gammaln(365 + 1)-(gammaln(365 - 23 + 1) + 23*log(365)))
</syntaxhighlight>
</source>
On peut également retravailler la formule en
: <math>1 - \frac{365 - 22}{365} \times\frac{365 - 21}{365} \times \ldots \times \frac{365 - 0}{365}</math>
et utiliser
<sourcesyntaxhighlight lang="scilab">
1 - prod( (343/365):(1/365):(364/365) )
</syntaxhighlight>
</source>
Pour effectuer des tests, Scilab dispose de la constante spéciale <code>%eps</code> qui est égale à la plus petite valeur absolue représentable.