Template:Short description Template:Redirect Template:Functions

In mathematics, a function from a set Template:Mvar to a set Template:Mvar assigns to each element of Template:Mvar exactly one element of Template:Mvar.<ref name=halmos>Template:Harvnb; the words map, mapping, transformation, correspondence, and operator are sometimes used synonymously.</ref> The set Template:Mvar is called the domain of the function<ref>Template:Harvnb</ref> and the set Template:Mvar is called the codomain of the function.<ref name=codomain>Template:Eom</ref>

Functions were originally the idealization of how a varying quantity depends on another quantity. For example, the position of a planet is a function of time. Historically, the concept was elaborated with the infinitesimal calculus at the end of the 17th century, and, until the 19th century, the functions that were considered were differentiable (that is, they had a high degree of regularity). The concept of a function was formalized at the end of the 19th century in terms of set theory, and this greatly increased the possible applications of the concept.

A function is often denoted by a letter such as Template:Mvar, Template:Mvar or Template:Mvar. The value of a function Template:Mvar at an element Template:Mvar of its domain (that is, the element of the codomain that is associated with Template:Mvar) is denoted by Template:Math; for example, the value of Template:Mvar at Template:Math is denoted by Template:Math. Commonly, a specific function is defined by means of an expression depending on Template:Mvar, such as <math>f(x)=x^2+1;</math> in this case, some computation, called Template:Vanchor, may be needed for deducing the value of the function at a particular value; for example, if <math>f(x)=x^2+1,</math> then <math>f(4)=4^2+1=17.</math>

Given its domain and its codomain, a function is uniquely represented by the set of all pairs Template:Math, called the graph of the function, a popular means of illustrating the function.<ref group="note">This definition of "graph" refers to a set of pairs of objects. Graphs, in the sense of diagrams, are most applicable to functions from the real numbers to themselves. All functions can be described by sets of pairs but it may not be practical to construct a diagram for functions between other sets (such as sets of matrices).</ref><ref>Template:Cite encyclopedia</ref> When the domain and the codomain are sets of real numbers, each such pair may be thought of as the Cartesian coordinates of a point in the plane.

Functions are widely used in science, engineering, and in most fields of mathematics. It has been said that functions are "the central objects of investigation" in most fields of mathematics.Template:Sfn

The concept of a function has evolved significantly over centuries, from its informal origins in ancient mathematics to its formalization in the 19th century. See History of the function concept for details.

DefinitionEdit

File:Function machine2.svg
Schematic depiction of a function described metaphorically as a "machine" or "black box" that for each input yields a corresponding output
File:Example Function.png
The red curve is the graph of a function, because any vertical line has exactly one crossing point with the curve.

A function Template:Mvar from a set Template:Mvar to a set Template:Mvar is an assignment of one element of Template:Mvar to each element of Template:Mvar. The set Template:Mvar is called the domain of the function and the set Template:Mvar is called the codomain of the function.

If the element Template:Mvar in Template:Mvar is assigned to Template:Mvar in Template:Mvar by the function Template:Mvar, one says that Template:Mvar maps Template:Mvar to Template:Mvar, and this is commonly written <math>y=f(x).</math> In this notation, Template:Mvar is the argument or variable of the function.

A specific element Template:Mvar of Template:Mvar is a value of the variable, and the corresponding element of Template:Mvar is the value of the function at Template:Mvar, or the image of Template:Mvar under the function. The image of a function, sometimes called its range, is the set of the images of all elements in the domain.<ref name="EOM Function"/><ref name="T&K Calc p.3">Template:Taalman Kohn Calculus</ref><ref name="Trench RA pp.30-32">Template:Trench Intro Real Analysis</ref><ref name="TBB RA pp.A4-A5">Template:Thomson Bruckner Bruckner Elementary Real Analysis</ref>

A function Template:Mvar, its domain Template:Mvar, and its codomain Template:Mvar are often specified by the notation <math>f: X\to Y.</math> One may write <math>x\mapsto y</math> instead of <math>y=f(x)</math>, where the symbol <math>\mapsto</math> (read 'maps to') is used to specify where a particular element Template:Mvar in the domain is mapped to by Template:Mvar. This allows the definition of a function without naming. For example, the square function is the function <math>x\mapsto x^2.</math>

The domain and codomain are not always explicitly given when a function is defined. In particular, it is common that one might only know, without some (possibly difficult) computation, that the domain of a specific function is contained in a larger set. For example, if <math>f:\R\to\R</math> is a real function, the determination of the domain of the function <math>x\mapsto 1/f(x)</math> requires knowing the zeros of Template:Mvar This is one of the reasons for which, in mathematical analysis, "a function Template:Nowrap may refer to a function having a proper subset of Template:Mvar as a domain.<ref group="note">The true domain of such a function is often called the domain of definition of the function.</ref> For example, a "function from the reals to the reals" may refer to a real-valued function of a real variable whose domain is a proper subset of the real numbers, typically a subset that contains a non-empty open interval. Such a function is then called a partial function.

A function Template:Mvar on a set Template:Mvar means a function from the domain Template:Mvar, without specifying a codomain. However, some authors use it as shorthand for saying that the function is Template:Math.

Formal definitionEdit

File:Injection keine Injektion 1.svg
Diagram of a relation that is not a function. One reason is that 2 is the first element in more than one ordered pair. Another reason is that neither 3 nor 4 are the first element (input) of any ordered pair.

The above definition of a function is essentially that of the founders of calculus, Leibniz, Newton and Euler. However, it cannot be formalized, since there is no mathematical definition of an "assignment". It is only at the end of the 19th century that the first formal definition of a function could be provided, in terms of set theory. This set-theoretic definition is based on the fact that a function establishes a relation between the elements of the domain and some (possibly all) elements of the codomain. Mathematically, a binary relation between two sets Template:Math and Template:Math is a subset of the set of all ordered pairs <math>(x, y)</math> such that <math>x\in X</math> and <math>y\in Y.</math> The set of all these pairs is called the Cartesian product of Template:Math and Template:Math and denoted <math>X\times Y.</math> Thus, the above definition may be formalized as follows.

A function with domain Template:Math and codomain Template:Math is a binary relation Template:Mvar between Template:Math and Template:Math that satisfies the two following conditions:<ref>Template:Cite book</ref>

  • For every <math>x</math> in <math>X</math> there exists <math>y</math> in <math>Y</math> such that <math>(x,y)\in R.</math>
  • If <math>(x,y)\in R</math> and <math>(x,z)\in R,</math> then <math>y=z.</math>

This definition may be rewritten more formally, without referring explicitly to the concept of a relation, but using more notation (including set-builder notation):

