数学软件测试有感
(2009-07-27 19:40:29)
标签:
杂谈
这些年,虽然经常看一些算法的书,特别是和计算几何相关的内容,但编程能力一直没什么提高,反而日益下降。这让做程序员的大哥是很不高兴的,而我的兴趣只是在数学教育而已。
编程虽然不行,但使用过的软件还是不少,不知不觉所使用的数学软件有已数十种之多。每拿到一个软件,只要觉得还有可取之处,就会把帮助文件从头到尾看一遍,所附案例看一遍,然后把所有菜单、工具条一一使一次,所谓地毯式操作!
在逐步使用、熟悉数学软件的同时,也在思考其中的设计原理,以及为什么程序员的设计让用户不爽,而用户操作辛苦却不能达到预期的效果。
软件有做得好的,也有糟糕的。这都是很正常的,就好比人无完人,金无足赤一样。软件有其特色,因此能够在江湖上占一席之地。而软件有bug,虽然有些还不足以致命,但给用户的印象却很不好。
有些bug,是设计人员考虑不周造成的,有的则是数学上存在问题,需要一个更为高级的算法才能解决,这与程序员的编程水平关系不大。
下面举例说明。平时碰到的例子很多,但基本上很少整理;久而久之,就淡忘了。
例1:反比例函数
y=1/x在第一象限的图形,在靠近y轴的部分,画得不齐全。这个问题在相当多的数学软件中都会出现。譬如微软math
3.0,在拖动坐标系的时候,y=1/x在靠近y轴的部分总是一闪一闪的。
有人问过我,为什么这么简单的一个函数计算机画不出来呢?
这 个问题并不难解释。很多朋友都学会高等数学,而高等数学中有两个基本概念:连续与一致连续。y=1/x
(x>0) 是连续的,但不是一致连续的。通俗地讲,y=1/x (x>0)
图像没有断点,但存在这样的两点 x1 , x2 ,当 x1与 x2 相当接近时 y1 与 y2的距离却是相当远。
计算机作图都是先描绘足够多的样本点,然后连线,有时会用到一些插值算法使图像平滑,但更多的时候都是利用增加样本点来使得图像精确。
y=1/x在靠近y轴的时候,样本点之间距离相差很远,即使增加样本点,也不能从根本上解决这个问题,这是数学本身决定的。当然,增加一些样本点,图像还是会好很多。
根本上解决作图问题,需要从数学角度出发,想一个更巧妙的算法。此处从略。
与此类似的情况还有tan(x)在x趋向于pi/2的时候,也会有类似问题。不单是图形出问题,连计算都可能出问题。
让 人难以接受的是 一些作圆锥曲线的时候,竟然端点处断开。这是很低级的错误,但犯这样的错误的软件不少,包括微软的math3.0
,让人大跌眼镜。出现这样问题的原因也是类似的,就是代表点x的变化速度与y的变化相差较大,出现了跳跃,因此有了断点。其实用简单的参数方程作图,不就
很容易解决了吗,为什么一定要直角方程函数作图呢?
(未完待续)
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。