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
的对象,使用函数MAX
和MIN
的功能在MATLAB中不可用。
要解决这个问题,你可以做下列操作之一,这取决于符号变量的定义:
-
对于符号比较没有通用的解决方法,因为是没有明确的定义是什么结果应该看起来像。一个例子非常清楚地表明缺乏对“好”结果的定义。
% 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
。 -
如果你有符号数的像
X = sym([1,2,3,4]);
则数组可投用它的功能
MAX/MIN
之前键入DOUBLE
数组。例如。max(double(X))
我已经编辑好后,使其更好地格式化的代码方面。由于您是新手,请阅读本指南,了解如何在Stack Overflow上对代码片段进行格式化,以便人们更好地理解您的答案并更轻松地进行摘要:http://meta.stackexchange.com/questions/22186/how-do -i-格式我的代码块 – rayryeng