A function is formed by three sets, the domain <math>X,</math> the codomain <math>Y,</math> and the graph <math>R</math> that satisfy the three following conditions.

  • <math>R \subseteq \{(x,y) \mid x\in X, y\in Y\}</math>
  • <math>\forall x\in X, \exists y\in Y, \left(x, y\right) \in R \qquad</math>
  • <math>(x,y)\in R \land (x,z)\in R \implies y=z\qquad</math>

Partial functionsEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}

Partial functions are defined similarly to ordinary functions, with the "total" condition removed. That is, a partial function from Template:Mvar to Template:Mvar is a binary relation Template:Mvar between Template:Mvar and Template:Mvar such that, for every <math>x\in X,</math> there is at most one Template:Mvar in Template:Mvar such that <math>(x,y) \in R.</math>

Using functional notation, this means that, given <math>x\in X,</math> either <math>f(x)</math> is in Template:Mvar, or it is undefined.

The set of the elements of Template:Mvar such that <math>f(x)</math> is defined and belongs to Template:Mvar is called the domain of definition of the function. A partial function from Template:Mvar to Template:Mvar is thus an ordinary function that has as its domain a subset of Template:Mvar called the domain of definition of the function. If the domain of definition equals Template:Mvar, one often says that the partial function is a total function.

In several areas of mathematics, the term "function" refers to partial functions rather than to ordinary (total) functions. This is typically the case when functions may be specified in a way that makes difficult or even impossible to determine their domain.

In calculus, a real-valued function of a real variable or real function is a partial function from the set <math>\R</math> of the real numbers to itself. Given a real function <math>f:x\mapsto f(x)</math> its multiplicative inverse <math>x\mapsto 1/f(x)</math> is also a real function. The determination of the domain of definition of a multiplicative inverse of a (partial) function amounts to compute the zeros of the function, the values where the function is defined but not its multiplicative inverse.

Similarly, a function of a complex variable is generally a partial function whose domain of definition is a subset of the complex numbers <math>\Complex</math>. The difficulty of determining the domain of definition of a complex function is illustrated by the multiplicative inverse of the Riemann zeta function: the determination of the domain of definition of the function <math>z\mapsto 1/\zeta(z)</math> is more or less equivalent to the proof or disproof of one of the major open problems in mathematics, the Riemann hypothesis.

In computability theory, a general recursive function is a partial function from the integers to the integers whose values can be computed by an algorithm (roughly speaking). The domain of definition of such a function is the set of inputs for which the algorithm does not run forever. A fundamental theorem of computability theory is that there cannot exist an algorithm that takes an arbitrary general recursive function as input and tests whether Template:Math belongs to its domain of definition (see Halting problem).

Multivariate functions Edit

Template:Distinguish

File:Binary operations as black box.svg
A binary operation is a typical example of a bivariate function which assigns to each pair <math>(x, y)</math> the result <math>x\circ y</math>.

A multivariate function, multivariable function, or function of several variables is a function that depends on several arguments. Such functions are commonly encountered. For example, the position of a car on a road is a function of the time travelled and its average speed.

Formally, a function of Template:Mvar variables is a function whose domain is a set of Template:Mvar-tuples.<ref group=note>Template:Mvar may also be 1, thus subsuming functions as defined above. For Template:Math, each constant is a special case of a multivariate function, too.</ref> For example, multiplication of integers is a function of two variables, or bivariate function, whose domain is the set of all ordered pairs (2-tuples) of integers, and whose codomain is the set of integers. The same is true for every binary operation. The graph of a bivariate surface over a two-dimensional real domain may be interpreted as defining a parametric surface, as used in, e.g., bivariate interpolation.

Commonly, an Template:Mvar-tuple is denoted enclosed between parentheses, such as in <math>(1,2,\ldots, n).</math> When using functional notation, one usually omits the parentheses surrounding tuples, writing <math>f(x_1,\ldots,x_n)</math> instead of <math>f((x_1,\ldots,x_n)).</math>

Given Template:Mvar sets <math>X_1,\ldots, X_n,</math> the set of all Template:Mvar-tuples <math>(x_1,\ldots,x_n)</math> such that <math>x_1\in X_1, \ldots, x_n\in X_n</math> is called the Cartesian product of <math>X_1,\ldots, X_n,</math> and denoted <math>X_1\times\cdots\times X_n.</math>

Therefore, a multivariate function is a function that has a Cartesian product or a proper subset of a Cartesian product as a domain.

<math display="block">f: U\to Y,</math>

where the domain Template:Mvar has the form

<math display="block">U\subseteq X_1\times\cdots\times X_n.</math>

If all the <math>X_i</math> are equal to the set <math>\R</math> of the real numbers or to the set <math>\C</math> of the complex numbers, one talks respectively of a function of several real variables or of a function of several complex variables.

NotationEdit

There are various standard ways for denoting functions. The most commonly used notation is functional notation, which is the first notation described below.

Functional notationEdit

The functional notation requires that a name is given to the function, which, in the case of a unspecified function is often the letter Template:Mvar. Then, the application of the function to an argument is denoted by its name followed by its argument (or, in the case of a multivariate functions, its arguments) enclosed between parentheses, such as in

<math display="block">f(x), \quad \sin(3),\quad \text{or}\quad f(x^2+1).</math>

The argument between the parentheses may be a variable, often Template:Mvar, that represents an arbitrary element of the domain of the function, a specific element of the domain (Template:Math in the above example), or an expression that can be evaluated to an element of the domain (<math>x^2+1</math> in the above example). The use of a unspecified variable between parentheses is useful for defining a function explicitly such as in "let <math>f(x)=\sin(x^2+1)</math>".

When the symbol denoting the function consists of several characters and no ambiguity may arise, the parentheses of functional notation might be omitted. For example, it is common to write Template:Math instead of Template:Math.

Functional notation was first used by Leonhard Euler in 1734.<ref>Template:Cite book</ref> Some widely used functions are represented by a symbol consisting of several letters (usually two or three, generally an abbreviation of their name). In this case, a roman type is customarily used instead, such as "Template:Math" for the sine function, in contrast to italic font for single-letter symbols.

The functional notation is often used colloquially for referring to a function and simultaneously naming its argument, such as in "let <math>f(x)</math> be a function". This is an abuse of notation that is useful for a simpler formulation.

Arrow notationEdit

Arrow notation defines the rule of a function inline, without requiring a name to be given to the function. It uses the ↦ arrow symbol, pronounced "maps to". For example, <math>x\mapsto x+1</math> is the function which takes a real number as input and outputs that number plus 1. Again, a domain and codomain of <math>\R</math> is implied.

