代码之家  ›  专栏  ›  技术社区  ›  Finglas

如何使数学公式可读和可维护?

  •  2
  • Finglas  · 技术社区  · 15 年前

    考虑到数学不是我的强项,我正在为3D动画实现贝塞尔曲线。

    公式如下所示 here 就像你看到的,这是非常讨厌的。在我的编程中,我使用描述性的名称,并且喜欢将复杂的行分解为更小的可管理行。

    如何处理这种情况的最佳方法?

    是否忽略编程最佳实践并坚持使用变量名(如x、y和t)?

    9 回复  |  直到 15 年前
        1
  •  4
  •   Nick Moore Wain    15 年前

    在我看来,当你有一个预先定义的数学方程时,使用短变量名是完全可以接受的:x,y,t,p_0等,它们对应于方程。不过,一定要清楚地引用这个公式。

        2
  •  2
  •   jk.    15 年前

    如果公式被附加到它自己的函数中,我当然会使用规范的数学表示法,并可能在注释中添加wiki页面的URL。

    如果将其嵌入具有特定函数用法的代码中,那么从代码中保留域名可能更好。

    它取决于

        3
  •  2
  •   Justin    15 年前

    因为只有你们中的数学家才能真正理解这个公式,我的建议是采用一个数学家最熟悉的样式(比如字母作为变量等等)。

    我也肯定会在其中的某个地方放一条注释,清楚地说明公式是什么,以及它的作用,例如“这个方法沿着二次贝塞尔曲线返回一系列点”。这样,每当您的程序员再次访问代码时,您可以安全地忽略数学复杂性,前提是您的内部数学家已经检查过,以确保一切正常。

        4
  •  1
  •   Tatu Ulmanen    15 年前

    我鼓励你使用数学的最佳实践,用字母来表示变量。只需为公式上方的变量提供解释。如果你能把公式分解成更小的子公式,那就更好了。

        5
  •  1
  •   Jorge Córdoba    15 年前

    不用麻烦了。只需参考文档(在本例中是维基百科页面,甚至更好的是您自己的文档),并确保变量名与您的文档相匹配。代码注释不太适合(也不需要它们)描述数学公式。

    有时,一个引用比40行注释甚至暗示变量名要好。

        6
  •  1
  •   David Thornley    15 年前

    使C(或其他偏好语言)中的公式尽可能接近数学公式,并包括对公式的引用,包括变量的描述。编码的思想是可读的,如果你处理的是数学公式,那么最可读的表示就是看起来最像数学的表示。

        7
  •  0
  •   Daniel Elliott    15 年前

    你可以把公式输入 wolfram alpha …它将尝试为您简化。

    它也将以一种数学友好的方式输出…够有趣的了;)

    仁慈,

        8
  •  0
  •   Jarrett Meyer    15 年前

    我倾向于把一个方程分解成它的根部分。

    def sum(array)
      array.inject(0) { |result, item| result + item }
    end
    
    def average(array)
      sum(array) / array.length
    end
    
    def sum_squared_error(array)
      avg = average(array)
      array.inject(0) { |result, item| result + (item - avg) ** 2 }
    end
    
    def variance(array)
      sum_squared_error(array) / (array.length - 1)
    end
    
    def standard_deviation(array)
      Math.sqrt(variance(array))
    end
    
        9
  •  0
  •   Shane    15 年前

    您可以考虑使用特定于域的语言来处理这个问题。Mathematica允许你写出方程,就像它在数学概念中出现的那样。

    最终的形式越像最初的公式,从长远来看,它就越容易维护(否则每次看到代码时都必须解释代码)。