Can symbolic tool box transfer max(f(x), y) into symbolic variable?
1 次查看(过去 30 天)
显示 更早的评论
I was using fmincon for nonlinear optimization, but When I tried to use MATLAB symbolic toolbox to provide joccobian of my constraint function, MATLAB showed terminated saying the symbolic toolbox cannot transfer function max(f(x), 0). In my constraint function, I called a function handle, and in that function there is max(f(x), 0). I used max(f(x), 0) in order to increase the robustness of my code, otherwise there is a high chance that MATLAB will terminate due to the complex number generated by my constraint function, which is wrong. I have no idea how to deal with the problem between symbolic toolbox and max(f(x),0), if anyone of you have solution I would be very grateful.
0 个评论
回答(1 个)
Walter Roberson
2015-5-26
I suggest experimenting with a piecewise(), which you can generate inside the symbolic engine by using
min0 = evalin(symengine, 'x -> piecewise(x<0, 0, x)');
then min0(f(x)).
If that doesn't work, then Heaviside it:
syms min0(x)
min0(x) = x*Heaviside(x);
then min0(f(x))
2 个评论
Walter Roberson
2015-5-26
I already answered that in your earlier question http://uk.mathworks.com/matlabcentral/answers/218576-how-to-pass-extra-parameter-as-a-symbolic-variable-to-objective-and-constraint-functions
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Equation Solving 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!