zoukankan      html  css  js  c++  java
  • 一起复习几何(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值时,由于其内部的有限的精度表示形式(科学计数法)不可避免的会引入误差。
    而几何计算又通常需要进行浮点数运算。为了将误差的影响减少至最低,需要尽量在算法或多项式的表示形式上下工夫。
  • 相关阅读:
    Winform中在ZedGraph中最多可以添加多少条曲线(转)
    c#委托的含义和用法
    vs2010打开vs2017工程
    C# Socket编程资源
    C# 调用打印机 打印 Excel (转)
    NPOI 教程
    C# 调用C++ DLL 的类型转换(转载版)(转)
    进程间通信(网络阅读笔记)
    NPOI 第二篇 设置样式与合并单元格(转)
    分布式事务的 6 种解决方案,写得非常好!
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333135.html
Copyright © 2011-2022 走看看