language-agnostic - 如何在代码中重现这样的潦草图案?

标签 language-agnostic math graphics trigonometry

我不小心用 wolfram alpha 制作了这张图:

Graph

你能编写代码来生成此模式的放大版本吗?

你能做出看起来相似的图案吗?

任何语言的可读代码都很好,但最好是可以在浏览器中运行的代码(即 JavaScript/Canvas)。如果您使用其他语言编写代码,请附上屏幕截图。

注意事项:

  • 上图的输入公式为:arg(sin(x+iy)) = sin^(-1)((sqrt(2) cos(x) sinh(y))/sqrt(cosh(2 y )-cos(2 x))) ( link )
  • 您不必使用上述公式。任何产生类似结果的东西都会很酷。但“逆向工程”Wolfram Alpha 是最好的
  • 等式的两边相等(我认为),所以 WA 应该只返回“true”而不是图表
  • 该模式可能是舍入误差的结果。
  • 我不知道图案是通过遍历每个像素生成的,还是基于矢量(点和线)生成的。我猜是矢量。
  • 我不知道是什么导致了这种模式(“舍入误差”是最好的猜测。)
  • IEEE 浮点标准没有说明 sin 或 cos 等应该如何工作,因此三角函数因平台和架构而异。
  • 请不要使用布朗运动图

最后,这是另一个可能有助于您完成任务的示例:( link )

Graph 2

最佳答案

当您在任何语言中询问相似的外观模式时,这里是 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) π]

关于language-agnostic - 如何在代码中重现这样的潦草图案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736261/

相关文章:

java - 折线轮廓构造/绘制粗折线

canvas - 如何避免 Canvas 中填充区域之间的接缝?

variables - 它如何知道我的值在内存中的位置?

c# - 试图检查一个点是否在线的误差范围

python - 在 python 中/在网络上生成方程表示

math - float 学有问题吗?

language-agnostic - 定义 Web 应用程序 URL 的最佳方式

multithreading - 在并发编程的上下文中, "data races"和 "race condition"实际上是同一件事吗?

arrays - 如何在功能上而不是程序上在线性时间内 "invert"数组?

Java 以一定长度(以像素为单位)分割字符串