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值时,由于其内部的有限的精度表示形式(科学计数法)不可避免的会引入误差。
    而几何计算又通常需要进行浮点数运算。为了将误差的影响减少至最低,需要尽量在算法或多项式的表示形式上下工夫。
  • 相关阅读:
    3_数据类型
    2_十进制与二进制的互相转换
    1_初识Java
    Jedis 常用API
    Eazfuscator.net 2020 IL级指令虚拟化保护(Virtualization)机制分析
    C#实现——十大排序算法之选择排序
    Flutter 开发从 0 到 1(三)布局与 ListView
    使用 .NET 进行游戏开发
    Metasploit简单使用——后渗透阶段
    ElasticSearch 索引 VS MySQL 索引
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333135.html
Copyright © 2011-2022 走看看