2010-09-17 7 views
3

J'ai fait ce graphique Wolfram Alpha par accident:Comment puis-je reproduire un motif gribouillé comme celui-ci dans le code?

Graph

Pouvez-vous écrire du code pour produire une version plus grande de ce modèle?

Pouvez-vous créer des motifs similaires?

Le code lisible dans n'importe quelle langue est bon, mais quelque chose qui peut être exécuté dans un navigateur serait le meilleur (c'est-à-dire JavaScript/Canvas). Si vous écrivez du code dans d'autres langues, veuillez inclure une capture d'écran.

Remarques:

  • La formule d'entrée pour l'image ci-dessus est: arg (sin (x + iy)) = sin^(- 1) ((sqrt (2) cos (x) sinh (y))/sqrt (cosh (2 y) -cos (2 x))) (link)
  • Vous n'avez pas besoin d'utiliser la formule ci-dessus. Tout ce qui produit un résultat similaire serait cool. Mais "reverse engineering" Wolfram Alpha serait le meilleur
  • Les deux côtés de l'équation sont égaux (je pense), donc WA devrait avoir probablement seulement renvoyé "vrai" au lieu du graphique
  • Le motif est probablement le résultat de erreurs d'arrondi.
  • Je ne sais pas si le motif a été généré en itérant sur chaque pixel ou s'il s'agit d'un vecteur (points et lignes). Ma conjecture est avec le vecteur.
  • Je ne sais pas ce qui cause ce type de modèle (« erreurs d'arrondi » est la meilleure estimation.)
  • standard virgule flottante IEEE ne dit pas comment le péché ou cos, etc. doivent travailler, les fonctions si trigonométriques varient entre les plates-formes et les architectures.
  • Pas de parcelles de mouvement brownien Veuillez

Enfin, voici un autre exemple qui pourrait aider dans votre mission: (link)

Graph 2

+0

votre problème avec la tenue d'égalité seulement pour certaines plages de x semble être quelque chose lié à des fonctions à valeurs multiples. Si vous prenez Sin [] des deux côtés, votre égalité est partout. –

Répondre

3

Comme vous avez demandé des modèles qui se ressemblent dans toutes les langues, ici est le code Mathematica (vraiment facile puisque Wolfram Alpha est basé sur Mathematica)

alt text

Modifier

Il est en effet un effet roundoff:

Si l'on fait:

alt text

et faire un terrain

Plot3D[f[x, y], {x, 7, 9}, {y, -8, -9},WorkingPrecision -> MachinePrecision] 

Le résultat est:

alt text

Mais si nous étendons la précision de la parcelle à 30 chiffres:

Plot3D[f[x, y], {x, 7, 9}, {y, -8, -9},WorkingPrecision -> 30] 

Nous obtenons

alt text

et la rugosité est partis (qui a causé votre modèle gribouillé

BTW, votre f [x, y] est une très belle fonction:

alt text

Donc, si je réussi à copier vos formules sans erreurs (ce qui devrait être considéré comme un miracle), les deux côtés de l'équation sont égales que dans certaines gammes périodiques x, probablement de la forme [2 n Pi, (2 n + 1) Pi]

+1

+1 et -1: J'ai été tenté mais je l'ai trouvé trop facile et trop inutile. Bravo à vous, @belisarius, d'avoir osé publier ceci. –

+0

@High Performance Mark Je pensais juste que le PO pourrait tirer profit de l'apprentissage que l'intrigue est sous la forme "ContourPlot [f [x, y] == 0]" parce que Wolfram Alpha ne montre pas cela ... mais oui. .. -1 :) –

+0

Pas tout à fait quand j'avais en tête :) Mais cela aide à clarifier les choses et donne une meilleure (plus grande) image du motif, donc c'est apprécié encore. – Qubei