| Spis treści | Szukaj | << | >> |
> 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
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
Aby odczytać współczynnik stojący przy
xn 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 wielomiany 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
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
> 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)
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
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
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
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
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 -
40x2 + 48x4
- 28x6 + 7x8
> 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 +6x4 a q(x) = -1 + x2