是否有任何直接函数来查找符号函数的绝对值的最大值?例如
syms x1 x2
assume(-10<x1<10)
assume(-12<x2<8)
max(abs(x1+x2))
返回
Input arguments must be convertible to floating-point numbers.
为错误。
答案 0 :(得分:1)
在MATLAB中无法使用函数MAX
和MIN
来处理类sym
的对象。
要解决此问题,您可以执行以下操作之一,具体取决于符号变量的定义:
对于符号比较,没有一般的解决方法,因为没有明确的结果应该是什么样的定义。一个例子非常清楚地表明缺乏对“好”结果的定义。
% This code will not work
syms x1 x2 x3 x4 x5
X = [x1,x2,x3,x4,x5];
max(X)
min(X)
% also unclear:
x1 > x2
x4 < x3
如果要比较的符号变量的范围明确分开,则函数FEVAL
可以按如下方式使用:
syms x positive;
syms y positive;
feval(symengine,'max',x,-y)
类似地,可以使用函数FEVAL
在符号变量和double之间进行比较:
syms x positive
feval(symengine,'max',x,-1)
这将返回“x
”,因为x
总是大于0,因此更大-1
。
如果您有一组符号数字,如
X = sym([1,2,3,4]);
然后可以在使用函数DOUBLE
之前将数组转换为MAX/MIN
类型。 E.g。
max(double(X))