• To: mathgroup at smc.vnet.net
• From: Sseziwa Mukasa <mukasa at jeol.com>
• Date: Sat, 16 Mar 2002 01:40:25 -0500 (EST)
• Organization: JEOL (USA) Ltd.
• References: <F118LFQG101s7hpJm8O00001337@hotmail.com>
• Sender: owner-wri-mathgroup at wolfram.com

```david Xia wrote:

>   Thanks for your help! I tried your method, yes, it can find roots of the
> denominator of a rational function(in my case, fi function). Now that
> fi=Nominator/Denominator, based on your previous idea, how to decompose the
> fi function into summation of several simple rational function according to
> its roots by Mathematica?
>

You can write the expression yourself pretty easily:

Numerator[Together[f4s]]*(Plus@@Roots[Numerator[Together[1-f4s]]==0,s]/.s==x_->1/(s-x))

The problem with taking the Inverse Laplace Transform of this expression is you
need to know whether any of the poles have a multiplicity greater than 1.
There is no way to determine that from the  symbolic expression of the roots
without substituting actual values for a, b, c, d, w1, w2, w3, and w4.  There
are 12 possible expressions for the Inverse Laplace Transform of a rational
function with 4 poles.  You can get Mathematica to generate all of them,
calling the 4 possible roots of 1-f4s, r[i] (i=1..4) this expression will
generate all the possible results of the Inverse Laplace Transform in terms of
the r[i] of fi.

Needs["DiscreteMath`Combinatorica`"]
HoldForm[
Map[
(*This expression computes the Inverse Laplace Transform of fi, after applying
rules to determine which poles are equal*)
Sum[Residue[Exp[s*t]*Numerator[Together[(a*w1)/(s + a) +
(b*w2)/(s + b) + (c*w3)/(s + c) + (d*w4)/(s + d)]]*
(1/Product[s - r[i], {i, 4}]) //. #1, {s, r[i]}],
{i, 4}] & ,
(*This expression creates a set of rules of all the possible combinations of
four roots where some of the roots may be equal*)
Prepend[
Apply[If[Length[{##1}] > 2, Join[{#1 -> #2},
Flatten[#0[##2]]], {#1 -> #2}] & ,
Table[KSubsets[Table[r[j], {j, 4}], i], {i, 2, 4}],
{2}], {{}}], {2}]]

If you compute the length of the flattened result of the above expression you
will see that there are 12 terms.

>
> For example,
> Suppose fi=f(s)/g(s), and g(s) has roots s1,s2,s3,s4,s5 obtained from roots
> function, how to decompose it to the sum of several simple rational
> function?
>
> I appreciate your help very much!
>

No problem, I've been working on a similar problem myself.  Incidentally, may I
ask are you trying to solve a larger problem or is this your complete problem?

Regards,

Sseziwa

```

• Prev by Date: Re: Solve fails
• Next by Date: Re: Help needed regarding function MLOpenString