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 :

Code : Tout sélectionner

code du document latex
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}";
}
:;