续:
前面所提到的带点绘图法非常的可行,十分以及特别的可行。
当然,我需要提醒有兴趣自己做的人要注意精度问题,区间运算的不确定性是一个两面的玩意,在得到很不错的轮廓的时候,也会得到误差。并且,我在自己的软件中取消了那个迭代细分的过程——因为我发现这样和直接带点一个结果,那样细分只是可以减少计算量而已。然后就是判断结果:
比如a>b,可以得到下面的三种结果:存在、不确定、不存在。按照这三种结果,存在和不存在的不需要计算,只需要继续计算不确定区域的即可。
下面是我的程序完成的图像,虽然不够完美。一些图像并没有被100%的完成,由于计算的精度问题,在我设置的精度上依然没有完成整个图像。图中深一点的绿色表示一定确定的区域,略微浅的绿色(如果有的话)表示尚未确认的区域:这张没完成的部分是y轴那里,被挡住了 这张。。很大片都没完成 这张完成率100% 这一张有几个像素点处于未确定状态 当然,你可以和GrafEq对比一下,可能会有差异,因为它的判断方式可能不一样。引用一句GrafEq中的话:“没有任何一个软件可以准确的画出所有的函数图像”。但是很能确定的一点是,GrafEq的原理大致就是这样的。下面是我的程序绘制的简单的几个图像:
不知道叫什么,对勾函数两边套了个绝对值 等轴双曲线 圆 在实现过程中,个人认为这个运算必须考虑“并区间”的情况,比如[0,1]∪[3,4]。在出现负指数幂的时候,这一点非常有用。说到负指数幂,你需要自己写一个,因为系统的math.h中的有个问题——无法计算负数的非整数幂,尽管它们是可以存在的。比如:(-1)^1.2之类的。 |