2013-03-23 74 views
0

符号表达式使用残余物功能时,得到的结果作为一些矢量变量:获得从残余物结果

[R,P,K] =残余物(B,A)

是否有任何方式来建立一个象征性的表达(我选择的变量,如“X”)从返回的结果,如:

eq = residue2sym(r,p,k) 
pretty(eq) 

回答

0

最终我实现了我自己:

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