The domain and codomain can also be explicitly stated, for example:

<math display="block">\begin{align} \operatorname{sqr}\colon \Z &\to \Z\\ x &\mapsto x^2.\end{align}</math>

This defines a function Template:Math from the integers to the integers that returns the square of its input.

As a common application of the arrow notation, suppose <math>f: X\times X\to Y;\;(x,t) \mapsto f(x,t)</math> is a function in two variables, and we want to refer to a partially applied function <math>X\to Y</math> produced by fixing the second argument to the value Template:Math without introducing a new function name. The map in question could be denoted <math>x\mapsto f(x,t_0)</math> using the arrow notation. The expression <math>x\mapsto f(x,t_0)</math> (read: "the map taking Template:Mvar to Template:Mvar of Template:Mvar comma Template:Mvar nought") represents this new function with just one argument, whereas the expression Template:Math refers to the value of the function Template:Mvar at the Template:Nowrap

Index notationEdit

Index notation may be used instead of functional notation. That is, instead of writing Template:Math, one writes <math>f_x.</math>

This is typically the case for functions whose domain is the set of the natural numbers. Such a function is called a sequence, and, in this case the element <math>f_n</math> is called the Template:Mvarth element of the sequence.

The index notation can also be used for distinguishing some variables called parameters from the "true variables". In fact, parameters are specific variables that are considered as being fixed during the study of a problem. For example, the map <math>x\mapsto f(x,t)</math> (see above) would be denoted <math>f_t</math> using index notation, if we define the collection of maps <math>f_t</math> by the formula <math>f_t(x)=f(x,t)</math> for all <math>x,t\in X</math>.

Dot notationEdit

In the notation <math>x\mapsto f(x),</math> the symbol Template:Mvar does not represent any value; it is simply a placeholder, meaning that, if Template:Mvar is replaced by any value on the left of the arrow, it should be replaced by the same value on the right of the arrow. Therefore, Template:Mvar may be replaced by any symbol, often an interpunct "Template:Math". This may be useful for distinguishing the function Template:Math from its value Template:Math at Template:Mvar.

For example, <math> a(\cdot)^2</math> may stand for the function <math> x\mapsto ax^2</math>, and <math display="inline"> \int_a^{\, (\cdot)} f(u)\,du</math> may stand for a function defined by an integral with variable upper bound: <math display="inline"> x\mapsto \int_a^x f(u)\,du</math>.

Specialized notationsEdit

There are other, specialized notations for functions in sub-disciplines of mathematics. For example, in linear algebra and functional analysis, linear forms and the vectors they act upon are denoted using a dual pair to show the underlying duality. This is similar to the use of bra–ket notation in quantum mechanics. In logic and the theory of computation, the function notation of lambda calculus is used to explicitly express the basic notions of function abstraction and application. In category theory and homological algebra, networks of functions are described in terms of how they and their compositions commute with each other using commutative diagrams that extend and generalize the arrow notation for functions described above.

Functions of more than one variableEdit

In some cases the argument of a function may be an ordered pair of elements taken from some set or sets. For example, a function Template:Mvar can be defined as mapping any pair of real numbers <math>(x, y)</math> to the sum of their squares, <math>x^2 + y^2</math>. Such a function is commonly written as <math>f(x, y)=x^2 + y^2</math> and referred to as "a function of two variables". Likewise one can have a function of three or more variables, with notations such as <math>f(w,x, y)</math>, <math>f(w,x, y, z)</math>.

Other termsEdit

Template:Broader

Term Distinction from "function"
Map/Mapping citation CitationClass=web

}}</ref>

A map can have any set as its codomain, while, in some contexts, typically in older books, the codomain of a function is specifically the set of real or complex numbers.<ref name=Lang87p43>Template:Cite book</ref>
Alternatively, a map is associated with a special structure (e.g. by explicitly specifying a structured codomain in its definition). For example, a linear map.<ref name=Apostol81p35/>
Homomorphism A function between two structures of the same type that preserves the operations of the structure (e.g. a group homomorphism).<ref>Template:Cite book</ref>
Morphism A generalisation of homomorphisms to any category, even when the objects of the category are not sets (for example, a group defines a category with only one object, which has the elements of the group as morphisms; see Template:Slink for this example and other similar ones).<ref>Template:Harvnb</ref>

A function may also be called a map or a mapping, but some authors make a distinction between the term "map" and "function". For example, the term "map" is often reserved for a "function" with some sort of special structure (e.g. maps of manifolds). In particular map may be used in place of homomorphism for the sake of succinctness (e.g., linear map or map from Template:Mvar to Template:Mvar instead of group homomorphism from Template:Mvar to Template:Mvar). Some authors<ref name=Apostol81p35>Template:Cite book</ref> reserve the word mapping for the case where the structure of the codomain belongs explicitly to the definition of the function.

Some authors, such as Serge Lang,<ref name=Lang87p43/> use "function" only to refer to maps for which the codomain is a subset of the real or complex numbers, and use the term mapping for more general functions.

In the theory of dynamical systems, a map denotes an evolution function used to create discrete dynamical systems. See also Poincaré map.

Whichever definition of map is used, related terms like domain, codomain, injective, continuous have the same meaning as for a function.

Specifying a functionEdit

Given a function <math>f</math>, by definition, to each element <math>x</math> of the domain of the function <math>f</math>, there is a unique element associated to it, the value <math>f(x)</math> of <math>f</math> at <math>x</math>. There are several ways to specify or describe how <math>x</math> is related to <math>f(x)</math>, both explicitly and implicitly. Sometimes, a theorem or an axiom asserts the existence of a function having some properties, without describing it more precisely. Often, the specification or description is referred to as the definition of the function <math>f</math>.

By listing function valuesEdit

On a finite set a function may be defined by listing the elements of the codomain that are associated to the elements of the domain. For example, if <math>A = \{ 1, 2, 3 \}</math>, then one can define a function <math>f: A \to \mathbb{R}</math> by <math>f(1) = 2, f(2) = 3, f(3) = 4.</math>

By a formulaEdit

Functions are often defined by an expression that describes a combination of arithmetic operations and previously defined functions; such a formula allows computing the value of the function from the value of any element of the domain. For example, in the above example, <math>f</math> can be defined by the formula <math>f(n) = n+1</math>, for <math>n\in\{1,2,3\}</math>.

