gpt4 book ai didi

MATLAB 2016b : Determine unassigned symbolic functions of an expression

转载 作者:行者123 更新时间:2023-12-04 10:46:54 24 4
gpt4 key购买 nike

如何确定表达式的未分配符号函数 ( 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]

最佳答案

对于 MATLAB 2019a 及更新版本

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

X =

[ a(t), b(t)]

从文档:

Find an unassigned symbolic function of type 'symfun' in the equation.



对于以前的 MATLAB 版本,我没有看到这样的函数。我看到的唯一选择是自己编写一个函数。
>> feval(symengine,'type',expr)

ans =

_plus

>> feval(symengine,'type',b(t))

ans =

function

>> feval(symengine,'type',sin(t))

ans =

sin

mupad 类型函数允许您识别表达式的类型,您正在寻找“函数”。这是一些代码,用于查找某种类型的所有术语:
function z=mst(x,symtype)
y=children(x);
if strcmpi(char(feval(symengine,'type',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)

关于MATLAB 2016b : Determine unassigned symbolic functions of an expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59665197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com