Calcul d'une distance sur une grille (langage R)

Tout ce qui concerne les différents logiciels mathématiques (Matlab, Maxima, Scilab, R, Maple, Mathematica, ...) et les calculatrices scientifiques.
Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.
> Préciser le nom du logiciel concerné dans le titre de votre message.

Calcul d'une distance sur une grille (langage R)

Messagepar misslolotte » Mardi 24 Avril 2007, 22:49

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 doit créer un fonction qui calcule des ditances 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:

Code: Tout sélectionner
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'assaie de crée une fonction qui calcule la distance entre n'importe quel points, c'est a dire, si j'ecrit : 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 :

Code: Tout sélectionner
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


Si quelqu'un peut m'aider pour répondre à la premiere question... merci.

[edit guiguiche : balises 'code' pour améliorer la lisibilité]
misslolotte
Utilisateur
 
Messages: 6
Inscription: Mardi 24 Avril 2007, 12:10
Localisation: MARSEILLE

Publicité

Messagepar Arnaud » Mardi 24 Avril 2007, 23:14

Je ne connais pas du tout le langage R, même jamais entendu parlé.
Tu compiles avec quoi ?
Arnaud

Un peu d'info - Pyromaths
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7103
Inscription: Lundi 28 Août 2006, 13:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Messagepar misslolotte » Mardi 24 Avril 2007, 23:33

Le langage R est un logiciel de programmation utilisé pour l'analyse statistique.
Ca ressemble un peu au langage C, mais simplifié, moins rigoureux.
On a pas besoin de la compiler (il me semble) ; en tout cas lorsque je m'en sers je n'ai rien de particulier a faire. Voila, a bientot.
misslolotte
Utilisateur
 
Messages: 6
Inscription: Mardi 24 Avril 2007, 12:10
Localisation: MARSEILLE

Messagepar gigiair » Mercredi 25 Avril 2007, 09:49

Arnaud a écrit:Je ne connais pas du tout le langage R, même jamais entendu parlé.
Tu compiles avec quoi ?

R est un must pour tous les traitements statistiques. C'est un produit phare du logiciel libre. Ça fonctionne sur toutes les plates-formes.
tout est centralisé sur CRAN http://cran.r-project.org/

Je pense qu'en cherchant un peu, il y a de la doc en français.
La présentation de R est là http://www.r-project.org/

Il y a un tutoriel qui permet de démarrer rapidement.
JJR.
D'Angers, mais pas dangereux.
gigiair
Péta-utilisateur
 
Messages: 1987
Inscription: Samedi 08 Juillet 2006, 20:56
Localisation: Angers

Messagepar misslolotte » Dimanche 29 Avril 2007, 14:50

Bonjour, personne ne peut m'aider a créer ma fonction alors, ou me dire ou sont mes erreurs?...
misslolotte
Utilisateur
 
Messages: 6
Inscription: Mardi 24 Avril 2007, 12:10
Localisation: MARSEILLE

Messagepar Arnaud » Dimanche 29 Avril 2007, 16:57

Je ne connais pas la syntaxe de ce langage, mais par habitude d'autres langages, j'ai envie de dire que ton "di" devrait être dans la boucle, et non pas juste avant.

Comme dit, indication sans garantie.
Arnaud

Un peu d'info - Pyromaths
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7103
Inscription: Lundi 28 Août 2006, 13:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Messagepar misslolotte » Dimanche 29 Avril 2007, 17:14

OK,merci pour votre aide, je vais essayer.
misslolotte
Utilisateur
 
Messages: 6
Inscription: Mardi 24 Avril 2007, 12:10
Localisation: MARSEILLE

Messagepar sissoko » Dimanche 29 Avril 2007, 17:18

Bonjour,

Ayant fait une thèse sur le logiciel R, je peux te prodiguer ces conseils :
- Prends tes jambes à ton cou
- Vas dans un cyber café afin de te munir du logiciel R-commander 4.6.20.3265.22 beta 4 (configuration recommandée : windows 94 or higher, pentium 1,5 à 433mhz, 38mo de ram, connexion 43k, directx 4.2, clavier azerty)
- Sors du cyber café afin de rejoindre ton domcile
- Retourne au cyber café
- tape cette commande:
.x <- seq(10.128, 29.872, length=100)
plot(.x, dnorm(.x, mean=20, sd=3), xlab="x", ylab="Density", main=expression(paste("Normal Distribution: ", mu, " = 20, ", sigma, " = 3")), type="l")
abline(h=0, col="gray")
remove(.x)
NormalSamples <- as.data.frame(matrix(rnorm(1000*100, mean=20, sd=3), ncol=100))
rownames(NormalSamples) <- paste("sample", 1:1000, sep="")
colnames(NormalSamples) <- paste("obs", 1:100, sep="")
NormalSamples$mean <- rowMeans(NormalSamples[,1:100])


