Maple :: wielomiany

Definicja wielomianu

> w := x^4-6*x^3+3*x^2+26*x-24;

                             4      3      2
                       w := x  - 6 x  + 3 x  + 26 x - 24

Obliczenie wartości wielomianu w dla x = 4,5 wygląda tak:

> subs(x=4.5,w);

                                    17.0625

Stopień wielomianu

Funkcja degree(w) zwraca stopień wielomianu w jednej zmiennej, natomiast funkcja degree(w,x) – stopień w zmiennej x wielomianu w wielu zmiennych. Analogicznie funkcje ldegree(w) oraz ldegree(w,x) zwracają najniższe potęgi zmiennej x w wielomianie w. Porównaj:

> p:=expand(x^2*(1-x^3)^4);

                            2      5      8      11    14
                      p := x  - 4 x  + 6 x  - 4 x   + x
> degree(p);

                                      14
> ldegree(p);

                                       2
> q:=-120*x^3-30*x^4+18*x^5+5*x^6+30*x*y^2;

                            3       4       5      6         2
                 q := -120 x  - 30 x  + 18 x  + 5 x  + 30 x y
> degree(q);

                                       6
> ldegree(q);

                                       3
> degree(q,x);

                                       6
> ldegree(q,x);

                                       1
> degree(q,y);

                                       2
> ldegree(q,x);

                                       0

Współczynniki wielomianu

Aby odczytać współczynnik stojący przy x^n w wielomianie w należy użyć funkcji coeff(w,x^n) lub coeff(w,x,n) jak w przykładzie:

> p:=x*y^3+x^2*y^2+x^3*y;

                                   3    2  2    3
                           p := x y  + x  y  + x  y
> coeff(p,x^2);

                                       2
                                      y

Funkcja coeffs(w,x) wypisuje wszystkie współczynniki wielomianu w stojące przy kolejnych potęgach zmiennej x

> p:=x*y^3+x^2*y^2+x^3*y;

                                   3    2  2    3
                           p := x y  + x  y  + x  y
> coeffs(p,x);

                                    3   2
                                   y , y , y
> q:=-5+119/6*x-30*x^2+65*3*x^3-15/2*x^4+x^5;

                                       2        3         4    5
               q := -5 + 119/6 x - 30 x  + 195 x  - 15/2 x  + x
> coeffs(q,x);

                         -5, 119/6, 1, -15/2, -30, 195

Grupowanie wyrazów

W celu zgrupowania współczynników wielomianu w stojących przy tej samej potędze zmiennej x należy użyć funkcji cellect(w,x) jak następuje:

> p:=9+8*x+7*x^2+6*y+5*x*y+4*x^2*y+3*y^2+2*x*y^2+x^2*y^2;

                        2                    2        2        2    2  2
      p := 9 + 8 x + 7 x  + 6 y + 5 x y + 4 x  y + 3 y  + 2 x y  + x  y
> collect(p,x);

                        2   2                 2             2
            (4 y + 7 + y ) x  + (8 + 5 y + 2 y ) x + 9 + 3 y  + 6 y
> collect(p,y);

                        2   2                 2                   2
            (3 + 2 x + x ) y  + (6 + 5 x + 4 x ) y + 9 + 8 x + 7 x

Rozkład wielomianu

> factor(w);

                        (x - 1) (x - 3) (x - 4) (x + 2)

Aby zwinąć wielomian:

> expand(%);

                          4      3      2
                         x  - 6 x  + 3 x  + 26 x - 24

Drugi argument wskazuje na dziedzinę, w której dokonujemy rozkładu:

> factor(x^2+1);

                                     2
                                    x  + 1
> factor(x^2+1, complex);

                        (x + 1.000000000 I) (x - 1. I)

Sprawdzenie wykonalności dzielenia wielomianów

Dzielenie wielomianów w1 przez w2 o współczynnikach wymiernych realizuje się poprzez użycie funkcji divide(w1,w2,'q'). Funkcja zwraca wartość logiczną „prawda”, jeśli dzielenie jest wykonalne. Jeśli podamy dowolną nazwę jako trzeci argument (q), to w przypadku wykonalności dzielenia, będzie mu przyporządkowany iloraz wielomianów:

> divide(2*x^3-x^2+2*x-3,x-1);

                                     true
> divide(2*x^3-x^2+2*x-3,x-1,'q');

                                     true
> q;

                                    2
                                 2 x  + x + 3

Wynik z dzielenia wielomianów

Funkcja quo(w2,w2,x,'q') zwraca iloraz dwóch wielomianów w1 oraz w2 jednej zmiennej x. Jeśli ostatnim argumentem będzie nazwa (q), to zostanie jej przypisana reszta z dzielenia wielomianów:

> quo(x^3+2*x+1,x^2+1,x);

                                       x
> quo(x^3+2*x+1,x^2+1,x,'q');

                                       x
> q;

                                     1 + x

Reszta z dzielenia wielomianów

Funkcja rem(w1,w2,x,'q') zwraca resztę z dzielenia dwóch wielomianów w1 oraz w2 jednej zmiennej x. Jeśli podamy jeszcze nazwę jako ostatni (q) argument, to zostanie jej przyporządkowany iloraz wielomianów:

> rem(x^3+2*x+1,x^2+1,x);

                                     x + 1
> rem(x^3+2*x+1,x^2+1,x,'q');

                                     x + 1
> q;

                                       x

Dopełnianie do kwadratu

Często mając wielomian stopnia drugiego chcemy zwinąć go do pełnego kwadratu (plus jakaś reszta). Pomoże nam w tym następujące polecenie completesquare znajdujące się w pakiecie student:

> with(student);

[D, Diff, Doubleint, Int, Limit, Lineint, Product, Sum, Tripleint, changevar,

    completesquare, distance, equate, integrand, intercept, intparts, leftbox,

    leftsum, makeproc, middlebox, middlesum, midpoint, powsubs, rightbox,

    rightsum, showtangent, simpson, slope, summand, trapezoid]

> completesquare(x^2+x+1);

                                        2
                               (x + 1/2)  + 3/4

Wydzielanie z wielomianu

Funkcja compoly(w,x) wykonuje operację wydzielenia z wielomianu w zmiennej x takiego „podwielomianu” q(x), że dla zwracanego wielomianu p zachodzi, że: p(q(x)) = w(x). Dla przykładu popatrz na wielomian: w = 16 – 40x² + 48x⁴ – 28x⁶ + 7x

> w:=16-40*x^2+48*x^4-28*x^6+7*x^8;

                                  2       4       6      8
                    w := 16 - 40 x  + 48 x  - 28 x  + 7 x
> p:=compoly(w,x);

                               4          2            2
                       p := 7 x  + 3 + 6 x , x = -1 + x

czyli p = 7x + 3 +6x⁴ a q(x) = –1 + x²