Search code examples
matlabsymbolic-math

Evaluating function of functions


I have two symbolic functions

syms a(t) b(t) t
a(t) = 5*b(t);
b(t) = exp(t);

How do I determine the value of the function a(t=5) for a specific t, lets say t=5:

a(5)

What I get is

a(5)
ans = 5*b(5)

but I want the actual value (1.4841e+02). What I tried is something like

eval(a(5))
subs(a, b(t), exp(5))

Is there anybody who can help. Thanks!

Edit: Please note that b(t) is defined after a(t). This is important to me.


Solution

  • As suggested in the comments, most of your problems come from the order of your definitions. You create a(t) before defining how b(t) looks like, but you already have told MATLAB that b(t) will exists. Basically, MATLAB knows that in a(t) there is something called b(t) but doesnt really know what (as even if you have defined it, you defined it after running that line of code!).

    syms a(t) b(t) t
    a(t) = 5*b(t); % MATLAB does not error because you told it that b(t) is symbolic. It just has no idea what it looks like.
    b(t) = exp(t);
    

    Just change the first lines to:

    syms a(t) b(t) t
    b(t) = exp(t); % MATLAB here understand that the syntax b(t)=.. is correct, as you defined b(t) as symbolic
    a(t) = 5*b(t); % MATLAB here knows what b(t) looks like, not only that it exists
    

    and do

    double(a(3))
    

    To get a numeric result.