函数图像(二)
- DreamToTrue - C++博客-λ-calculus(惊愕到手了欧耶) 今天终于把雏形给做出来了. 主要的方法是牛顿迭代法,把屏幕上的所有点都收敛到函数图像上面. 为了提速,我是用了ThreadTool.QueueUserWorkItem和Parallel.For,还把那颗函数的语法树用Linq.Expression编译成了机器码. 下面的这些图都是二十秒钟左右就可以画出来的了.
国外有人发现一个鲜为人知的古董级函数作图软件—— GrafEq 。这个软件只有 2M 大小,它的功能就只有一个:作出形如 x2 + y2 = 1 的二元等式或者不等式的图像。令人惊叹的是,这个软件的图像绘制能力异常强大, Mathematica 等大型专业数学软件完全不是它的对手。
这个软件早就没再更新了。它的“最新版本”是 2.12 ,只支持 Windows 95 到 Windows XP 的系统,或者 PowerPC 7.12 到 MacOS 9.2 的系统,可见其年代久远。神奇的是,这个软件的官方网站依然健在,而且软件竟然也都能下载。如果你有幸还能装上这款软件,你将有机会重温一次 Windows 95 时代的软件安装画面。
一些带有三角函数的方程,某些地方的图像变化非常剧烈,连 Mathematica 也无法准确地描绘出来:
然而, GrafEq 却能很好地描绘出来:
注意,方程的图像显然无法形成实心的方块,这只是因为图像太密集罢了。
既然有机会见到各种方程图像的真容,我们当然要多尝试一些更复杂的方程。下面是另外几个例子:
要比哪个图像最帅,还是要数 GrafEq 官方网站上提供的一个示例: