Précédent   Forum du club des développeurs et IT Pro > Autres langages > Algorithmes > Mathématiques
Mathématiques Forum d'entraide sur les mathématiques et l'algorithmique numérique. Avant de poster : Cours d'algorithmique numérique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/12/2012, 18h44   #1
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Par défaut obtenir des points d'inflexions avec précision

Bonsoir,
J'ai une courbe admettant des points d'inflexions (changements de concavité/convexité). J'ai comme données d'entrée une matrice représentant les valeurs de X et Y.

Je veux obtenir ces points d'inflexions avec précision.
Note: Je ne possède pas de fonction pour obtenir la courbe, je possède des coordonnées des points de la courbe dans une matrice.

Je vous transmets 2 courbes en fichier joint, les points que je cherche à trouver sont en rouge.

Merci d'avance
Images attachées
Type de fichier : png tt.png (17,9 Ko, 23 affichages)
Type de fichier : png tt1.png (9,5 Ko, 21 affichages)
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 19h01   #2
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 837
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 837
Points : 16 517
Points : 16 517
Citation:
Envoyé par orland Voir le message
Je vous transmets 2 courbes en fichier joint, les points que je cherche à trouver sont en rouge.
hum... Ca ne m'a pas l'air d'être toujours des points d'inflexions. Ni même des maximum de courbures. Comment as-tu fais pour savoir où mettre les croix ?
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 20h50   #3
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Bonsoir,
pour la detection des points :
la courbe demeure constante puis elle change de concavité. je cherche à determiner ce point ou elle change de concavité.
Ici je commence l’étude de la courbe de droite à gauche, donc la courbe semble comme une droite horizontale au début puis elle change de concavité.
Enfin je cherche determiner le dernier point de la courbe ; le plus haut point de la courbe(ici ça n'a rien avoir avec les points d'inflexions).

Merci d'avance de m'aidez, ça fait des jours que je cherche sans avoir avancer

Cordialement B.H
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 23h15   #4
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 837
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 837
Points : 16 517
Points : 16 517
Sur l'image de gauche, je ne vois vraiment pas pourquoi les croix représentent les seules "inflexions" de la courbe.

A la rigueur, celle en index=400 pourrait être un max de courbure. Mais il y en a plein d'autre.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 00h10   #5
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
et oui vs avez raison y'en a encore d'autres points d'inflexions. Mais j'ai besoin de detecter que les pentes ayant la forme présenter en fichier joint.
ma question toujours est commet detecter ce genre de point sachant que j'ai pa une fonction qui me permet d'obtenir la courbe.
Images attachées
Type de fichier : png tt2.png (3,8 Ko, 9 affichages)
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 11h33   #6
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 837
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 837
Points : 16 517
Points : 16 517
Citation:
Envoyé par orland Voir le message
et oui vs avez raison y'en a encore d'autres points d'inflexions. Mais j'ai besoin de detecter que les pentes ayant la forme présenter en fichier joint.
ma question toujours est commet detecter ce genre de point sachant que j'ai pa une fonction qui me permet d'obtenir la courbe.
Si tu connais à priori la "forme" de ta courbe, tu peux la modéliser par une équation (paramétrique ou cartésienne) dans laquelle il y a des paramètres/coefficients inconnus.

Avec les points de mesure dont tu disposes, tu peux utiliser des méthodes de régression pour évaluer ces paramètres. Tu obtiens alors l'équation de ta courbe. Tu peux alors faire l'analyse fonctionnelle et trouver les infos qui t'intéressent.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 12h04   #7
souviron34
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 9 651
Détails du profil
Informations personnelles :
Âge : 55

