Evaluate Matlab symbolic function
Solution 1
You can use also use eval()
to evaluate the function that you get by subs()
function
f=sin(x);
a=eval(subs(f,1));
disp(a);
a =
0.8415
Solution 2
syms x
f = sin(x) ;
then if you want to assign a value to x
, e.g. pi/2
you can do the following:
subs(f,x,pi/2)
ans =
1
Solution 3
You can evaluate functions efficiently by using matlabFunction. syms s t x =[ 2 - 5*t - 2*s, 9*s + 12*t - 5, 7*s + 2*t - 1]; x=matlabFunction(x); then you can type x in the command window and make sure that the following appears:
x
x =
@(s,t)[s.*-2.0-t.*5.0+2.0,s.*9.0+t.*1.2e1-5.0,s.*7.0+t.*2.0-1.0]
you can see that your function is now defined by s and t. You can call this function by writing x(1,2) where s=1 and t=1. It should generate a value for you.
Here are some things to consider: I don't know which is more accurate between this method and subs. The precision of different methods can vary. I don't know which would run faster if you were trying to generate enormous matrices. If you are not doing serious research or coding for speed then these things probably do not matter.
Related videos on Youtube
user2141889
Updated on September 14, 2022Comments
-
user2141889 over 1 year
I have a problem with symbolic functions. I am creating function of my own whose first argument is a string. Then I am converting that string to symbolic function:
f = syms(func)
Lets say my string is
sin(x)
. So now I want to calculate it usingsubs
.a = subs(f, 1)
The result is
sin(1)
instead of number.For
0
it works and calculates correctly. What should I do to get the actual result, not onlysin(1)
orsin(2)
, etc.?