Page 2 sur 2

Re: Programme d'étude pour théorie des Jeux

Message non luPosté: 24 Mar 2017, 12:17
de Hamza.S
elle cherche la variable varlist dans equs et ne la trouve pas
elle ne considère pas que c'est une liste de variable mais une variable sensée être listée dans equs


pour la liste des conditions, je ne sais pas s'il y a une fonction fait pour dans le doute je dirais une boucle for
Code: Tout sélectionner
cond:=listcond[1]
n:=dim(listcond)
for i,2,n
  cond:=cond and listcond[i]
endfor

ça ne devrait pas poser problème

Re: Programme d'étude pour théorie des Jeux

Message non luPosté: 24 Mar 2017, 13:44
de Persalteas
Au final, j'ai décidé de tout intégrer au système à passer à solve, ça pose moins de soucis.

Code: Tout sélectionner
Define study_game(mat)=
Prgm
:DelVar x,y,z
:n:=colDim(mat)
:vars:=list▶mat(left(augment({x,y,z},when(n>3,seq(#("x"&string(i)),i,1,n-3),{})),n),1)
:dvars:=mat*vars
:
:Disp "Gains moyens:"
:For k,1,n
:Disp "∆"&string(vars[k,1]),"=   ",dvars[k,1]
:EndFor
:d:=dotP(vars,dvars)
:Disp "∆ =     ",d
:
:Disp "Equations du réplicateur:"
:sysm:=newMat(1,n+1)
:For k,1,n
:sysm[1,k]:=vars[k,1]*(dvars[k,1]-d)
:Disp vars[k,1],"' = ",vars[k,1],"(",expand(dvars[k,1]-d),")"
:EndFor
:sysm[1,n+1]:=sum(vars)[1,1]
:rhs:=newMat(1,n+1)
:rhs[1,n+1]:=1
:varlist:=mat▶list(vars)
:equs:=solve(augment(mat▶list(vars≥newMat(n,1)),mat▶list(sysm=rhs)),{x,y,z})
:equmatrix:=exp▶list(equs,{x,y,z})
:npts:=rowDim(equmatrix)
:
:Disp npts," points d'équilibre:   ",equmatrix
:
:Disp "Réduction en "&string(n-1)&"D:"
:cond:=varlist[n]=1-sum(varlist)+varlist[n]
:For k,1,n-1
:Disp vars[k,1],"' = ",vars[k,1],"(",expand(dvars[k,1]-d)|cond,")"
:EndFor
:
:Disp "Matrice Jacobienne en "&string(n-1)&"D:"
:j:=seq(seq((vars[i,1]*(dvars[i,1]-d),vars[j,1])|cond,j,1,n-1),i,1,n-1)
:Disp j
:
...
:EndPrgm


Ce n'est toujours pas généralisé en dimension n puisque je dépends de solve et expr>list à qui je dois filer les variables en dur.
De toutes façons il faut aussi que je m'occupe de la fin.

Je vous donnerai des nouvelles quand ça aura avancé.
Merci déjà ! ;)

Re: Programme d'étude pour théorie des Jeux

Message non luPosté: 25 Mar 2017, 11:35
de Adriweb
Hamza.S a écrit:
Code: Tout sélectionner
cond:=listcond[1]
n:=dim(listcond)
for i,2,n
  cond:=cond and listcond[i]
endfor


Au passage, ceci est je pense plus clair:
Code: Tout sélectionner
cond:=true
n:=dim(listcond)
for i,1,n
  cond:=cond and listcond[i]
endfor

Il faudrait vraiment du forEach, map, reduce, etc. en Basic :P

Re: Programme d'étude pour théorie des Jeux

Message non luPosté: 26 Mar 2017, 12:52
de Bisam
Désolé pour la petite erreur dans mon code... J'ai tout tapé directement sur le forum, sans vérifier si ça marchait.
D'ailleurs, j'ai eu du bol en mettant les indices i et j de la jacobienne dans le bon ordre :p

Re: Programme d'étude pour théorie des Jeux

Message non luPosté: 08 Avr 2017, 11:26
de Persalteas
Bon, je ne trouve pas de façon de faire comprendre à solve une liste de variables sans les écrire en dur, donc je laisse tomber la dimension n...
Avec un exemple simple,
Code: Tout sélectionner
varlist:={x,y}
solve({3*x+2*y=0,y-x=−1},varlist)

me répond bêtement varlist=c1 and 3*x+2*y=0 and x-y=1.

Re: Programme d'étude pour théorie des Jeux

Message non luPosté: 08 Avr 2017, 11:30
de clifward
Avec :
Code: Tout sélectionner
varlist:={x,y}
solve({3*x+2*y=0,y-x=−1},varlist[1])

ça marche, et ça renvoie x et y.
Par contre je sais pas si c'est généralisable dans des cas plus complexes...
(en écrivant juste une des variables du système, ça semble marcher)

Re: Programme d'étude pour théorie des Jeux

Message non luPosté: 08 Avr 2017, 11:33
de Persalteas
:8): :favorite:

EDIT: même question avec exp>list()...

Code: Tout sélectionner
expression:= x=0 and y=0 and z=1
varlist:={x,y,z}
exp>list(expression, varlist)


J'attendrais qu'il me réponde [0,0,1], mais il veut des noms de variables non définies.

Re: Programme d'étude pour théorie des Jeux

Message non luPosté: 11 Avr 2017, 21:43
de Bisam
Tu peux tricher en retardant l'évaluation grâce à des chaînes de caractères, utilisées avec string et expr.
Code: Tout sélectionner
expression := x=0 and y=0 and z=1
varlist:={x,y,z}
expr( "exp►list(expression," & string(varlist) & ")" )