Informations forums :
Inscription : janvier 2007
Messages : 9 651
Points : 12 081
Points : 12 081
Citation:
Envoyé par orland Voir le message
et oui vs avez raison y'en a encore d'autres points d'inflexions. Mais j'ai besoin de detecter que les pentes ayant la forme présenter en fichier joint.
ma question toujours est commet detecter ce genre de point sachant que j'ai pa une fonction qui me permet d'obtenir la courbe.
En dehors de la réponse de pseudocode, je me demande si en fait tu ne cherches pas un changement de courbure, mais un point à parti duquel la pente passe en dessous d'un certain seuil (ou de certains seuils). Auquel cas le calcul est bcp plus asé..

Est-ce le cas ??
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 12h35   #8
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Bonjour,
oui je connais à priori que ma courbe va avoir une certaine "forme", mais je connais pas le nombre de point d'inflexions.
Je vous explique mon cas:
j'étudie la répartition des objets dans l'espace de 2-dimensions. mon data-frame contient un très grand nombre d'objets (>2000 objets). La repartition des objets a une distribution uniforme, le cas précis que j'etudie est lorsque ces objets sont reparties dans l'espace sur 3 "régions" ou "classes" où chaque classe a une densité differente. Donc les pentes ou les points d'inflexions dans ma courbe represente le "passage" d'une densites des points à une autre. Mon but est de détecter ces point la, pour me compendre veuillez voir le fichier joint "tt1" où il y'a un point qui represente le passage d'une densité à une autre et un autre point celui qui a comme ordonnée=max(y).
j'ai les coordonnées de ces objets.
j'espere que c'est clair ma problématique.
Citation:
En dehors de la réponse de pseudocode, je me demande si en fait tu ne cherches pas un changement de courbure, mais un point à parti duquel la pente passe en dessous d'un certain seuil (ou de certains seuils). Auquel cas le calcul est bcp plus asé..

Est-ce le cas ??
oui je crois que ceci que je suis en train de le chercher
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 16h38   #9
souviron34
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 9 651
Détails du profil
Informations personnelles :
Âge : 55

Informations forums :
Inscription : janvier 2007
Messages : 9 651
Points : 12 081
Points : 12 081
Désolé, ton exposé n'est toujours pas clair ...

Citation:
Envoyé par orland Voir le message
La repartition des objets a une distribution uniforme, le cas précis que j'etudie est lorsque ces objets sont reparties dans l'espace sur 3 "régions" ou "classes" où chaque classe a une densité differente.
y'a comme une contradiction là

Fais un effort pour expliquer ton problème parce que on ne comprend pas vraiment..

Un petit exemple serait le bienvenu..


