Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1409 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  langage R

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

langage R

n°1550259
nadia-c
Posté le 26-04-2007 à 20:21:33  profilanswer
 

Bonjour,  
cela fait 4 mois que j'apprends à me servir du langage R et j'ai un projet a présenter pour mes exams. je dois créer un fonction qui calcule des distances entre des points.  
 
 
Soit une grille G de Z*Z de taille (2,2) (puis (3,3)…).  
Chaque point de la grille est déterminé par ses coordonnées entières X,Y, et prend une valeur binaire +1 ou –1 (notée x).  
La grille est représentée par une matrice taille (2,2) (puis (3,3)…), dont les coefficients ont pour valeur +1 ou –1.  
On définit sur cette grille une distance entre deux points A et B de coordonnées respectives (x1, y1) et (x2,y2) par : d(A,B) = abs(x1-x2) + abs(y1 – y2)  
La matrice des distances pour une grille G de taille (n,n) (ayant donc n2 points) est une matrice D de taille (n2, n2) dont l’élément de position i,j correspond à la distance entre les deux points  
numérotés i et j.  
On souhaite :  
1. Calculer cette matrice de distances  
2. Calculer pour une grille donnée (choisie au hasard) la fonction U(G) qui est la somme des valeurs xixj pour tous les couples de points (i,j) vérifiant d(A,B)=1  
Réaliser les deux étapes précédentes pour des grilles choisies au hasard et de différentes  
tailles (n=2,3,4,5…)  
 
Pour la premiere question j'ai réussi a créer une fonction qui calcule la distance entre deux points:  
 
d=function(a,b){  
a=c(x1,y1)  
b=c(x2,y2)  
di=abs(x1-x2)+abs(y1-y2);  
print(di)  
}  
x1=0  
y1=3  
x2=0  
y2=1  
 
> d(a,b)  
[1] 2  
 
 
 
Maintenant, si j'ai une matrice (2,2) j'ai donc 4 points :  
a=0,0  
b=1,0  
c=1,1  
d=0,1  
J'essaie de créer une fonction qui calcule la distance entre n'importe quel points, c'est a dire, si j'ecris : d(c,b) la fonction calcule la distance entre le point c et le point b et affiche donc 1.  
J'ai pensé qu'il fallait créer une boucle, mais je n'y arrive pas :  
 
 
d=function(a,b){  
a=c(x1,y1)  
b=c(x2,y2)  
c=c(x3,y3)  
d=c(x4,y4)  
di=abs(x[i]-x[j])+abs(y[i]-y[j]);  
for(i in 1:4)  
for(j in 1:4)  
print(di);  
}  
x1=0  
y1=0  
x2=1  
y2=0  
x3=1  
y3=1  
x4=1  
y4=0  
 
Ou encore:
 
d=function(x1,y1,x2,y2){
for(i in 1:4)
for(j in 1:4)
di=abs(x[i]-x[j])+abs(y[i]-y[j])
d(x[i],y[i],x[j],y[j])
print(di)  
x[1]=0
y[1]=0
x[2]=1
y[2]=0
x[3]=1
y[3]=1
x[4]=0
y[4]=1
}
 Quand j'essaie, un message d'erreur apparait
> d(0,0,0,1)
Erreur : évaluations trop profondément imbriquées : récursion infinie / options(expressions=) ?
 
Que signifie "évaluations trop profondément imbriquées" ?
 
Si quelqu'un connait le langage R et peut m'aider... merci.  

mood
Publicité
Posté le 26-04-2007 à 20:21:33  profilanswer
 

n°1550262
Tamahome
⭐⭐⭐⭐⭐
Posté le 26-04-2007 à 20:31:12  profilanswer
 

jamais entendu parler de ce machin la.


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1550276
Elmoricq
Modérateur
Posté le 26-04-2007 à 21:01:09  profilanswer
 

Idem, jamais entendu parler, j'ai dû consulter wikipedia : http://en.wikipedia.org/wiki/R_language

 

Par contre, l'erreur est explicite : tu exploses la pile. En gros, ta fonction d(x1,y1,x2,y2) est récursive, mais il n'y a pas de condition d'arrêt. Donc ça donne ça :


d
|- d
    |- d
        |- d
            |- ... (à l'infini)

 

Et donc au bout d'un moment, ça tombe.


Message édité par Elmoricq le 26-04-2007 à 21:01:52
n°1550301
nadia-c
Posté le 26-04-2007 à 22:27:42  profilanswer
 

ok,merci pour votre aide.
J'essaie et je vous tiens au courant.
A bientot.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  langage R

 

Sujets relatifs
Quel langage pour des petites applications Windows avec des forms ?Quel langage "haut niveau" choisir ? [updated]
Quel langagelangage sas
jeux fait avec sdl en langage cChoix du langage
Choix langage création site web dynamiqueQuel langage choisir ?
langage d'interrogation ldapAide langage C
Plus de sujets relatifs à : langage R


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR