Can we distinguish between variables and parameters in a symbolic function?

3 次查看(过去 30 天)
Hello,
I have a simple (perhaps naive, if so my appology) question. Consider the following
syms x f(x) x
f(x) = a*x;
Is there a way to distinguish between 'x' and 'a'? If I use symvar(f) it just gives the information about all vars and aparetly
cannot distinguish between x and a.
Any idea?
Thanks in advance,
Babak
  2 个评论
Dyuman Joshi
Dyuman Joshi 2022-12-15
symvar determines symbolic variables in the expression. Since you have not defined a as a symbolic variable in the above code, symvar won't classify a as an output.
What is the data type of a?

请先登录,再进行评论。

采纳的回答

Dyuman Joshi
Dyuman Joshi 2022-12-15
syms f(x) a m n z
f(x)=a*x
f(x) = 
y=symvar(f)
y = 
I understand what you mean by 'cannot distinguish between x and a'
But, this is how syms variable are expressed in arrays. For example -
z=[m n]
z = 
x and a are expressed similarly in the above expression obtained from symvar
However, you can convert the symbolic expression to string and obtain seperate variables -
z=symvar(char(f))
z = 2×1 cell array
{'a'} {'x'}
  6 个评论
Mohammad Shojaei Arani
Hi Torsten and Dyuman,
After I thought deeper I came to believe that you are right. Thanks for your time.
Math is somehow different than programming :-)

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2022-12-17
f_variables = argnames(f)
f_param = setdiff(symvar(f), f_variables)
This is not the same thing as "all variables mentioned that are not parameters". symvar does not report any "bound" variables or any variables being used as functions.
A bound variable is like x in
int(f(x), x, a, b)
provided that f does not itself contain x then you could substitute any other variable name without affecting the output, like
int(f(Dummy), Dummy, a, b)
int() and symsum() and symprod() can all use bound variables.
  1 个评论
Mohammad Shojaei Arani
Hi Torsten,
So, it is actually possible to do it in matlab. Nice!
You also answered another question of me (somehow you read my mind!).
Thanks a lot for the very useful helps!
Babak

请先登录,再进行评论。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by