Citation:
Envoyé par orland Voir le message
oui je crois que ceci que je suis en train de le chercher
C'est pas encore très clair...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 20h26   #10
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Bonsoir,
Ok j'explique encore mon problème dans un petit exepmle:
j'ai un data frame qui contient un très grand nombre d'objets. ces objets sont réparties sur 2 classes. la densité des objets dans ces classes sont différentes; une ayant une très grande densité et l'autre une densité plus petite comme c'est illustré dans le fichier joint "tt3". bien sur ces objets sont répartis dans l'espace de 2-dimensions.
Mon algorithme consiste a:
*calculer les distances entre chaque objet et les (n-1) objets restants et enregistrer ceci dans une matrice carrée (n lignes, n colonnes avec n:nbr d'objets).
*faire le tri croissant des ces distances pour chaque ligne de la matrice et prendre la colonne num 5 qui correspond à la 4eme plus petite distance (5eme colonne puisque la matrice est symétrique). Puis je fait le plot et j'obtient la courbe obtenu dans le fichier "tt1" .
le premier point (marqué en rouge sur la courbe) présente le passage de la 1er calsse ayant la plus grande densité à la 2eme classes ayant la densité plus petite.
je cherche à détecter ce point là, mais je sais pas comment
j'espère que c'est clair ma problématique.
veuillez me poser des questions si c'est pas encore clair .
Images attachées
Type de fichier : png tt1.png (9,5 Ko, 7 affichages)
Type de fichier : png tt3.png (11,7 Ko, 13 affichages)
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 12h16   #11
souviron34
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 9 651
Détails du profil
Informations personnelles :
Âge : 55

Informations forums :
Inscription : janvier 2007
Messages : 9 651
Points : 12 081
Points : 12 081
Citation:
Envoyé par orland Voir le message
le premier point (marqué en rouge sur la courbe) présente le passage de la 1er calsse ayant la plus grande densité à la 2eme classes ayant la densité plus petite.
Le preimier ? pas le deuxième ??


En fait, j'ai l'impression, en regardant l'ensemble de tes graphes, que tu recherches les points de rupture de types de pente : d'une pente à tendance verticale vrs une pente à tendance horizontale.. Est-ce ça ?


Si c'est le cas, et en regardant tes schémas, une division serait sans doute :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
initialiser seuil à 0
faire valeur = moyenne glissante de pente sur 3 points
si valeur < -0.5
   si seuil > -0.5
       pt inflexion
   fin si
   seuil = valeur
sinon
   si seuil < -0.5
       pt d'inflexion
   fin si
   seuil = valeur
fin si
L'initialisation du seuil à 0 te donne ton vrai premier pt tel qu'indiqué sur ton schéma. Si tu ne le veux pas, il suffit d'initialiser à -1.
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 13h50   #12
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Bonjour,
Citation:
Le preimier ? pas le deuxième ??
le 1er point c'est celui ayant comme coordonnées ~(170,0.05), c'est celui au milieu de la courbe et non pas le plus haut.

si non puor ta question
Citation:
En fait, j'ai l'impression, en regardant l'ensemble de tes graphes, que tu recherches les points de rupture de types de pente : d'une pente à tendance verticale vrs une pente à tendance horizontale.. Est-ce ça ?
Oui c'est ça ce sue je cherche

si non veuillez m'expliquer encore le code que vous avez écrit, surtout
Code :
faire valeur = moyenne glissante de pente sur 3 points
et pourquoi le test sur la valeur "0.5", qu'est ce que désigne cette valeur !! si vous voulez dire 0.05 , ben je connais pas d'avance moi ou se situe le(s) point(s) d'inflexion !!
veuillez svp m'éclairer encore votre approche
Merci d'avance
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 09h16   #13
souviron34
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 9 651
Détails du profil
Informations personnelles :
Âge : 55

Informations forums :
Inscription : janvier 2007
Messages : 9 651
Points : 12 081
Points : 12 081
Citation:
Envoyé par orland Voir le message
et pourquoi le test sur la valeur "0.5", qu'est ce que désigne cette valeur !!
Ok, j'ai été un peu vite et je me suis un peu embrouillé avec tes valeurs sur ton graphe.. Désolé.

Ce que je voulais mettre c'était "-1"..

Tangente(-45 degrés) = tan(- PI/4) = -1, donc :
  • si -1 <= tangente <= 0 alors tendance horizontale
  • si tangente < -1 alors tendance verticale
Comme en info il est facile de calculer l'angle entre 2 points via les fonctions arctangentes (en particulier atan2), on utilisera les angles.

D'autre part, pour diminuer l'influence du bruit, outre la moyenne glissante, on peut ajouter un seuil de confiance, qui est pluss facile à maîtriser avec des angles.

Par exemple, si angle >= -40, horizontal,si angle <= -50 vertical.

Enfin, vu que comme en info les tableaux commencent à l'indice zéro (sauf en Fortran), et que les angles sont en radians, ton algo sera du style :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
delta = 5 * PI / 180         /* Pour 5 degrés de sûreté */
seuil_haut = -PI/4 + delta   /* Limite de tendance horizontale */ 
seuil_bas = -PI/4 - delta    /* Limite de tendance verticale */
seuil = seuil_haut           /* Initialisation à l'horizontale */

pour i = 1 jusqu'à i < (N-1)

   angle = ( angle(i, i-1) + angle(i+1,i) ) / 2    /* moyenne glissante */ 

   si angle <= seuil_bas            /* On est plutôt vertical */
       si seuil = seuil_haut
            pt inflexion
            seuil = seuil_bas
       fin si
   sinon
   si angle >= seuil_haut          /* On est plutôt horizontal */
       si seuil = seuil_bas
            pt d'inflexion
            seuil = seuil_haut
       fin si
   fin si
fin pour
Tu peux bien entendu ajuster la marge de sûreté (peut-être 10 degrés au lieu de 5), mais ça devrait donner les résultats que tu cherchais...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 09h53   #14
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Bonjour,
Ok, merci. Je vais tester ce code
Mais si vous me permettez de vous poser encore une question: je travail avec le langage R. Alors quel est le package sur R qui me permet de calculer l'angle entre 2 points ??

encore une fois merci à vous pour tous vos réponses, j’espère qu’après le test de ce code je trouve le résultat que je cherche.
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 13h35   #15
souviron34
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 9 651
Détails du profil
Informations personnelles :
Âge : 55

Informations forums :
Inscription : janvier 2007
Messages : 9 651
Points : 12 081
Points : 12 081
Citation:
Envoyé par orland Voir le message
Ok, merci. Je vais tester ce code
C'est pas un code, c'est un schéma d'algo..

Citation:
Envoyé par orland Voir le message
Mais si vous me permettez de vous poser encore une question: je travail avec le langage R. Alors quel est le package sur R qui me permet de calculer l'angle entre 2 points ??
je ne connais pas R, mais un regard dans le lexique devrait suffire... Ou

Si je fouille dans The R base package : Documentation for package ‘base’ version 2.15.2, sous Trigonometric functions, on a bien la fonction atan2 . Comme y tu lui passes (yB-yA), comme x (xB-xA)...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 15h54   #16
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Bonjour,
Je reviens toujours sur les points d'inflexion.
Alors dans mon dernier message je me suis trompé et dire que c'est du code or ce n'est qu'un schéma d'algo , désolé
sinon je reviens sur quelque point dans votre explication:
vous avez parler des angles, arctangentes et atan2 !! or ds votre schéma d'algo y'a que la fonction angle !!!
donc veuillez svp m'expliquer pourquoi vs avez parler de ces 2 fonctions arctangente et atan2 sans que vous les utiliser ?

Quand à moi je possède dans mon package des ces trois fonctions.
donc j'ai réussi à coder la première partie de ce schéma d'algo et j'a obtenu un tableau des angles
mais je suis bloqué dans la partie suivanteoù toujours elle me rend un vecteur vide"NULL")
Citation:
si angle <= seuil_bas /* On est plutôt vertical */
si seuil = seuil_haut
pt inflexion
seuil = seuil_bas
fin si
sinon
si angle >= seuil_haut /* On est plutôt horizontal */
si seuil = seuil_bas
pt d'inflexion
seuil = seuil_haut
fin si
fin si
veuillez me pardonner si j'ai pas bien compris ceci mais comme je vous ais dit: je possède dans mon package de ces trois fonctions angle, arctangente et atan2.
Aussi ci c'est le cas et je dois utiliser que la fonction angle dans mon code, veuillez m'expliquer un peu cette deuxième partie. Elle me rend toujours un vecteur NULL.

