       Re: Program to calculate rational function with imbedded continued fraction

• To: mathgroup at smc.vnet.net
• Subject: [mg69957] Re: Program to calculate rational function with imbedded continued fraction
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Thu, 28 Sep 2006 06:15:32 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <efdkq5\$10v\$1@smc.vnet.net>

```Diana Mecum wrote:
> On 9/26/06, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:
>> On 26 Sep 2006, at 18:21, Diana wrote:
>>
>>> Hello all,
>>>
>>> Would someone be able to help me write a program to calculate the
>>> rational function of (2x + 3)/(2x + 4), for example?
>> I have once already posted such a program and so did Daniel
>> Lichtblau. (Search the archive for the subject "How to do Continued
>> fraction of polynomials" and compare our posts. (I can't remember any
>> more what the difference between them was).
>>
>> Here is my version:
>>
>> F[f_, g_] :=
>>       If[PolynomialReduce[f, g][[1, 1]] =!= 0, PolynomialReduce[f,
>> g][[
>>          1, 1]] + F[PolynomialReduce[f,
>>       g][], g], Module[{u = g, v = f, p, ls}, ls = Flatten[Last[
>>        Reap[While[u =!= 0, p = PolynomialReduce[u, v]; u = v; v =
>> p[]; Sow[
>>      p[]]]]]]; 1/Fold[Function[{x, y}, y + 1/x], Infinity,
>> Reverse[ls]]]]
>>
>> In the case of your example above you need to evaluate:
>>
>> In:=
>> k=(2x+3)/(2x+4);
>>
>> In:=
>> F[Numerator[k],Denominator[k]]
>>
>> Out=
>> 1 + 1/(-2*x - 4)

[...snipped]

> I see your program. Thanks for forwarding it.
>
> To implement it, do I plug (e(1) + 1)(T^2e(1) in for k?
>
> When I run the routine, I get an error saying that the tags in In
> and In are protected.

Do not copy and paste the tags In[]/Out[] into Mathematica, just
whatever Mathematica expressions are below any In[] tag -- or between an
In[] and Out[] tags.

(* Start copy here *)
F[f_, g_] := If[PolynomialReduce[f, g][[1,1]] =!= 0, PolynomialReduce[f,
g][[1,1]] + F[PolynomialReduce[f, g][], g], Module[{u = g, v = f, p,
ls}, ls = Flatten[Last[Reap[While[u =!= 0, p = PolynomialReduce[u, v]; u
= v; v = p[]; Sow[p[]]]]]]; 1/Fold[Function[{x, y}, y + 1/x],
Infinity, Reverse[ls]]]]

k = (2*x + 3)/(2*x + 4);

F[Numerator[k], Denominator[k]]
(* End copy here *)

will return

1
1 + --------
-4 - 2 x

Regards,
Jean-Marc

```

• Prev by Date: Re: strange random behavior ?
• Next by Date: Re: Re: Copying cell contents?
• Previous by thread: Re: Program to calculate rational function with imbedded continued fraction
• Next by thread: Re: Program to calculate rational function with imbedded continued fraction