-Je ne veux pas te macher le travail, j'attend de toi que tu m'explique ce programme ligne par ligne afin que je te donne d'autres conseils dans un avenir proche.

Cordialement.
Sissoko.
Ne pas mettre les boeufs avant la charrue
sissoko
Utilisateur
 
Messages: 2
Inscription: Dimanche 29 Avril 2007, 17:09
Localisation: Henri IV

Messagepar misslolotte » Dimanche 29 Avril 2007, 23:23

Bonjour,
alors j'ai de la chance, je vais pouvoir sauter quelques étapes car j'ai deja le logiciel R-commander 4.6.20.3265.22 beta 4 (configuration recommandée : windows 94 or higher, pentium 1,5 à 433mhz, 38mo de ram, connexion 43k, directx 4.2, clavier azerty).
Par contre je ne comprends pas pourquoi je dois analyser ce programme...
Y'a t-il un rapport avec ma fonction de distance?
En attendant votre réponse je vais quand meme regarder ce programme.
A bientot!
misslolotte
Utilisateur
 
Messages: 6
Inscription: Mardi 24 Avril 2007, 12:10
Localisation: MARSEILLE

Messagepar sissoko » Mardi 01 Mai 2007, 15:25

Me revoici jeune apprentie, je sais que tu attends mes précieux conseils.

Tu ne fais pas de statistiques ? la 1ere partie est une fonction génératrice qui permet de calculer la métrique d'un point a un autre suivant un couple de loi gamma de fisher et géométrique

Concernant la 2eme partie, il s'agit d'une fonction exponentielle logarithmique qui permet de tracer la droite représentant la distance de façon spontanée grâce au théorème 5.23 émis par Pythagore

Enfin la 3eme partie qui à mes yeux est la plus importante concerne la tracé concave suivant une loi du baron de munchesen.

Aussi, je reviens tout juste de lituanie ou j'ai pu participer à une conférence animée par des personnes averties qui tout comme nous utilisaient R-commander.
Ceci dit la-bas j'ai pu apprendre qu'il existe d'autres logiciels plus compétents dans le domaine de l'etude de la statistique.
Ce dernier s'intitulant Java R-C++, 1.4 beta 6 étant la version la plus fiable sur laquelle il te suffira de taper ton énoncé pour avoir automatiquement la solution.

En outre, je pense que tous le mérite me revient mais étant d'une nature généreuse je te permet de profiter de mes lumières et de la gloire qu'elles t'apporteront.

Cordialement.

Sissoko.
Ne pas mettre les boeufs avant la charrue
sissoko
Utilisateur
 
Messages: 2
Inscription: Dimanche 29 Avril 2007, 17:09
Localisation: Henri IV

Messagepar misslolotte » Mardi 01 Mai 2007, 16:07

Bonjour,
j'ai éssayé de faire ce que vous m'avez demandé:

x est vecteur compris entre entre 10.128 et 29.872 et de longueur 100.

plot(.x, dnorm(.x, mean=20, sd=3), xlab="x", ylab="Density", main=expression(paste("Normal Distribution: ", mu, " = 20, ", sigma, " = 3")), type="l") // trace la courbe qui a pour abscisse les valeurs du vecteur x, pour ordonnée la fonction de densité du vecteur x suivant une loi normale avec une moyenne de 20 et un ecart type de 3.

Le titre du graphe est donné par : main=expression(paste("Normal Distribution: ", mu, " = 20, ", sigma, " = 3"))

abline(h=0, col="gray") // trace une droite horizontale pour Y=0 de couleur gris

NormalSamples <- as.data.frame(matrix(rnorm(1000*100, mean=20, sd=3), ncol=100)) // création d'un data frame. Ce data frame est une matrice de taille 1000*100 et suit une loi normale de moyenne 20 et d'ecart-type 3. le nombre de colonne est 100.

rownames(NormalSamples) <- paste("sample", 1:1000, sep="") // donne le nom des lignes de la matrice. Dans ce cas le nom des lignes est sample et va de 1 à 1000

colnames(NormalSamples) <- paste("obs", 1:100, sep="") :: donne le nom des colonnes qui est obs et vat de 1 à 100.

La derniere ligne : je ne sais pas et de toute maniere, il y a une erreure de syntaxe ( Erreur : erreur de syntaxe dans "NormalSamples[tex]mean")

Je voulais vous dire aussi que la matrice ne s'est pas affichée, donc je ne suis vraiment pas sur de mes explications. De plus je ne maitrise pas bien le vocabulaire, donc j'ai fait comme j'ai pu.
misslolotte
Utilisateur
 
Messages: 6
Inscription: Mardi 24 Avril 2007, 12:10
Localisation: MARSEILLE


Retourner vers Logiciels mathématiques

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Baidu [Spider] et 2 invités