Concernant la premiere partie dont j'ai codé, voici un échantillon des résultats
que j'obtient en utilisant
Code :
angle = ( angle(i, i-1) + angle(i+1,i) ) / 2
je stocke tous ces angles dans vecteur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
  [1] 3.929276 5.497741 3.925795 7.065522 7.067826 5.497905 3.927240 5.497781
  [9] 3.926915 5.497628 3.927009 5.497796 3.927011 7.068561 7.068466 5.497557
 [17] 2.356247 3.927081 5.497851 3.927079 5.497697 3.926977 7.067894 5.496508
 [25] 3.926993 5.497721 2.356219 2.356196 3.926969 5.497745 2.356210 3.926997
 [33] 5.497790 3.926994 7.068566 7.068557 5.497769 3.926940 7.068376 7.068341
 [41] 7.068516 7.068528 5.497690 2.356202 3.926990 7.068540 5.497721 3.926966
 [49] 7.068511 5.497783 3.926993 5.497785 3.926972 7.068541 5.497777 3.926989
 [57] 7.068571 5.497819 2.356269 2.356199 3.926993 7.068544 5.497759 2.356239
 [65] 3.926948 5.497702 3.926971 7.068529 5.497758 2.356204 3.927002 5.497782
 [73] 3.927005 5.497810 2.356317 3.927053 7.068541 7.067581 5.495789 2.356209
 [81] 3.927018 7.068570 5.497783 2.356234 2.356197 3.926995 5.497822 3.927055
 [89] 5.497815 3.927041 5.497734 3.926986 5.497778 3.926961 5.497728 3.926980
 [97] 5.497763 3.926989 5.497779 3.926964 5.497741 3.927004 7.068517 5.497716
