24

According to wiki:

In mathematics and computer science, computer algebra, also called symbolic computation or algebraic computation is a scientific area that refers to the study and development of algorithms and software for manipulating mathematical expressions and other mathematical objects

Does symbolic computation focus on symbol manipulation and computation? Lisp program is written in the form of an AST with atoms as leaves. Lisp is said to be language for symbolic computing. Does it mean that in symbolic computation, it is:

  • all about symbols (symbols are atoms or non-atom expressions in Lisp)
  • every symbol is assigned a semantic
  • symbolic computation is a paradigm that orients programmers to focus on working with symbols and semantics (a semantic can be an atom or expression that does something) and the relationships between symbols, as opposed to think that data structure and code are two separated entities.
  • program design is language design, based on symbol composition/manipulation and semantic assignment.

According to this question, the opposite of symbolic computation is numeric computation. What's the primary difference between these two? When I work with Octave (I'm studying it), I have to work with numbers a lot and have to guess the meaning of those magic numbers many times. Is this a numerical computation focus?

Community
  • 1
  • 1
Amumu
  • 17,924
  • 31
  • 84
  • 131
  • I know of three ways to math calculations for differentiation: 1. [Symbolic computation](https://en.wikipedia.org/wiki/Symbolic_computation), 2.[Numerical differentiation](https://en.wikipedia.org/wiki/Numerical_differentiation), 3. [Automatic differentiation](https://en.wikipedia.org/wiki/Automatic_differentiation) If you want me to expand this into an answer just ask. – Guy Coder Nov 29 '16 at 15:08
  • Yes please! I want you to expand it into an answer! :) No, really..that would be nice to hear. – Timur Fayzrakhmanov May 22 '19 at 06:28

5 Answers5

31

Symbolic computation is one that emphasizes term rewriting over evaluation (e-value-ation, extracting the value). Symbols (also called expressions) are rewritable terms, values imply a loss or an end to rewritability. In a way, symbols are more abstract, values more concrete.

What's the answer to 3/9? A symbolic answer would be (a representation of) 1/3. A value answer would be 0.333333333, to however many decimals you care. Notice there's a loss of precision (and thus rewritability) here, 0.333333333 * 3 isn't quite 1 as it should.

A calculator (evaluating machine) will likely choke trying to evaluate (2^(74,207,281) − 1)/(2^(74,207,281) − 1) even though the answer is trivially just 1. There's no need to evaluate here when a mere rewrite would suffice.

And of course there's also the opposite case of equations so intractable to term rewriting that they can only be approximately answered through numerical methods.

Eli
  • 423
  • 1
  • 4
  • 4
13

Symbolic Computation is the computation with symbolic expressions.

Examples for symbolic expressions:

  • a mathematic formula, for example an integral expression
  • a logic theorem
  • a score of music, using note symbols
  • a plan situation

For the latter:

  • roads from a to b, b to d, c to e, e to f, b to f, ...
  • parcels p1 at a, p2 at d and p3 at f
  • a truck t1 at d
  • a goal

Now the task would be to generate a good plan which picks up all parcels and reaches the given goal.

  1. pick up parcel p2 at d
  2. move truck t1 from d to b
  3. move truck t1 from b to a
  4. pick up parcel p1 at a
  5. ...

In above examples symbols stand for places and for things (truck, parcel). Symbol expressions describe a situation, a plan generator will return a sequence of actions (move, pick up) - again described as symbolic expressions.

The LISt Processor (-> LISP) as symbolic computation

One of the fundamental discoveries of Lisp was then that a program is a symbolic expression and that the interpreter executing the program itself can be described by a program written as a symbolic expression. Thus the data, the Lisp program and its interpreter are symbolic expressions.

Rainer Joswig
  • 136,269
  • 10
  • 221
  • 346
  • Thanks. So it's as I thought, everything is centered around manipulating symbols. In this paradigm, even numbers should be think as symbols: terminal symbols have literal meaning as it appears (symbol '1' means 1) and non-terminal symbols are built up from other terminal and non-terminal symbols to form an abstraction (each abstraction is represented as one mere symbol). In contrast, numerical computation is centered around numbers and its meaning in specific contexts. Is modern programming languages a form of symbolic computation? – Amumu May 06 '13 at 19:34
3

Symbolic computation is handling non-numerical values, this means symbols like in algebra. There is a powerful free symbolic computation program for multiple platforms, maxima, that lets you, e.g., simplify or expand arithmetic expressions with symbols, of integrate or differentiate them, among others. Just try it out - it is fun and useful!

Reinhard Männer
  • 14,022
  • 5
  • 54
  • 116
2

symbolic computations are always precise ( infinite precision). In numeric computations precision is finite

Adam
  • 1,254
  • 12
  • 25
2

Symbols are one of the fundamental Lisp datatypes. Internally, symbols are composed of five cells: the name, value, function, plist, and package cells. Besides serving as data, symbols also serve as names for things, such as functions, variables, types, and blocks.