# symfun

Create symbolic functions

## Syntax

``f(inputs) = formula``
``f = symfun(formula,inputs)``

## Description

example

````f(inputs) = formula` creates the symbolic function `f`. For example, ```f(x,y) = x + y```. The symbolic variables in `inputs` are the input arguments. The symbolic expression `formula` is the body of the function `f`.```
````f = symfun(formula,inputs)` is the formal way to create a symbolic function.```

## Examples

collapse all

Define the symbolic function `f(x,y) = x + y`. First, create the function by using `syms`. Then define the function.

```syms f(x,y) f(x,y) = x + y```
`f(x, y) = $x+y$`

Find the value of `f` at `x = 1` and `y = 2`.

`f(1,2)`
`ans = $3$`

Define the function again by using the formal way.

```syms x y f = symfun(x+y,[x y])```
`f(x, y) = $x+y$`

Return the body of a symbolic function by using `formula`. You can use the body for operations such as indexing into the function. Return the arguments of a symbolic function by using `argnames`.

Index into the symbolic function `[x^2, y^4]`. Since a symbolic function is a scalar, you cannot directly index into the function. Instead, index into the body of the function.

```syms f(x,y) f(x,y) = [x^2, y^4]; fbody = formula(f); fbody(1)```
`ans = ${x}^{2}$`
`fbody(2)`
`ans = ${y}^{4}$`

Return the arguments of the function.

`fvars = argnames(f)`
`fvars = $\left(\begin{array}{cc}x& y\end{array}\right)$`

Create two symbolic functions.

```syms f(x) g(x) f(x) = 2*x^2 - x; g(x) = 3*x^2 + 2*x;```

Combine the two symbolic functions into another symbolic function $h\left(x\right)$ with the data type `symfun`.

`h(x) = [f(x); g(x)]`
```h(x) =  $\left(\begin{array}{c}2 {x}^{2}-x\\ 3 {x}^{2}+2 x\end{array}\right)$```

Evaluate the function $h\left(x\right)$ at $x=1$ and $x=2$.

`h(1)`
```ans =  $\left(\begin{array}{c}1\\ 5\end{array}\right)$```
`h(2)`
```ans =  $\left(\begin{array}{c}6\\ 16\end{array}\right)$```

You can also combine the two functions into an array of symbolic expressions with the data type `sym`.

`h_expr = [f(x); g(x)]`
```h_expr =  $\left(\begin{array}{c}2 {x}^{2}-x\\ 3 {x}^{2}+2 x\end{array}\right)$```

Index into `h_expr` to access the first and the second symbolic expressions.

`h_expr(1)`
`ans = $2 {x}^{2}-x$`
`h_expr(2)`
`ans = $3 {x}^{2}+2 x$`

## Input Arguments

collapse all

Function body, specified as a symbolic expression, vector of symbolic expressions, or matrix of symbolic expressions.

Example: `x + y`

Data Types: `sym`

Input argument or arguments of a function, specified as a symbolic variable or an array of symbolic variables, respectively.

Example: `[x,y]`

Data Types: `sym`

## Output Arguments

collapse all

Function, returned as a symbolic function.

The data type of the function `f` is `symfun`. But the data type of the evaluated function, such as `f(1,2)`, is `sym`.

Data Types: `symfun`