et lorsque j'utilise ce code
Code :
angle = ( atan2(i, i-1) + atan2(i+1,i) ) / 2
je stocke aussi les résultats dans un vecteur dont je vous montre un échantillon
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 [1] 1.0861275 1.1870393 1.1662546 1.0509983 1.1592407 1.2996982 1.1481703
   [8] 1.1350540 1.1662642 0.9189576 1.1661427 0.9231590 1.1559464 1.3830328
  [15] 1.1764127 1.0982413 1.1642893 1.4955434 1.1525557 0.9773623 1.1751766
  [22] 1.2986177 1.1749553 1.0018801 1.1724437 1.4391354 1.1758183 0.6563518
  [29] 1.1746728 0.3474100 1.1709308 0.9962978 1.1758976 1.9448388 1.1760204
  [36] 1.0340820 1.1729605 0.9247127 1.1655750 1.2949155 1.1713335 1.0242407
  [43] 1.1773778 1.3365095 1.1727735 1.0870901 1.1656800 1.3399351 1.1631236
  [50] 1.3255915 1.1614929 0.8367130 1.1764813 1.4727675 1.1779945 1.3927943
  [57] 1.1703661 0.9661680 1.1626525 0.7662359 1.1764523 2.1799955 1.1762079
  [64] 1.4085499 1.1770613 0.8122627 1.1762142 1.6398084 1.1764301 0.5861467
  [71] 1.1765259 0.3137165 1.1775562 0.8645072 1.1758349 1.9187007 1.1704451
  [78] 1.0749685 1.1705362 1.0821037 1.1754082 0.7607101 1.1764380 0.2766385
  [85] 1.1763311 1.1195985 1.1769466 2.0684964 1.1776051 1.4777608 1.1744618
  [92] 1.0621598 1.1702781 1.1121991 1.1692410 1.2392988 1.1629206 0.4474696
  [99] 1.1767896 0.8910010 1.1766828 1.6890174 1.1776029 0.8750174 1.1768248
ici la fonction atan2
Citation:
The arc-tangent of two arguments atan2(y, x) returns the angle between the x-axis and the vector from the origin to (x, y), i.e., for positive arguments atan2(y, x) == atan(y/x)
j'ai voulu vous informer de ces détails pour me bien aider.
ça fait des jours que j'essaye sans arriver toujours et le temps me presse
veuillez me poser vos questions si c'est pas clair.
Merci d'avance
Cordialement B.H
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 17h47   #17
souviron34
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 9 651
Détails du profil
Informations personnelles :
Âge : 55

Informations forums :
Inscription : janvier 2007
Messages : 9 651
Points : 12 081
Points : 12 081
rhaaaaa il faut lire la doc et comprendre un minimum ce qu'on dit...

atan2 s'utilise come : si on veut calculer l'angle "absolu" formé par 2 pts A et B :