When a function is defined this way, the determination of its domain is sometimes difficult. If the formula that defines the function contains divisions, the values of the variable for which a denominator is zero must be excluded from the domain; thus, for a complicated function, the determination of the domain passes through the computation of the zeros of auxiliary functions. Similarly, if square roots occur in the definition of a function from <math>\mathbb{R}</math> to <math>\mathbb{R},</math> the domain is included in the set of the values of the variable for which the arguments of the square roots are nonnegative.

For example, <math>f(x)=\sqrt{1+x^2}</math> defines a function <math>f: \mathbb{R} \to \mathbb{R}</math> whose domain is <math>\mathbb{R},</math> because <math>1+x^2</math> is always positive if Template:Mvar is a real number. On the other hand, <math>f(x)=\sqrt{1-x^2}</math> defines a function from the reals to the reals whose domain is reduced to the interval Template:Closed-closed. (In old texts, such a domain was called the domain of definition of the function.)

Functions can be classified by the nature of formulas that define them:

  • A quadratic function is a function that may be written <math>f(x) = ax^2+bx+c,</math> where Template:Math are constants.
  • More generally, a polynomial function is a function that can be defined by a formula involving only additions, subtractions, multiplications, and exponentiation to nonnegative integer powers. For example, <math>f(x) = x^3-3x-1</math> and <math>f(x) = (x-1)(x^3+1) +2x^2 -1</math> are polynomial functions of <math>x</math>.
  • A rational function is the same, with divisions also allowed, such as <math>f(x) = \frac{x-1}{x+1},</math> and <math>f(x) = \frac 1{x+1}+\frac 3x-\frac 2{x-1}.</math>
  • An algebraic function is the same, with [[nth root|Template:Mvarth roots]] and roots of polynomials also allowed.
  • An elementary function<ref group=note>Here "elementary" has not exactly its common sense: although most functions that are encountered in elementary courses of mathematics are elementary in this sense, some elementary functions are not elementary for the common sense, for example, those that involve roots of polynomials of high degree.</ref> is the same, with logarithms and exponential functions allowed.

Inverse and implicit functionsEdit

A function <math>f : X\to Y,</math> with domain Template:Mvar and codomain Template:Mvar, is bijective, if for every Template:Mvar in Template:Mvar, there is one and only one element Template:Mvar in Template:Mvar such that Template:Math. In this case, the inverse function of Template:Mvar is the function <math>f^{-1} : Y \to X</math> that maps <math>y\in Y</math> to the element <math>x\in X</math> such that Template:Math. For example, the natural logarithm is a bijective function from the positive real numbers to the real numbers. It thus has an inverse, called the exponential function, that maps the real numbers onto the positive numbers.

If a function <math>f: X\to Y</math> is not bijective, it may occur that one can select subsets <math>E\subseteq X</math> and <math>F\subseteq Y</math> such that the restriction of Template:Mvar to Template:Mvar is a bijection from Template:Mvar to Template:Mvar, and has thus an inverse. The inverse trigonometric functions are defined this way. For example, the cosine function induces, by restriction, a bijection from the interval Template:Closed-closed onto the interval Template:Closed-closed, and its inverse function, called arccosine, maps Template:Closed-closed onto Template:Closed-closed. The other inverse trigonometric functions are defined similarly.

More generally, given a binary relation Template:Mvar between two sets Template:Mvar and Template:Mvar, let Template:Mvar be a subset of Template:Mvar such that, for every <math>x\in E,</math> there is some <math>y\in Y</math> such that Template:Math. If one has a criterion allowing selecting such a Template:Mvar for every <math>x\in E,</math> this defines a function <math>f: E\to Y,</math> called an implicit function, because it is implicitly defined by the relation Template:Mvar.

For example, the equation of the unit circle <math>x^2+y^2=1</math> defines a relation on real numbers. If Template:Math there are two possible values of Template:Mvar, one positive and one negative. For Template:Math, these two values become both equal to 0. Otherwise, there is no possible value of Template:Mvar. This means that the equation defines two implicit functions with domain Template:Closed-closed and respective codomains Template:Closed-open and Template:Open-closed.

In this example, the equation can be solved in Template:Mvar, giving <math>y=\pm \sqrt{1-x^2},</math> but, in more complicated examples, this is impossible. For example, the relation <math>y^5+y+x=0</math> defines Template:Mvar as an implicit function of Template:Mvar, called the Bring radical, which has <math>\mathbb R</math> as domain and range. The Bring radical cannot be expressed in terms of the four arithmetic operations and [[nth root|Template:Mvarth roots]].

The implicit function theorem provides mild differentiability conditions for existence and uniqueness of an implicit function in the neighborhood of a point.

Using differential calculusEdit

Many functions can be defined as the antiderivative of another function. This is the case of the natural logarithm, which is the antiderivative of Template:Math that is 0 for Template:Math. Another common example is the error function.

More generally, many functions, including most special functions, can be defined as solutions of differential equations. The simplest example is probably the exponential function, which can be defined as the unique function that is equal to its derivative and takes the value 1 for Template:Math.

Power series can be used to define functions on the domain in which they converge. For example, the exponential function is given by <math display="inline">e^x = \sum_{n=0}^{\infty} {x^n \over n!}</math>. However, as the coefficients of a series are quite arbitrary, a function that is the sum of a convergent series is generally defined otherwise, and the sequence of the coefficients is the result of some computation based on another definition. Then, the power series can be used to enlarge the domain of the function. Typically, if a function for a real variable is the sum of its Taylor series in some interval, this power series allows immediately enlarging the domain to a subset of the complex numbers, the disc of convergence of the series. Then analytic continuation allows enlarging further the domain for including almost the whole complex plane. This process is the method that is generally used for defining the logarithm, the exponential and the trigonometric functions of a complex number.

By recurrenceEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} Functions whose domain are the nonnegative integers, known as sequences, are sometimes defined by recurrence relations.

The factorial function on the nonnegative integers (<math>n\mapsto n!</math>) is a basic example, as it can be defined by the recurrence relation

<math display="block">n!=n(n-1)!\quad\text{for}\quad n>0,</math>

and the initial condition

<math display="block">0!=1.</math>

Representing a functionEdit

A graph is commonly used to give an intuitive picture of a function. As an example of how a graph helps to understand a function, it is easy to see from its graph whether a function is increasing or decreasing. Some functions may also be represented by bar charts.

Graphs and plotsEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}

File:Motor vehicle deaths in the US.svg
The function mapping each year to its US motor vehicle death count, shown as a line chart
File:Motor vehicle deaths in the US histogram.svg
The same function, shown as a bar chart

Given a function <math>f : X\to Y,</math> its graph is, formally, the set

<math display="block">G=\{(x,f(x))\mid x\in X\}.</math>

In the frequent case where Template:Mvar and Template:Mvar are subsets of the real numbers (or may be identified with such subsets, e.g. intervals), an element <math>(x,y)\in G</math> may be identified with a point having coordinates Template:Math in a 2-dimensional coordinate system, e.g. the Cartesian plane. Parts of this may create a plot that represents (parts of) the function. The use of plots is so ubiquitous that they too are called the graph of the function. Graphic representations of functions are also possible in other coordinate systems. For example, the graph of the square function

<math display="block">x\mapsto x^2,</math>

consisting of all points with coordinates <math>(x, x^2)</math> for <math>x\in \R,</math> yields, when depicted in Cartesian coordinates, the well known parabola. If the same quadratic function <math>x\mapsto x^2,</math> with the same formal graph, consisting of pairs of numbers, is plotted instead in polar coordinates <math>(r,\theta) =(x,x^2),</math> the plot obtained is Fermat's spiral.

TablesEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} A function can be represented as a table of values. If the domain of a function is finite, then the function can be completely specified in this way. For example, the multiplication function <math>f:\{1,\ldots,5\}^2 \to \mathbb{R}</math> defined as <math>f(x,y)=xy</math> can be represented by the familiar multiplication table

Template:Diagonal split header 1 2 3 4 5
1 1 2 3 4 5
2 2 4 6 8 10
3 3 6 9 12 15
4 4 8 12 16 20
5 5 10 15 20 25

On the other hand, if a function's domain is continuous, a table can give the values of the function at specific values of the domain. If an intermediate value is needed, interpolation can be used to estimate the value of the function. For example, a portion of a table for the sine function might be given as follows, with values rounded to 6 decimal places:

Template:Mvar Template:Math
1.289 0.960557
1.290 0.960835
1.291 0.961112
1.292 0.961387
1.293 0.961662

Before the advent of handheld calculators and personal computers, such tables were often compiled and published for functions such as logarithms and trigonometric functions.

Bar chartEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} A bar chart can represent a function whose domain is a finite set, the natural numbers, or the integers. In this case, an element Template:Mvar of the domain is represented by an interval of the Template:Mvar-axis, and the corresponding value of the function, Template:Math, is represented by a rectangle whose base is the interval corresponding to Template:Mvar and whose height is Template:Math (possibly negative, in which case the bar extends below the Template:Mvar-axis).

General propertiesEdit

This section describes general properties of functions, that are independent of specific properties of the domain and the codomain.

Standard functionsEdit

There are a number of standard functions that occur frequently:

Function compositionEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}

Given two functions <math>f: X\to Y</math> and <math>g: Y\to Z</math> such that the domain of Template:Mvar is the codomain of Template:Mvar, their composition is the function <math>g \circ f: X \rightarrow Z</math> defined by

<math display="block">(g \circ f)(x) = g(f(x)).</math>

That is, the value of <math>g \circ f</math> is obtained by first applying Template:Math to Template:Math to obtain Template:Math and then applying Template:Math to the result Template:Mvar to obtain Template:Math. In this notation, the function that is applied first is always written on the right.

The composition <math>g\circ f</math> is an operation on functions that is defined only if the codomain of the first function is the domain of the second one. Even when both <math>g \circ f</math> and <math>f \circ g</math> satisfy these conditions, the composition is not necessarily commutative, that is, the functions <math>g \circ f</math> and <math> f \circ g</math> need not be equal, but may deliver different values for the same argument. For example, let Template:Math and Template:Math, then <math>g(f(x))=x^2+1</math> and <math> f(g(x)) = (x+1)^2</math> agree just for <math>x=0.</math>

The function composition is associative in the sense that, if one of <math>(h\circ g)\circ f</math> and <math>h\circ (g\circ f)</math> is defined, then the other is also defined, and they are equal, that is, <math>(h\circ g)\circ f = h\circ (g\circ f).</math> Therefore, it is usual to just write <math>h\circ g\circ f.</math>

The identity functions <math>\operatorname{id}_X</math> and <math>\operatorname{id}_Y</math> are respectively a right identity and a left identity for functions from Template:Mvar to Template:Mvar. That is, if Template:Mvar is a function with domain Template:Mvar, and codomain Template:Mvar, one has <math>f\circ \operatorname{id}_X = \operatorname{id}_Y \circ f = f.</math>

Image and preimageEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} Let <math>f: X\to Y.</math> The image under Template:Mvar of an element Template:Mvar of the domain Template:Mvar is Template:Math.<ref name="EOM Function"/> If Template:Math is any subset of Template:Math, then the image of Template:Mvar under Template:Mvar, denoted Template:Math, is the subset of the codomain Template:Math consisting of all images of elements of Template:Mvar,<ref name="EOM Function"/> that is,

<math display="block">f(A)=\{f(x)\mid x\in A\}.</math>

The image of Template:Math is the image of the whole domain, that is, Template:Math.Template:R It is also called the range of Template:Mvar,Template:R although the term range may also refer to the codomain.Template:R<ref name = "standard">Quantities and Units - Part 2: Mathematical signs and symbols to be used in the natural sciences and technology, p. 15. ISO 80000-2 (ISO/IEC 2009-12-01)</ref>

On the other hand, the inverse image or preimage under Template:Mvar of an element Template:Mvar of the codomain Template:Mvar is the set of all elements of the domain Template:Math whose images under Template:Mvar equal Template:Mvar.<ref name="EOM Function"/> In symbols, the preimage of Template:Mvar is denoted by <math>f^{-1}(y)</math> and is given by the equation

<math display="block">f^{-1}(y) = \{x \in X \mid f(x) = y\}.</math>

Likewise, the preimage of a subset Template:Math of the codomain Template:Math is the set of the preimages of the elements of Template:Math, that is, it is the subset of the domain Template:Math consisting of all elements of Template:Math whose images belong to Template:Math.<ref name="EOM Function"/> It is denoted by <math>f^{-1}(B)</math> and is given by the equation

<math display="block">f^{-1}(B) = \{x \in X \mid f(x) \in B\}.</math>

For example, the preimage of <math>\{4, 9\}</math> under the square function is the set <math>\{-3,-2,2,3\}</math>.

By definition of a function, the image of an element Template:Math of the domain is always a single element of the codomain. However, the preimage <math>f^{-1}(y)</math> of an element Template:Mvar of the codomain may be empty or contain any number of elements. For example, if Template:Mvar is the function from the integers to themselves that maps every integer to 0, then <math>f^{-1}(0) = \mathbb{Z}</math>.

If <math>f : X\to Y</math> is a function, Template:Math and Template:Math are subsets of Template:Math, and Template:Math and Template:Math are subsets of Template:Math, then one has the following properties:

  • <math>A\subseteq B \Longrightarrow f(A)\subseteq f(B)</math>
  • <math>C\subseteq D \Longrightarrow f^{-1}(C)\subseteq f^{-1}(D)</math>
  • <math>A \subseteq f^{-1}(f(A))</math>
  • <math>C \supseteq f(f^{-1}(C))</math>
  • <math>f(f^{-1}(f(A)))=f(A)</math>
  • <math>f^{-1}(f(f^{-1}(C)))=f^{-1}(C)</math>

The preimage by Template:Mvar of an element Template:Mvar of the codomain is sometimes called, in some contexts, the fiber of Template:Math under Template:Mvar.

If a function Template:Mvar has an inverse (see below), this inverse is denoted <math>f^{-1}.</math> In this case <math>f^{-1}(C)</math> may denote either the image by <math>f^{-1}</math> or the preimage by Template:Mvar of Template:Mvar. This is not a problem, as these sets are equal. The notation <math>f(A)</math> and <math>f^{-1}(C)</math> may be ambiguous in the case of sets that contain some subsets as elements, such as <math>\{x, \{x\}\}.</math> In this case, some care may be needed, for example, by using square brackets <math>f[A], f^{-1}[C]</math> for images and preimages of subsets and ordinary parentheses for images and preimages of elements.

Injective, surjective and bijective functionsEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}

Let <math>f : X\to Y</math> be a function.

The function Template:Mvar is injective (or one-to-one, or is an injection) if Template:Math for every two different elements Template:Math and Template:Mvar of Template:Mvar.<ref name="PCM p.11">Template:Princeton Companion to Mathematics</ref><ref name="EOM Injection">Template:Eom</ref> Equivalently, Template:Mvar is injective if and only if, for every <math>y\in Y,</math> the preimage <math>f^{-1}(y)</math> contains at most one element. An empty function is always injective. If Template:Mvar is not the empty set, then Template:Mvar is injective if and only if there exists a function <math>g: Y\to X</math> such that <math>g\circ f=\operatorname{id}_X,</math> that is, if Template:Mvar has a left inverse.<ref name="EOM Injection"/> Proof: If Template:Mvar is injective, for defining Template:Mvar, one chooses an element <math>x_0</math> in Template:Mvar (which exists as Template:Mvar is supposed to be nonempty),<ref group=note>The axiom of choice is not needed here, as the choice is done in a single set.</ref> and one defines Template:Mvar by <math>g(y)=x</math> if <math>y=f(x)</math> and <math>g(y)=x_0</math> if <math>y\not\in f(X).</math> Conversely, if <math>g\circ f=\operatorname{id}_X,</math> and <math>y=f(x),</math> then <math>x=g(y),</math> and thus <math>f^{-1}(y)=\{x\}.</math>

The function Template:Mvar is surjective (or onto, or is a surjection) if its range <math>f(X)</math> equals its codomain <math>Y</math>, that is, if, for each element <math>y</math> of the codomain, there exists some element <math>x</math> of the domain such that <math>f(x) = y</math> (in other words, the preimage <math>f^{-1}(y)</math> of every <math>y\in Y</math> is nonempty).<ref name="PCM p.11"/><ref name="EOM Surjection">Template:Eom</ref> If, as usual in modern mathematics, the axiom of choice is assumed, then Template:Mvar is surjective if and only if there exists a function <math>g: Y\to X</math> such that <math>f\circ g=\operatorname{id}_Y,</math> that is, if Template:Mvar has a right inverse.<ref name="EOM Surjection"/> The axiom of choice is needed, because, if Template:Mvar is surjective, one defines Template:Mvar by <math>g(y)=x,</math> where <math>x</math> is an arbitrarily chosen element of <math>f^{-1}(y).</math>

The function Template:Mvar is bijective (or is a bijection or a one-to-one correspondence) if it is both injective and surjective.<ref name="PCM p.11"/><ref name="EOM Bijection">Template:Eom</ref> That is, Template:Mvar is bijective if, for every <math>y\in Y,</math> the preimage <math>f^{-1}(y)</math> contains exactly one element. The function Template:Mvar is bijective if and only if it admits an inverse function, that is, a function <math>g : Y\to X</math> such that <math>g\circ f=\operatorname{id}_X</math> and <math>f\circ g=\operatorname{id}_Y.</math><ref name="EOM Bijection"/> (Contrarily to the case of surjections, this does not require the axiom of choice; the proof is straightforward).

Every function <math>f: X\to Y</math> may be factorized as the composition <math>i\circ s</math> of a surjection followed by an injection, where Template:Mvar is the canonical surjection of Template:Mvar onto Template:Math and Template:Mvar is the canonical injection of Template:Math into Template:Mvar. This is the canonical factorization of Template:Mvar.

"One-to-one" and "onto" are terms that were more common in the older English language literature; "injective", "surjective", and "bijective" were originally coined as French words in the second quarter of the 20th century by the Bourbaki group and imported into English.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> As a word of caution, "a one-to-one function" is one that is injective, while a "one-to-one correspondence" refers to a bijective function. Also, the statement "Template:Math maps Template:Math onto Template:Math" differs from "Template:Math maps Template:Math into Template:Math", in that the former implies that Template:Math is surjective, while the latter makes no assertion about the nature of Template:Math. In a complicated reasoning, the one letter difference can easily be missed. Due to the confusing nature of this older terminology, these terms have declined in popularity relative to the Bourbakian terms, which have also the advantage of being more symmetrical.

Restriction and extension Edit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} If <math>f : X \to Y</math> is a function and Template:Math is a subset of Template:Math, then the restriction of <math>f</math> to S, denoted <math>f|_S</math>, is the function from Template:Math to Template:Math defined by

<math display="block">f|_S(x) = f(x)</math>

for all Template:Math in Template:Math. Restrictions can be used to define partial inverse functions: if there is a subset Template:Math of the domain of a function <math>f</math> such that <math>f|_S</math> is injective, then the canonical surjection of <math>f|_S</math> onto its image <math>f|_S(S) = f(S)</math> is a bijection, and thus has an inverse function from <math>f(S)</math> to Template:Math. One application is the definition of inverse trigonometric functions. For example, the cosine function is injective when restricted to the interval Template:Closed-closed. The image of this restriction is the interval Template:Closed-closed, and thus the restriction has an inverse function from Template:Closed-closed to Template:Closed-closed, which is called arccosine and is denoted Template:Math.

