函数max of symbolic values - matlab

时间:2014-09-08 14:37:59

标签: matlab max

我必须计算一些限制:

syms x1 x2 a
x0 = [0, 1];
x_dir = [1, 0];

f = max(0,x1) + (x1^2)*abs(x2)
f_lim = (1/a) * (f(x0 + a*x_dir) - f(x0))
f_lim_left = limit(f_lim, a, 0, 'left');
f_lim_right = limit(f_lim, a, 0, 'right');

我不能在符号值上使用max函数,因为MATLAB不允许这样做。但是,显而易见的是:要获得一段独立于变量(x0,x_dir)的代码,因此我可以轻松地更改它们。我尝试过在网上使用双重或使用feval(symengine,' max',x,-y),但没有运气。任何解决方法,伙计们?

1 个答案:

答案 0 :(得分:1)

您可以将f定义为

f(x1,x2) = feval(symengine,'max',x1,0) + (x1^2)*abs(x2);

然后通过有限差分计算其相对于x1的方向导数

f_lim_x1(x1, x2) = (f(x1+a, x2)-f(x1,x2))/abs(a);

您还可以查看limit功能

limit(f, x1, x0, direction)

其中direction可以是'left''right'