Approximation du plan passant par plus de 3 points

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Nestor
Membre Naturel
Messages: 13
Enregistré le: 30 Jan 2006, 11:39

Approximation du plan passant par plus de 3 points

par Nestor » 30 Jan 2006, 11:42

Bonjour,

A partir d'un nuage de points, j'aimerai calculer l'équation du plan qui passe au plus près de tous ces points.

J'ai compris qu'il fallait utiliser la méthode des moindres carrés afin de minimiser les distances de chaque point au plan mais cela est qd même un peu flou ...

merci pour votre aide
Nestor



Nestor
Membre Naturel
Messages: 13
Enregistré le: 30 Jan 2006, 11:39

par Nestor » 31 Jan 2006, 12:20

bah alors on sèche ??!

pê que ma question n'est pas claire :
J'ai un nuage de points 3D qui se trouvent théoriquement sur un même plan.
J'aimerai calculer l'équation du plan passant au plus près de tous ces points et j'aimerai ensuite faire la projection de chaque points sur le plan trouvé.
Ensuite j'ai besoin de déterminer l'aire du polygone défini par les points projetés.

Pour cela, on peut calculer le barycentre de ce nuage de point pour savoir par ou passe le plan puis chercher son orientation. Rechercher l'orientation revient à minimiser tous les ecarts entre les points et le plan.

J'ai bien compris tout ca, le problème c que mes cours de maths sont hyper loin et j'ai du mal à :
1 - définir les équations nécessaires
2 - les résoudre :)

merci
Mike

Nestor
Membre Naturel
Messages: 13
Enregistré le: 30 Jan 2006, 11:39

Résolution d'un système de 4éq à 4 inconnues

par Nestor » 31 Jan 2006, 15:13

encore moi, j'ai réussi à avancer : j'ai mes équations mais je n'arrive pas à les résoudre

Equation du plan : ax + by + cz + d = 0
Ecart entre les points rééls et le plan théorique : e = ax + by + cz - d

Il faut minimiser ces ecarts, donc on obtient la fonction :
F = Somme (i=1 à n) (ei)² = Somme(i=1 à n) (ax + by + cz - d)²

Minimiser cette somme revient à résoudre :
dF/da = 0
dF/db = 0
dF/dc = 0
dF/dd = 0

=> 4 équations à 4 inconnues (a,b,c,d)

Comment résoudre ce système ? je n'y arrive pas, je tourne en rond ... j'otiens 0=0 ... super ! :doh:

a l'aide svp ...

Chimerade
Membre Irrationnel
Messages: 1472
Enregistré le: 04 Juil 2005, 14:56

par Chimerade » 31 Jan 2006, 15:25

Ton problème vient du fait que si l'équation cherchée est ax+by+cz+d=0, l'équation (ka)x+(kb)y+(kc)z+kd=0 marche aussi ; en d'autres termes, a,b,c,d ne sont définis qu'à un facteur près.

Il faut décrire le plan par une équation du type z=ax+by+c : trois inconnues a,b,c.
La distance carrée d'un point i au plan est alors :

Il faut alors minimiser :



En différenciant et en disant que les coefficients de da, db, dc doivent être nuls au minimum, tu trouves trois équations à trois inconnues que tu peux résoudre.

Nestor
Membre Naturel
Messages: 13
Enregistré le: 30 Jan 2006, 11:39

par Nestor » 31 Jan 2006, 15:51

merci Chimerade pour ton aide, mais comment résoudre ce système ??
désolé d'être aussi null, c un truc que j'aurais pê fait sans problème il y a qq années mais aujourd'hui ce n'est plus le cas :triste:

Chimerade
Membre Irrationnel
Messages: 1472
Enregistré le: 04 Juil 2005, 14:56

par Chimerade » 31 Jan 2006, 16:10

Nestor a écrit:merci Chimerade pour ton aide, mais comment résoudre ce système ??
désolé d'être aussi null, c un truc que j'aurais pê fait sans problème il y a qq années mais aujourd'hui ce n'est plus le cas :triste:


Ben tu peux faire ça par substitution, par exemple. Pour un système 3*3 c'est faisable à la main.

Si tu as quelque chose comme :





Tu choisis une variable au hasard, avec un coefficient non nul. Supposons par exemple que soit différent de zéro. ALors de la première équation tu peux tirer :


ce qui donne une expression de fonction de et . Tu remplaces alors dans les deux autres équations par cette expression. Tu obtiens alors deux équations aux deux inconnues et . Ensuite tu recommences, avec par exemple que tu exprimes en fonction de à l'aide de l'une des deux équations et tu remplaces dans l'autre. Tu obtiens alors une équation à une inconnue . Tu la résouds et tu trouves . Ensuite tu trouves à l'aide de l'expression de fonction de . Ensuite tu trouves à l'aide de l'expression donnant en fonction de et . Et c'est fini !

Nestor
Membre Naturel
Messages: 13
Enregistré le: 30 Jan 2006, 11:39

par Nestor » 31 Jan 2006, 17:12

merci encore chimerade de te pencher sur mon probleme mais justement j'ai deja essayé de resoudre par substitution et j'obtiens dès la 1ere substitution :
ax² + bxy - ax² - bxy + xz - xz = 0, soit 0=0, excellent !

je ne dois pas avoir dérivé comme il le faut
heu pour les sommes il y a qq chose de particulier pour dériver ??

j'arrive a ca :
dF/da = 2ax² + 2bxy + 2cx - 2xz = 0
dF/db = 2axy + 2by² + 2cy - 2yz = 0
dF/dc = 2ax + 2by + 2c - 2z = 0

ou est le probleme ??
merci encore

Chimerade
Membre Irrationnel
Messages: 1472
Enregistré le: 04 Juil 2005, 14:56

par Chimerade » 01 Fév 2006, 00:04

Il faut minimiser
donc annuler les trois dérivées partielles de F :



De même :



La seule possibilité pour que ce système ait "un problème" serait que tous tes points soient alignés dans l'espace, ce qui semble plutôt improbable. En tout état de cause, il me semble que tu as oublié de faire les sommations...

Nestor
Membre Naturel
Messages: 13
Enregistré le: 30 Jan 2006, 11:39

par Nestor » 01 Fév 2006, 12:00

merci encore Chimerade
en effet lors des derivees j'ai fait sauter les sommes et du coup je ne differenciais pas Somme(X²) avec (Somme(X))², c'est pourquoi j'arrivais tjrs a 0=0 !

allé je me tappe la résolution,
merci bcp !! :++:

Nestor
Membre Naturel
Messages: 13
Enregistré le: 30 Jan 2006, 11:39

par Nestor » 10 Fév 2006, 10:02

Dernier post pour dire que j'ai bien trouvé la solution à mon problème, dur dur de se replonger dans les maths comme ca, mais bon qd même ;o)

voici la solution si cela peut interesser qq'1 :

Equation du plan : ax + by + cz + d = 0
nSet : nombre d'elements
fsxx : somme des x² (de 1 à nSet)
fsyy : somme des y²
fsxy : somme des x.y
fsxz : somme des x.z
....etc...

double f = fsx*fsx*fsyy+fsy*fsy*fsxx+nSet*fsxy*fsxy-2*fsx*fsy*fsxy-nSet*fsxx*fsyy;

fa = (fsy*fsy*fsxz-fsx*fsy*fsyz-fsy*fsz*fsxy+fsx*fsz*fsyy+nSet*fsxy*fsyz-nSet*fsxz*fsyy) / f;

fb = (fsx*fsx*fsyz-fsx*fsy*fsxz-fsx*fsz*fsxy+fsy*fsz*fsxx+nSet*fsxy*fsxz-nSet*fsyz*fsxx) / f;

fc = -1.0;

fd = (fsz*fsxy*fsxy-fsx*fsxy*fsyz-fsy*fsxy*fsxz+fsx*fsxz*fsyy+fsy*fsyz*fsxx-fsz*fsxx*fsyy) / f;

encore merci Chimerade :we:

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 27 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite