符号值函数max-matlab

符号值函数max-matlab,matlab,max,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不允许我这样做。但是,很

我必须计算一些限制:

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)的代码,这样我就可以很容易地修改它们。我试过使用double或feval(symengine,'max',x,-y),就像在网上找到的一样,但没有成功。伙计们,有什么解决办法吗?

你们可以将
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)

其中
方向
可以是
“左”
“右”

对不起,我不能简单地理解你写的东西。:)你能说得更清楚些吗?在f_-lim中,我需要f(x0+a*x_-dir),它是f(a,1),而不是你写的f(x1+a,x2)。我不明白什么?
f
是两个变量的函数,因此
x0
是一个点(x1,x2)。你必须在你需要的地方评估
f_lim_x1(x1,x2)
。相反,方向由
a
符号给出。