Function restriction may also be used for "gluing" functions together. Let <math display="inline"> X=\bigcup_{i\in I}U_i</math> be the decomposition of Template:Mvar as a union of subsets, and suppose that a function <math>f_i : U_i \to Y</math> is defined on each <math>U_i</math> such that for each pair <math>i, j</math> of indices, the restrictions of <math>f_i</math> and <math>f_j</math> to <math>U_i \cap U_j</math> are equal. Then this defines a unique function <math>f : X \to Y</math> such that <math>f|_{U_i} = f_i</math> for all Template:Mvar. This is the way that functions on manifolds are defined.

An extension of a function Template:Mvar is a function Template:Mvar such that Template:Mvar is a restriction of Template:Mvar. A typical use of this concept is the process of analytic continuation, that allows extending functions whose domain is a small part of the complex plane to functions whose domain is almost the whole complex plane.

Here is another classical example of a function extension that is encountered when studying homographies of the real line. A homography is a function <math>h(x)=\frac{ax+b}{cx+d}</math> such that Template:Math. Its domain is the set of all real numbers different from <math>-d/c,</math> and its image is the set of all real numbers different from <math>a/c.</math> If one extends the real line to the projectively extended real line by including Template:Math, one may extend Template:Mvar to a bijection from the extended real line to itself by setting <math>h(\infty)=a/c</math> and <math>h(-d/c)=\infty</math>.

In calculusEdit

Template:Further

The idea of function, starting in the 17th century, was fundamental to the new infinitesimal calculus. At that time, only real-valued functions of a real variable were considered, and all functions were assumed to be smooth. But the definition was soon extended to functions of several variables and to functions of a complex variable. In the second half of the 19th century, the mathematically rigorous definition of a function was introduced, and functions with arbitrary domains and codomains were defined.

Functions are now used throughout all areas of mathematics. In introductory calculus, when the word function is used without qualification, it means a real-valued function of a single real variable. The more general definition of a function is usually introduced to second or third year college students with STEM majors, and in their senior year they are introduced to calculus in a larger, more rigorous setting in courses such as real analysis and complex analysis.

Real functionEdit

Template:See also

File:Gerade.svg
Graph of a linear function
File:Polynomialdeg2.svg
Graph of a polynomial function, here a quadratic function.
File:Sine cosine one period.svg
Graph of two trigonometric functions: sine and cosine.

A real function is a real-valued function of a real variable, that is, a function whose codomain is the field of real numbers and whose domain is a set of real numbers that contains an interval. In this section, these functions are simply called functions.

The functions that are most commonly considered in mathematics and its applications have some regularity, that is they are continuous, differentiable, and even analytic. This regularity insures that these functions can be visualized by their graphs. In this section, all functions are differentiable in some interval.

Functions enjoy pointwise operations, that is, if Template:Mvar and Template:Mvar are functions, their sum, difference and product are functions defined by

<math display="block">\begin{align} (f+g)(x)&=f(x)+g(x)\\ (f-g)(x)&=f(x)-g(x)\\ (f\cdot g)(x)&=f(x)\cdot g(x)\\ \end{align}.</math>

The domains of the resulting functions are the intersection of the domains of Template:Mvar and Template:Mvar. The quotient of two functions is defined similarly by

<math display="block">\frac fg(x)=\frac{f(x)}{g(x)},</math>

but the domain of the resulting function is obtained by removing the zeros of Template:Mvar from the intersection of the domains of Template:Mvar and Template:Mvar.

The polynomial functions are defined by polynomials, and their domain is the whole set of real numbers. They include constant functions, linear functions and quadratic functions. Rational functions are quotients of two polynomial functions, and their domain is the real numbers with a finite number of them removed to avoid division by zero. The simplest rational function is the function <math>x\mapsto \frac 1x,</math> whose graph is a hyperbola, and whose domain is the whole real line except for 0.

The derivative of a real differentiable function is a real function. An antiderivative of a continuous real function is a real function that has the original function as a derivative. For example, the function <math display="inline">x\mapsto\frac 1x</math> is continuous, and even differentiable, on the positive real numbers. Thus one antiderivative, which takes the value zero for Template:Math, is a differentiable function called the natural logarithm.

A real function Template:Mvar is monotonic in an interval if the sign of <math>\frac{f(x)-f(y)}{x-y}</math> does not depend of the choice of Template:Mvar and Template:Mvar in the interval. If the function is differentiable in the interval, it is monotonic if the sign of the derivative is constant in the interval. If a real function Template:Mvar is monotonic in an interval Template:Mvar, it has an inverse function, which is a real function with domain Template:Math and image Template:Mvar. This is how inverse trigonometric functions are defined in terms of trigonometric functions, where the trigonometric functions are monotonic. Another example: the natural logarithm is monotonic on the positive real numbers, and its image is the whole real line; therefore it has an inverse function that is a bijection between the real numbers and the positive real numbers. This inverse is the exponential function.

Many other real functions are defined either by the implicit function theorem (the inverse function is a particular instance) or as solutions of differential equations. For example, the sine and the cosine functions are the solutions of the linear differential equation

<math display="block">y+y=0</math>

such that

<math display="block">\sin 0=0, \quad \cos 0=1, \quad\frac{\partial \sin x}{\partial x}(0)=1, \quad\frac{\partial \cos x}{\partial x}(0)=0.</math>

Vector-valued functionEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}

When the elements of the codomain of a function are vectors, the function is said to be a vector-valued function. These functions are particularly useful in applications, for example modeling physical properties. For example, the function that associates to each point of a fluid its velocity vector is a vector-valued function.

Some vector-valued functions are defined on a subset of <math>\mathbb{R}^n</math> or other spaces that share geometric or topological properties of <math>\mathbb{R}^n</math>, such as manifolds. These vector-valued functions are given the name vector fields.

Function spaceEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}} In mathematical analysis, and more specifically in functional analysis, a function space is a set of scalar-valued or vector-valued functions, which share a specific property and form a topological vector space. For example, the real smooth functions with a compact support (that is, they are zero outside some compact set) form a function space that is at the basis of the theory of distributions.

Function spaces play a fundamental role in advanced mathematical analysis, by allowing the use of their algebraic and topological properties for studying properties of functions. For example, all theorems of existence and uniqueness of solutions of ordinary or partial differential equations result of the study of function spaces.

Multi-valued functionsEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}

File:Function with two values 1.svg
Together, the two square roots of all nonnegative real numbers form a single smooth curve.

Several methods for specifying functions of real or complex variables start from a local definition of the function at a point or on a neighbourhood of a point, and then extend by continuity the function to a much larger domain. Frequently, for a starting point <math>x_0,</math> there are several possible starting values for the function.

