Question

Quelle est la méthode ou algorithme d'habitude utilisé pour tracer des équations implicites de 2 variables?

Je parle des équations telles que,

sin (x * y) * y = 20

x * x - y * y = 1

Etc.

Est-ce que quelqu'un sait comment faire ce Maple ou Matlab? Ma langue cible est C #.

Merci!

Était-ce utile?

La solution

Une façon de le faire est d'échantillonner la fonction sur une grille régulière, 2D. Ensuite, vous pouvez exécuter un algorithme de carrés marchant sur la grille 2D résultant des iso-contours.

Dans une question connexe, quelqu'un aussi lié au code source gnuplot. Il est assez complexe, mais peut-être la peine d'aller à travers. Vous pouvez le trouver ici: http://www.gnuplot.info/

Autres conseils

itérer la valeur de x sur toute la plage que vous voulez tracer. Pour chaque valeur fixe de x, résoudre l'équation numériquement en utilisant une méthode telle que intervalle bissection ou < a href = « http://en.wikipedia.org/wiki/Newton%27s_method » rel = « noreferrer »> méthode de Newton-Raphson (pour lesquels on peut calculer la dérivée en utilisant une différenciation implicite, ou peut-être différencier numériquement ). Cela vous donnera la valeur correspondante de y pour un x donné. Dans la plupart des cas, vous ne serez pas besoin de trop d'itérations pour obtenir un très résultat précis, et il est de toute façon très efficace.

Notez que vous aurez besoin de transformer l'équation sous la forme f(x) = 0, bien que ce soit toujours trivial. La bonne chose au sujet de cette méthode est que cela fonctionne aussi bien dans l'autre sens (à savoir prendre une plage fixe de y et calcul x par valeur).

Il sont plusieurs méthodes. L'algorithme le plus simple que je pourrais trouver descripted ici: https://homepages.warwick.ac. Royaume-Uni / personnel / David.Tall / pdfs / dot1986b-fns.pdf-implicite et décrit ce que noldorin vous a décrit.

Le plus complexe, et semble être celui qui peut effectivement résoudre un grand nombre de cas particuliers est décrit ici: https://academic.oup.com/comjnl/article/33/ 5/402/480353

Je pense que,

Matlab vous donner tableau en entrée pour x.

alors pour tout x, il y calcule.

puis dessine la ligne de x0, y0 x1, y1

attire ensuite la ligne de x1, y1 x2, y2

...

...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top