matlab中符号表达式的绝对最大值

时间:2016-12-14 19:39:09

标签: matlab

是否有任何直接函数来查找符号函数的绝对值的最大值?例如

syms x1 x2
assume(-10<x1<10)
assume(-12<x2<8)
max(abs(x1+x2))

返回

Input arguments must be convertible to floating-point numbers.

为错误。

1 个答案:

答案 0 :(得分:1)

在MATLAB中无法使用函数MAXMIN来处理类sym的对象。

要解决此问题,您可以执行以下操作之一,具体取决于符号变量的定义:

  1. 对于符号比较,没有一般的解决方法,因为没有明确的结果应该是什么样的定义。一个例子非常清楚地表明缺乏对“好”结果的定义。

    % 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

  2. 如果您有一组符号数字,如

    X = sym([1,2,3,4]);
    

    然后可以在使用函数DOUBLE之前将数组转换为MAX/MIN类型。 E.g。

    max(double(X))