Как я могу воспроизвести подобный рисунок в коде? - PullRequest
3 голосов
/ 17 сентября 2010

Я сделал этот график в альфе Вольфрама случайно:

Graph

Можете ли вы написать код для создания увеличенной версии этого шаблона?

Можете ли вы сделать похожие рисунки?

Хорошо читаемый код на любом языке, но лучше всего выполнить его в браузере (например, JavaScript / Canvas). Если вы пишете код на других языках, пожалуйста, включите скриншот.

Примечания:

  • Формула ввода для изображения выше: arg (sin (x + iy)) = sin ^ (- 1) ((sqrt (2) cos (x) sinh (y)) / sqrt (cosh (2 года) ) -cos (2 x))) ( ссылка )
  • Вам не нужно использовать, чтобы использовать приведенную выше формулу. Все, что дает аналогичный результат, было бы здорово. Но лучше всего "реверс-инжиниринг" Wolfram Alpha
  • Обе стороны уравнения равны (я думаю), поэтому WA, вероятно, должен был вернуть только «true» вместо графика
  • Шаблон, вероятно, является результатом ошибок округления.
  • Я не знаю, был ли шаблон сгенерирован путем итерации по каждому пикселю или он основан на векторах (точки и линии). Я думаю, с вектором.
  • Я не знаю, что является причиной такого типа паттерна (лучше всего «ошибки округления».)
  • Стандарт IEEE с плавающей точкой не говорит о том, как должны работать sin, cos и т. Д., Поэтому функции триггера различаются в зависимости от платформы и архитектуры.
  • Нет броуновских графиков, пожалуйста

Наконец, вот еще один пример, который может помочь в вашей миссии: ( ссылка )

Graph 2

1 Ответ

3 голосов
/ 17 сентября 2010

Как вы просили о похожих шаблонах на любом языке, вот код Mathematica (действительно легко, поскольку Wolfram Alpha основан на Mathematica)

alt text

Редактировать

Это действительно эффект округления:

Если мы установим:

alt text

и составить сюжет

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

Результат:

alt text

Но если мы увеличим точность графика до 30 цифр:

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

Получаем

alt text

и шероховатость исчезла (из-за чего вы набросали рисунок)

Кстати, ваш f [x, y] - очень хорошая функция:

alt text

Так что, если мне удалось скопировать ваши формулы без ошибок (что следует считать чудом), обе стороны вашего уравнения равны только в определенных периодических диапазонах по x, возможно, в форме [2 n Pi, (2 n + 1) Пи]

...