For example, in defining the square root as the inverse function of the square function, for any positive real number <math>x_0,</math> there are two choices for the value of the square root, one of which is positive and denoted <math>\sqrt {x_0},</math> and another which is negative and denoted <math>-\sqrt {x_0}.</math> These choices define two continuous functions, both having the nonnegative real numbers as a domain, and having either the nonnegative or the nonpositive real numbers as images. When looking at the graphs of these functions, one can see that, together, they form a single smooth curve. It is therefore often useful to consider these two square root functions as a single function that has two values for positive Template:Mvar, one value for 0 and no value for negative Template:Mvar.

In the preceding example, one choice, the positive square root, is more natural than the other. This is not the case in general. For example, let consider the implicit function that maps Template:Mvar to a root Template:Mvar of <math>x^3-3x-y =0</math> (see the figure on the right). For Template:Math one may choose either <math>0, \sqrt 3,\text{ or } -\sqrt 3</math> for Template:Mvar. By the implicit function theorem, each choice defines a function; for the first one, the (maximal) domain is the interval Template:Closed-closed and the image is Template:Closed-closed; for the second one, the domain is Template:Closed-open and the image is Template:Closed-open; for the last one, the domain is Template:Open-closed and the image is Template:Open-closed. As the three graphs together form a smooth curve, and there is no reason for preferring one choice, these three functions are often considered as a single multi-valued function of Template:Mvar that has three values for Template:Math, and only one value for Template:Math and Template:Math.

Usefulness of the concept of multi-valued functions is clearer when considering complex functions, typically analytic functions. The domain to which a complex function may be extended by analytic continuation generally consists of almost the whole complex plane. However, when extending the domain through two different paths, one often gets different values. For example, when extending the domain of the square root function, along a path of complex numbers with positive imaginary parts, one gets Template:Mvar for the square root of −1; while, when extending through complex numbers with negative imaginary parts, one gets Template:Math. There are generally two ways of solving the problem. One may define a function that is not continuous along some curve, called a branch cut. Such a function is called the principal value of the function. The other way is to consider that one has a multi-valued function, which is analytic everywhere except for isolated singularities, but whose value may "jump" if one follows a closed loop around a singularity. This jump is called the monodromy.

In the foundations of mathematicsEdit

The definition of a function that is given in this article requires the concept of set, since the domain and the codomain of a function must be a set. This is not a problem in usual mathematics, as it is generally not difficult to consider only functions whose domain and codomain are sets, which are well defined, even if the domain is not explicitly defined. However, it is sometimes useful to consider more general functions.

For example, the singleton set may be considered as a function <math>x\mapsto \{x\}.</math> Its domain would include all sets, and therefore would not be a set. In usual mathematics, one avoids this kind of problem by specifying a domain, which means that one has many singleton functions. However, when establishing foundations of mathematics, one may have to use functions whose domain, codomain or both are not specified, and some authors, often logicians, give precise definitions for these weakly specified functions.<ref>Template:Harvnb; Template:Harvnb; Template:Harvnb</ref>

These generalized functions may be critical in the development of a formalization of the foundations of mathematics. For example, Von Neumann–Bernays–Gödel set theory, is an extension of the set theory in which the collection of all sets is a class. This theory includes the replacement axiom, which may be stated as: If Template:Mvar is a set and Template:Mvar is a function, then Template:Math is a set.

In alternative formulations of the foundations of mathematics using type theory rather than set theory, functions are taken as primitive notions rather than defined from other kinds of object. They are the inhabitants of function types, and may be constructed using expressions in the lambda calculus.<ref> Template:Cite book</ref>

In computer scienceEdit

{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}

In computer programming, a function is, in general, a subroutine which implements the abstract concept of function. That is, it is a program unit that produces an output for each input. Functional programming is the programming paradigm consisting of building programs by using only subroutines that behave like mathematical functions, meaning that they have no side effects and depend only on their arguments: they are referentially transparent. For example, if_then_else is a function that takes three (nullary) functions as arguments, and, depending on the value of the first argument (true or false), returns the value of either the second or the third argument. An important advantage of functional programming is that it makes easier program proofs, as being based on a well founded theory, the lambda calculus (see below). However, side effects are generally necessary for practical programs, ones that perform input/output. There is a class of purely functional languages, such as Haskell, which encapsulate the possibility of side effects in the type of a function. Others, such as the ML family, simply allow side effects.

In many programming languages, every subroutine is called a function, even when there is no output but only side effects, and when the functionality consists simply of modifying some data in the computer memory.

Outside the context of programming languages, "function" has the usual mathematical meaning in computer science. In this area, a property of major interest is the computability of a function. For giving a precise meaning to this concept, and to the related concept of algorithm, several models of computation have been introduced, the old ones being general recursive functions, lambda calculus, and Turing machine. The fundamental theorem of computability theory is that these three models of computation define the same set of computable functions, and that all the other models of computation that have ever been proposed define the same set of computable functions or a smaller one. The Church–Turing thesis is the claim that every philosophically acceptable definition of a computable function defines also the same functions.

General recursive functions are partial functions from integers to integers that can be defined from

via the operators

Although defined only for functions from integers to integers, they can model any computable function as a consequence of the following properties:

  • a computation is the manipulation of finite sequences of symbols (digits of numbers, formulas, etc.),
  • every sequence of symbols may be coded as a sequence of bits,
  • a bit sequence can be interpreted as the binary representation of an integer.

Lambda calculus is a theory that defines computable functions without using set theory, and is the theoretical background of functional programming. It consists of terms that are either variables, function definitions ({{#if:|{{#if:|{{#if:|𝚲|Λ}}|{{#if:|𝜦|𝛬}}}}|{{#if:|{{#if:|𝛌|λ}}|{{#if:|𝝀|𝜆}}}}}}-terms), or applications of functions to terms. Terms are manipulated by interpreting its axioms (the Template:Math-equivalence, the Template:Mvar-reduction, and the Template:Mvar-conversion) as rewriting rules, which can be used for computation.

In its original form, lambda calculus does not include the concepts of domain and codomain of a function. Roughly speaking, they have been introduced in the theory under the name of type in typed lambda calculus. Most kinds of typed lambda calculi can define fewer functions than untyped lambda calculus.

See alsoEdit

SubpagesEdit

Template:Div col

Template:Div col end

GeneralizationsEdit

Template:Div col

Template:Div col end

Related topicsEdit

Template:Div col

Template:Div col end

NotesEdit

Template:Reflist

ReferencesEdit

Template:Reflist

SourcesEdit

Template:Refbegin

Template:Refend

Further readingEdit

Template:Refbegin

Template:Refend

External linksEdit

Template:Analysis-footer Template:Authority control