2009-05-28 3 views
1

Ceci est également lié aux mathématiques. Mais ceci est également utile en informatique.Générer la fonction du plan/de la surface sur laquelle se trouve un ensemble de coordonnées donné

Disons que vous avez 10 coordonnées. (x1, y1) (x2, y2) ..... dans l'espace 2D. (c'est-à-dire sur un plan X-Y). Pouvons-nous trouver une seule courbe lisse passant par chaque coordonnée.

En développant la question, Si l'espace est 3D, alors peut-on trouver une équation d'une surface lisse qui traverse un ensemble donné de coordonnées spatiales?

Existe-t-il des bibliothèques (toutes les langues) \ tools pour effectuer de tels calculs?

+0

Quelle courbe pour vous cherchez à dessiner? –

+0

L'ordre n'est pas un problème. Je voulais juste connaître l'existence? –

Répondre

2

Ce que vous devriez rechercher est une bibliothèque implémentant NURBS (ou Rational B-Splines Non Uniform). Cela résoudra votre problème à la fois en 2d et 3d, puisque 2d est juste un cas particulier de la 3d.

En gros, vous ne vous intéressez pas à l'équation actuelle, vous ne souhaitez obtenir que les points approximatifs avec des courbes ou surfaces lisses. Ceci est fait en trouvant des "points de contrôle" dans l'espace 2d ou 3d, qui sont multipliés avec des fonctions de base B-spline. Une bibliothèque NURBS le fera pour vous.

À la votre!

Edit:

Jetez un oeil à this one

1

Vous pouvez toujours insérer un ordre-10 polynomial à travers les points. Cependant, ce n'est pas forcément ce que vous voulez faire - ajuster une courbe lisse par l'intermédiaire d'une série de splines vous donnera un meilleur résultat. l'article curve-fitting sur wikipedia vous donne un bon aperçu des différentes options.

1

Dans le cas 2D, vous demandez un ajustement de courbe. Cela existe réellement dans Excel, où vous tracez vos points (j'utilise habituellement la dispersion XY si vous avez x et y listés) et cliquez avec le bouton droit sur la courbe. Sélectionnez Ajouter une ligne de tendance. Là, vous pouvez choisir le type de fonction que vous voulez adapter et vous pouvez demander à Excel de l'afficher dans l'image (Tab nommé Options, cochez la case "Afficher l'équation sur le graphique"). Nice et rapide.

Sinon, vous pouvez utiliser matlab et utiliser la méthode lsqr (méthode des moindres carrés). Si vous voulez trouver le polynôme le plus proche qui décrit le mieux vos données, vous pouvez utiliser la fonction polyfit. Il utilise la méthode des moindres carrés, mais renvoie des coefficients. Matlab a tout un ensemble d'autres algorithmes pour résoudre/trouver les «meilleures» approximations aux systèmes d'équations linéaires. Je mentionne lsqr car c'est l'un des plus simples à mettre en œuvre si vous n'avez pas matlab. D'un autre côté, c'est pour résoudre des ensembles d'équations linéaires - je ne sais rien de vos données.

+0

cette classe d'algorithmes essaye de tracer une courbe avec peu de coefficients (polynomial d'ordre inférieur, exponentielle, fonction log, etc.) qui passe près de tous les points, plutôt qu'une courbe arbitrairement compliquée qui passe * à travers * tous *. –

0

Jetez un oeil à splines

Recherche de 'bibliothèque d'interpolation spline' pourrait donner quelques conseils utiles pour les implémentations.

Questions connexes