0
符号表达式使用残余物功能时,得到的结果作为一些矢量变量:获得从残余物结果
[R,P,K] =残余物(B,A)
是否有任何方式来建立一个象征性的表达(我选择的变量,如“X”)从返回的结果,如:
eq = residue2sym(r,p,k)
pretty(eq)
符号表达式使用残余物功能时,得到的结果作为一些矢量变量:获得从残余物结果
[R,P,K] =残余物(B,A)
是否有任何方式来建立一个象征性的表达(我选择的变量,如“X”)从返回的结果,如:
eq = residue2sym(r,p,k)
pretty(eq)
最终我实现了我自己:
function eq = residue2sym(R,P,K)
syms s
eq = 0;
lastR = NaN;
lastP = NaN;
multiplicityCounter = 1;
for i = 1:length(R)
rc = R(i);
pc = P(i);
if(~isnan(lastP))
if(pc == lastP && abs(lastR) < 1e-15) % Quando existe multiplicidade, o R correspondente ao primeiro P
% da multiplicidade deveria
% ser 0, mas estranhamente
% aparece como -4.4409e-16.
% O que deveria ser uma
% comparação com 0 então
% vira uma comparação para
% um módulo bem pequeno
multiplicityCounter = multiplicityCounter + 1;
else
eq = eq + lastR/(s - lastP)^multiplicityCounter;
multiplicityCounter = 1;
end
end
lastR = rc;
lastP = pc;
end
if(~isnan(lastP))
eq = eq + lastR/(s - lastP)^multiplicityCounter;
end
if(~isempty(K))
eq = eq + sum(s.^(0:length(K)));
end
eq = vpa(eq, 2);
end