Scilabで部分分数展開により留数を求める

ラプラス変換でよく使う部分分数展開の計算プログラム
多項式の代入にはhorner関数を使う

function x = calcRes(N,D)
p=roots(D);
dim = length(p);
residue = [];
for i=1:dim do
  Di = pdiv(D,(s-p(i)));
  ci = horner(N/Di,p(i));
  residue(i) = ci;
end;
disp("p = ")
disp(p)
x = residue;
endfunction
->N=3
 N  =
 
    3.  
 
-->D=s*(s^2+2*s+5)
 D  =
 
           2   3  
    5s + 2s + s   
 
-->calcRes(N,D)
 
 p =    
 
  - 1. + 2.i  
  - 1. - 2.i  
    0         
 ans  =
 
  - 0.3 + 0.15i  
  - 0.3 - 0.15i  
    0.6