Maple :: rozkład wyrażenia wymiernego na ułamki proste

Zadanie

Weźmy taką funkcję wymierną zmiennej x:

> f:=(4*x+1)/(x^4-13*x^2+36);

                                      4 x + 1
                             f := ---------------
                                   4       2
                                  x  - 13 x  + 36

Metoda pierwsza

Rozłóżmy mianownik wyrażenia f:

> ff:=factor(f);
                                       4 x + 1
                     ff := -------------------------------
                           (x - 2) (x - 3) (x + 3) (x + 2)

Wiemy teraz, że nasze wyrażenie f można zapisać w postaci następującej:

> p:=A/(x+2)+B/(x+3)+C/(x-3)+D/(x-2);

                             A       B       C       D
                      p := ----- + ----- + ----- + -----
                           x + 2   x + 3   x - 3   x - 2

gdzie A, B, C oraz D są poszukiwanymi współczynnikami rozkładu. Teraz wystarczy tylko utworzyć równanie ff = p.

> r:=ff=p;

                      4 x + 1                 A       B       C       D
     r := ------------------------------- = ----- + ----- + ----- + -----
          (x - 2) (x - 3) (x + 3) (x + 2)   x + 2   x + 3   x - 3   x - 2

> rr:=simplify((r*mian));

                   3        2                     3        2
rr := 4 x + 1 = A x  - 2 A x  - 9 A x + 18 A + B x  - 3 B x  - 4 B x + 12 B

          3        2                     3        2
     + C x  + 3 C x  - 4 C x - 12 C + D x  + 2 D x  - 9 D x - 18 D

Rozwiązania tego równania ff = p są poszukiwanymi współczynnikami:

> solve({subs(x=-2,rr),subs(x=-3,rr),subs(x=3,rr),subs(x=2,rr)},{A,B,C,D});

                            13      11      -7      -9
                       {C = --, B = --, A = --, D = --}
                            30      30      20      20

Metoda druga

Można też trochę inaczej. Wydzielmy najpierw licznik i mianownik tego wyrażenia:

> l:=numer(f);

                                 l := 4 x + 1
> mian:=denom(f);

                                     4       2
                            mian := x  - 13 x  + 36

Zastosujmy funkcję factor do rozłożenia mianownika:

> factor(mian);

                        (x - 2) (x - 3) (x + 3) (x + 2)

Wiemy już na jakie ułamki można rozłożyć nasze wyrażenie. Zapiszmy więc:

> ulamki:=A/(x-2)+B/(x-3)+C/(x+2)+D/(x+3);

                                A       B       C       D
                    ulamki := ----- + ----- + ----- + -----
                              x - 2   x - 3   x + 2   x + 3

I dalej:

> p:=map(x->factor(mian)*x,ulamki);

p := (x - 3) (x + 3) (x + 2) A + (x - 2) (x + 3) (x + 2) B

     + (x - 2) (x - 3) (x + 3) C + (x - 2) (x - 3) (x + 2) D
> solve({subs(x=2,l=p),subs(x=3,l=p),subs(x=-2,l=p),subs(x=-3,l=p)},{A,B,C,D});

                            13      11      -7      -9
                       {B = --, D = --, C = --, A = --}
                            30      30      20      20