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

问题描述:

有没有找到符号函数的绝对值的最大值的直接函数?例如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. 

作为误差。

对于类sym的对象,使用函数MAXMIN的功能在MATLAB中不可用。

要解决这个问题,你可以做下列操作之一,这取决于符号变量的定义:

  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

    syms x positive 
    feval(symengine,'max',x,-1) 
    

    这将返回 “x” 为x总是大于0,因此大于-1

  2. 如果你有符号数的像

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

    则数组可投用它的功能MAX/MIN之前键入DOUBLE数组。例如。

    max(double(X)) 
    
+0

我已经编辑好后,使其更好地格式化的代码方面。由于您是新手,请阅读本指南,了解如何在Stack Overflow上对代码片段进行格式化,以便人们更好地理解您的答案并更轻松地进行摘要:http://meta.stackexchange.com/questions/22186/how-do -i-格式我的代码块 – rayryeng