[Débutant] définir une fonction

Utilisation de Xcas

Modérateur : xcasadmin

maurice
Messages : 50
Inscription : jeu. déc. 10, 2009 6:48 pm

[Débutant] définir une fonction

Message par maurice » mer. mars 09, 2011 5:20 pm

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
Pièces jointes
window.png
capture d'écran
window.png (5.64 Kio) Consulté 4803 fois

frederic han
Messages : 1139
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: [Débutant] définir une fonction

Message par frederic han » mer. mars 09, 2011 7:41 pm

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

maurice
Messages : 50
Inscription : jeu. déc. 10, 2009 6:48 pm

Re: [Débutant] définir une fonction

Message par maurice » mer. mars 09, 2011 9:23 pm

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

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: [Débutant] définir une fonction

Message par parisse » jeu. mars 10, 2011 6:25 am

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;

maurice
Messages : 50
Inscription : jeu. déc. 10, 2009 6:48 pm

Re: [Débutant] définir une fonction

Message par maurice » jeu. mars 10, 2011 9:17 pm

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}";
}
:;

Répondre