angle = atan2 ( (A.y - B.y), (A.x - B.x) )


Donc tu as un angle avec le précédent :

A = Pts[i]
B = Pts[i-1]

et avec le suivant

A = Pts[i+1]
B = Pts[i]
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 09h38   #18
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
Bonjour,
merci d'avoir répondu En fait j'ai bien lu la documentation et je sais bien utiliser cette fonction de atan2.
Mais c'était pas ça vraiment ma question. Je reformule encore ma question:
Dans votre message vous avez parlez de "angle", "arctangente" et "atan2".
En fait, je sais bien que vs faites la différence entre ces trois fonctions et l'utilisation de chacune dans un contexte bien précis.
Mais le point que je comprend pas c'est dans le message où vs avez mis le schéma d'algorithme vous m'avez dit :
Citation:
angle = ( angle(i, i-1) + angle(i+1,i) ) / 2
pack ici la part de confusion c'est que vous dites ma question ici vous voulez dire à travers "angle(i,i-1)" utilisez la fonction angle pour calculer l'angle ente i et i-1 ou vs dites ça d'une façon générale et de calculer l'angle entre ces deux points avec la fonction atan2 ??
et dans votre dernier vous avez dit :
Citation:
angle = atan2 ( (A.y - B.y), (A.x - B.x) )
est ce que vous voulez dire concernant le premier code
Code :
angle= atan2((A.y(i)-B.y(i-1)),(A.x(i)-B.x(i-1)))+atan2((A.y(i+1)-B.(y(i))),(A.x(i+1),B.x(i)))/2
désolé si je pose beaucoup de questions :/ en fait c'est la première fois où je me suis tombé dans ce genre de problèmes où j'avais pas beaucoup des connaissances.
donc pour résumer si j'avais bien compris que je dois utiliser la fonction atan2 et que vous avez écrit "angle" d'une façon générale et vs désignez pas l'utilisation de la fonction angle. Est-ce que c'est le cas ??

Merci d'avance
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 11h05   #19
souviron34
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 9 651
Détails du profil
Informations personnelles :
Âge : 55

Informations forums :
Inscription : janvier 2007
Messages : 9 651
Points : 12 081
Points : 12 081
Citation:
Envoyé par orland Voir le message
donc pour résumer si j'avais bien compris que je dois utiliser la fonction atan2 et que vous avez écrit "angle" d'une façon générale et vs désignez pas l'utilisation de la fonction angle. Est-ce que c'est le cas ??
oui c'est le cas...

L'arc-tangente donnant un angle, la variable de sortie je l'ai appelée d'une manière générique..

et atan2 est très bien car elle calcule entre -PI et + PI (alors que atan calcule entre 0 et PI).

Comme j'ai dit je ne connais pas R, et donc je ne sait pas si une fonction "angle" existe, mais en général elle n'existe pas dans les langages informatiques, et par contre arctangente existe (souvent sous ces 2 formes atan et atan2).
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 12h26   #20
orland
Nouveau Membre du Club
 
Homme
Enseignant Chercheur
Inscription : septembre 2012
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 106
Points : 29
Points : 29
ok
Citation:
Comme j'ai dit je ne connais pas R, et donc je ne sait pas si une fonction "angle" existe, mais en général elle n'existe pas dans les langages informatiques, et par contre arctangente existe (souvent sous ces 2 formes atan et atan2).
Dans R il existe la fonction angle. vous pouvez voir la documentation sur cette fonction http://127.0.0.1:20427/library/dagR/html/angle.html

juste une autre question si vs voulez, la fonction atan2 me rend des angles en radian, donc je continue à les utiliser dans le reste du schéma d'algo en radian ou je dois les transformer en degré ?? (sachant qu'il y a une fonction sous R me permet de faire cette conversion de radian en degré)
Merci infiniment pour vos réponses
orland est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h34.


 
 
 
 
Partenaires

Hébergement Web