Subs function not working as expected

4 views (last 30 days)
I've come across an unexpected result. Symbolic equation substitution is yielding wrong result. Below is my code.I've tried reset(symengine) but it doesen't seem to help.
syms y real
Tsym = ...
(204800*y)/7 - (19342813113834066795298816*y^2)/661131307601750375 + 60;
Tfunc=@(y) ...
(204800*y)/7 - (19342813113834066795298816*y^2)/661131307601750375 + 60;
H=0.0005;
y=H;
symval=subs(Tsym);
funcval=Tfunc(H);
if funcval~=symval
fprintf('Something is wrong. \n')
end

Answers (1)

Bish Erbas
Bish Erbas on 25 Sep 2018
Code below works for me. You defined the H and y variables after defining the symbolic equations. Move the variable definition at the beginning of your code.
syms y real
H=0.0005;
y=H;
Tsym = ...
(204800*y)/7 - (19342813113834066795298816*y^2)/661131307601750375 + 60;
Tfunc=@(y) ...
(204800*y)/7 - (19342813113834066795298816*y^2)/661131307601750375 + 60;
symval=subs(Tsym);
funcval=Tfunc(H);
if funcval~=symval
fprintf('Something is wrong. \n')
end
  1 Comment
Patricio Whittingslow
Patricio Whittingslow on 25 Sep 2018
Hey there Bish! It seems your solution does return the correct value. However, I lose the symbolic function in the process. Tsymb (the equation is now equal to a value, not an equation). What's the best practice to use subs if I want to continue evaluating the same function for N values of y?

Sign in to comment.

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!