符号计算是什么?

25
根据维基百科的说法:在数学和计算机科学中,计算机代数也称为符号计算或代数计算是一个科学领域,它涉及算法和软件的研究和开发,用于操作数学表达式和其他数学对象。符号计算专注于符号操作和计算吗?Lisp程序以原子作为叶子节点的AST形式编写。Lisp被称为符号计算语言。这是否意味着,在符号计算中:
  • 全部关于符号(符号是Lisp中的原子或非原子表达式)
  • 每个符号都被赋予语义
  • 符号计算是一种范式,使程序员集中于使用符号和语义(语义可以是做某事的原子或表达式),以及符号之间的关系,而不是认为数据结构和代码是两个分离的实体。
  • 程序设计是基于符号组合/操作和语义赋值的语言设计。
根据此问题所述,符号计算的相反是数字计算。这两者之间的主要区别是什么?当我使用Octave时(我正在学习它),我必须大量使用数字,并且许多时候必须猜测这些幻数的含义。这是否是数字计算的重点?

我知道三种求微分运算的方法:1. 符号计算,2. 数值微分,3. 自动微分。如果你想让我详细回答,请告诉我。 - Guy Coder
是的请!我希望你能将其扩展成一个回答!:) 不开玩笑...听到这很不错。 - Timur Fayzrakhmanov
5个回答

32

符号计算强调的是术语重写而不是求值(提取值)。符号(也称为表达式)是可重写的术语,意味着重写的丢失或结束。从某种意义上说,符号更抽象,值更具体。

3/9的答案是什么?一个符号答案将是(表示为)1/3。一个值答案将是0.333333333,它可以有任意多个小数位。请注意,这里存在精度损失(因此重写能力减少),0.333333333 * 3并不完全等于应该得到的1

计算器(求值机)在尝试计算(2^(74,207,281) − 1)/(2^(74,207,281) − 1)时可能会失败,即使答案显然是1。在这里没有必要进行求值,仅重写就足够了。

当然,也有相反的情况-方程式难以通过术语重写来解决,只能通过数值方法近似回答。


13

符号计算是使用符号表达式进行的计算。

符号表达式的例子:

  • 数学公式,例如积分表达式
  • 逻辑定理
  • 音乐谱,使用音符符号
  • 计划情况

对于后者:

  • ab,从bd,从ce,从ef,从bf等道路
  • 包裹p1ap2dp3f
  • 卡车t1d
  • 目标

现在的任务是生成一个良好的计划,以拾取所有包裹并达到给定的目标

  • d 取回包裹 p2
  • 将卡车 t1d 移动到 b
  • 将卡车 t1b 移动到 a
  • a 取回包裹 p1
  • ...

以上例子中的符号代表地点物品(卡车、包裹)。 符号表达式 描述了一个情境,规划生成器会返回一系列动作(移动、取回) - 再次用 符号表达式 描述。

LISt处理器 (-> LISP) 作为符号计算

Lisp 的一个基本发现是:程序是一个符号表达式,执行程序的解释器本身可以被描述为一个以符号表达式编写的程序。因此,数据、Lisp 程序及其解释器都是符号表达式。


谢谢。所以正如我所想的那样,一切都围绕着符号操作展开。在这种范式中,甚至应该将数字视为符号:终端符号具有字面意义(例如符号“1”表示1),而非终端符号则是由其他终端和非终端符号组成的抽象,以形成一个抽象概念(每个抽象概念都被表示为一个单一符号)。相比之下,数值计算则集中于数字及其在特定上下文中的含义。现代编程语言是符号计算的一种形式吗? - Amumu

3
符号计算是处理非数值的值,这意味着代数中的符号。有一个强大的、免费的符号计算程序适用于多个平台——Maxima,它可以让您简化或扩展带符号的算术表达式,对其进行积分或微分等操作。快来试试吧,这很有趣且实用!

2
符号计算始终是精确的(无限精度)。在数值计算中,精度是有限的。

2

符号是Lisp语言的一种基本数据类型。内部,符号由五个单元格组成:名称、值、函数、属性列表和包单元格。除了作为数据之外,符号还可以用作事物的名称,如函数、变量、类型和块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接