Matlab 2016b:确定表达式的未分配符号函数

如何确定表达式的未分配符号功能syms f(t))。排除符号数学函数sin,...)和符号变量syms a)。

例如:

syms a(t) b(t) c
expr = a(t)*diff(b,t) + c*diff(a,t)^2 + sin(c*pi)*cos(b);

检查符号变量

>> symvar(expr)
[ c,t]

以及如何针对未分配的符号功能

进行操作
>> XXXXX(expr)
[ a(t),b(t),diff(a,t),diff(b,t)]
% or
[ a(t),b(t)]
% or
[ a,b]
wanglin1967 回答:Matlab 2016b:确定表达式的未分配符号函数

对于MATLAB 2019a及更高版本

>> X = findSymType(expr,'symfun')

X =

[ a(t),b(t)]

从文档中:

在方程式中找到类型为'symfun'的未分配符号函数。

对于以前的MATLAB版本,我没有看到这样的功能。我看到的唯一选择是自己编写一个函数。

>> feval(symengine,'type',expr)

ans =

_plus

>> feval(symengine,b(t))

ans =

function

>> feval(symengine,sin(t))

ans =

sin

mupad类型函数可让您识别正在寻找“函数”的表达式的类型。这是一些代码,用于查找特定类型的所有术语:

function z=mst(x,symtype)
y=children(x);
if strcmpi(char(feval(symengine,x)),symtype)
    z=x;
else
    z=[];
end
if ~isequal(x,y)
for ix=1:numel(y)
   z=[z;mst(y(ix),symtype)];
end
end
end

一个示例调用:

>> mst(expr,'function')

ans =

 b(t)
 a(t)
 a(t)
 b(t)
本文链接:https://www.f2er.com/2797330.html

大家都在问