- evaluation of a symbolic expression at specific values is by using subs()
- evaluation of a symbolic function at specific values is by using MATLAB function call syntax, like f(3)
- you can index a symbolic expression using numeric indices. You cannot index a symbolic function with any syntax to return the individual components
- When you diff() a symbolic expression without providing a variable name to differentiate with respect to, then MATLAB uses symvar() to find the variables, and differentiates with respect to the first one returned
- when you diff() a symbolic function without providing a variable name to differentiate with respect to then MATLAB uses the first symbolic parameter defined for the function
- likewise for int() and choice of variables
- you can do arithmetic operations on symbolic expressions limited only by the sizes being compatible
- you can do arithmetic operations on symbolic functions only if they have the same exact same list of named parameters in the same order.
- you can create assumptions on symbolic variables and symbolic expressions. You cannot create assumptions about symbolic functions. Which is a disappointment as there are certainly times you would like to be able to say that unknown function f(x) returns real values or nonnegative values or whatever.
- children() cannot be used to determine the body of a symbolic function or the names of the parameters. When the symbolic function returns a non-scalar, children() cannot be used to determine the individual elements. Instead, children() applied to a symbolic function gives the same result as if you were applying to a symbolic expression that is the body of the function. For example f(x)=[sin(x*2),cos(x*3)] and g=[sin(x*2),cos(x*3)] then children(f) and children(g) will have the same result. This is really a case of a similarity rather than a difference between the two. However, I remark on it to emphasize that there is no supported mechanisms to get at the components of a symbolic function that is non-scalar — no way except to invoke the function with symbolic variables the same as the parameter names, getting back the evaluated expression.
Main Differences Between Symbolic Variables and Symbolic Functions
33 views (last 30 days)
Walter Roberson on 6 Feb 2022
Edited: Walter Roberson on 7 Feb 2022
More Answers (2)
John D'Errico on 6 Feb 2022
I'm really not sure what you are asking. One is a function of another variable, the other is a variable. A variable may be a constant, it may contain an expression, etc. In MATLAB, think of a variable as a container.
Here y is an explicit function of the variable x. We can differentiate it, and MATLAB understands how the functionality works.
A common use for such a construct is to formulate a differential equation. It makes things easy to write, here, in essentially one line (not counting the syms call before):
ysol = dsolve(diff(y) == y + x,y(1) == 2)
As I said, symbolic variables can be thought of as containers, just like any normal variable in MATLAB. Since x already exists in symbolic form here...
z = 3 + x
So z contains an expression. A symbolic variable may contain a simple constant, or even a rather golden one...
phi = (1 + sqrt(sym(5)))/2
And while we can differentiate a symbolic variable, we need to be careful.
syms u v
w = u + 2*v
In that derivative, did we want MATLAB to understand if the derivative of v with respect to u is non-zero? Change things slightly now...
w = u + 2*v
The point being, we define a symbolic function when we want to explicitly define a functional relationship. Otherwise, a variable is often adequate for most purposes.
Rishabh Singh on 4 Feb 2022
You can refer to following question for understanding of Symbolic variables. In simple terms symbolic toolbox mimics mathematical syntax on paper to MATLAB environment. You can perform analytical calculations over symbolic functions. You can refer to documentation for more information.
Hope this helps.