Page 1 sur 1
[Débutant] définir une fonction
Publié : mer. mars 09, 2011 5:20 pm
par maurice
Bonjour,
Je débute et j'essaie de définir une fonction qui calcule une intégrale. mais voila, ca ne travaille pas bien, je ne comprends pas pourquoi. J'ai fait une capture d'écran
Avec la fonction ca donne +inf au lieu de 0.5
Merci d'avance et désolé de débuter
Maurice
Re: [Débutant] définir une fonction
Publié : mer. mars 09, 2011 7:41 pm
par frederic han
Bonsoir,
je pense qu'il faut retirer le t dans la declaration:
local
en effet, si on insere un print(t) entre le local et l'integrale, on voit qu'il est affecte a 0 et du coup il n'est pas utilise comme variable muette dans l'integrale.
Frederic
Re: [Débutant] définir une fonction
Publié : mer. mars 09, 2011 9:23 pm
par maurice
Merci effectivement, j'avais ajouté le local t car, lorsque l'on appuie sur F9 le message suivant apparaissait :
Code : Tout sélectionner
// Parsing loinormale
// Warning: t, declared as global variable(s) compiling loinormale
Merci
à plus tard pour d'autres question de débutant !
Maurice
Re: [Débutant] définir une fonction
Publié : jeu. mars 10, 2011 6:25 am
par parisse
Pour éviter le warning, vous pouvez aussi faire purge(t) après la déclaration local t;
Avec les versions en tests de xcas, vous pouvez aussi utiliser la déclaration global t;
Re: [Débutant] définir une fonction
Publié : jeu. mars 10, 2011 9:17 pm
par maurice
Bonjour,
Et merci pour votre aide,
elle m'a permis de construire une table de la loi normale dans un document latex en m'inspirant des travaux de
Guillaume Conan.
Voici le code :
Je suis bien sur preneur pour tout commentaire et remarque qui pourrait me faire progresser et améliorer le code.
Le valeurs des dernières lignes diffèrent de celles trouvées sur
Wikipédia. sans doute à cause d'arrondis (sur wikipédia bien sur).
merci encore
Edit : le message avec le code latex ne passe pas : j'ai le message :
Method Not Implemented
POST to /XCAS/posting.php not supported.
Apache/2.2.0 (Fedora) Server at pcm1.e.ujf-grenoble.fr Port 80
Voici donc la procédure principale :
Code : Tout sélectionner
loinormale(L):={
local x, dx, dy, I, T, k, p, c;
x:=L[0];
dx:=L[1];
dy:=L[2];
c:=floor(dy/dx)+1;
T:="\\begin{tabular}{*{"+c+"}{|c}|}
\\hline";
for(p:=0; p<=x; p:=p+dy){
if(p==0)then{
for(k:=0; k<=dy; k:=k+dx){
if(k==0)then{T:=T+"\\cellcolor{yellow} \\backslashbox{$n$}{$p$} &"}
else{
if(k==dy)then{T:=T+"\\cellcolor{yellow} \\numprint{"+eval(k-dx)+"} \\\\\\hline"}
else{T:=T+"\\cellcolor{yellow} \\numprint{"+eval(k-dx)+"} &"}
}
}}
else{
for(k:=0; k<=dy; k:=k+dx){
if(k==0)then{T:=T+"\\cellcolor{yellow} \\numprint{"+eval(p-dy)+"} &"}
else{
I:=evalf(integrate((exp(-0.5*t^2))/sqrt(2*pi),t,-infinity,(p-dy)+(k-dx)));
if(k==dy)then{T:=T+"\\numprint{"+round(I,5)+"} \\\\\\hline"}
else{T:=T+"\\numprint{"+round(I,5)+"} &"}
}
}}
}
T:=T+"\\end{tabular}";
}
:;