一起复习几何(1)

 
把一个几何问题转换为可以运行的程序,通常需要这样几步:
几何--> 代数-->算法-->程序

计算机并不理解几何概念,为了让计算机帮助我们求解几何问题,需要如下几步:首先需要把几何问题转换成用数字表达的代数问题,然后根据几何的代数表示设计合适的求解算法,最后根据算法编写程序。这个过程貌似很简单,其实每一步都一项极具困难并富于挑战的任务。

几何-->代数

当思考一个几何物体时,即使是简单的点或线,我们通常在脑海中想一下它们的形状。为了让计算机能够处理几何物体,就需要一个计算机能够处理它的表达(representation)形式。例如,一个三维空间的点(2.5, 0.0, -4.0), 一个xy坐标平面的直线等式 3x-5y+3=0。

一个几何物体的表示形式通常并不唯一。以圆为例,它的隐式方程为 x^2 + y^2 = 1,用三角函数表示的参数化形式为: x = cos(t); y = sin(t); 0<= t < 360;

有些几何体甚至需要复杂的数据结构来表示其所有的细节,如多面体( Polyhedron)。因此寻找一种好而合适的表达形式也是极具挑战。

代数--> 算法
找到了几何体的代数解释的表达形式后,下一步就要寻找算法来处理该表达式和方程。这个过程或难或复杂,完全取决于需要解决的问题。但我们可以有这样几种方法:
  • 符号计算(symbolic computation)
    • 符号系统可以得到符号解。例如用符号系统来求解二次方程(quadratic equation) Ax2+Bx+C=0; 可以得到它的根的等式:root1 = (-B+SQRT(B2-4*A*C)/(2*A); root2 = (-B-SQRT(B2-4*A*C)/(2*A)。
    • 符号计算可以给出用一个或多个公示表示的闭合形式解(closed-form solutin) - 一个能直接计算级数和或递归结果的等式。
  • 数值计算(Numerical Computation)
    • 如牛顿迭代法
    • 若初始值不合适,有时候会导致找不到解。
  • 近似( Approximation)
    • 为了节省时间,可以只求近似解。
有时候可以联合用来求解问题。

算法-->程序
算法有了,程序还难实现吗?
 
几何问题太复杂了
维度复杂性
空间中的几何对象比平面上的几何对象更复杂,这一点毋庸置疑。一方面是由于许多几何属性只有在空间上讲才有意义,比如空间中一条延Z轴扭曲的曲线;另外一方面空间中可以表示更多的几何对象,如曲面。

分析复杂性
确切的说是方程式的复杂性。例如:
一次、二次、三次、四次、五次多项式。两个多项式相除又可以表示为有理多项式(rational Polynomials)
三角函数
另外仅从方程式我们不能直接看出其几何形状。
几何对象之间关系计算:求交点,判断是否平行/垂直等

组合复杂性
一个多项式需要若干个参数表示,如:
  Ax2+Bxy+Cy2+Ex+Ey+F=0
  Ax3+Bx2y+Cxy2 +Dy3+Ex2+Fxy+Gy2+Hx+Iy+J=0
随着多项式次数的增加,需要的参数也越来越多。

浮点数计算
计算机处理float,double值时,由于其内部的有限的精度表示形式(科学计数法)不可避免的会引入误差。
而几何计算又通常需要进行浮点数运算。为了将误差的影响减少至最低,需要尽量在算法或多项式的表示形式上下工夫。

posted on 2008-08-29 14:29  张大大123  阅读(164)  评论(0编辑  收藏  举报

导航