Maple :: wyrażenia algebraiczne
Rozwijanie wyrażeń
Wyrażenia algebraiczne, trygonometryczne, logarytmiczne i inne rozwijamy przy pomocy funkcji expand(f), na przykład:
> expand((x-1)*(x+2));
2
x + x - 2
> expand((x-a-b)*(x+2));
2
x + 2 x - a x - 2 a - b x - 2 b
Rozwijanie z warunkami
Podając dodatkowe wyrażenia jako kolejne argumenty funkcji expand zapobiegamy ich rozwijaniu. Porównaj:
> expand((x+y)*(u-w^2));
2 2
x u - x w + y u - y w
> expand((x+y)*(u-w^2),u-w^2);
2 2
(u - w ) x + (u - w ) y
Upraszczanie wyrażeń
Funkcja normal(f) upraszcza wyrażenia wykonując na przykład redukcję wyrazów podobnych i skracanie, na przykład:
> normal(a*b-a*(b+1));
-a
> normal((a^3-b^3)/(a-b));
2 2
a + a b + b
> normal(x/(x+1) + 1/x + 1/(1+x));
x + 1
-----
x
Upraszczanie wyrażeń
Funkcja simplify(f) upraszcza wyrażenia wykonując odpowiednie prawa działań, na przykład:
> simplify((2^3)^2-sqrt(4*7-19));
61
> simplify(((x+y)^2*(x-y)^3)^2);
4 6
(x + y) (x - y)
Dodatkowy argument wskazuje na rodzaj wyrażeń:
> simplify(cos(x)^2-sin(x)^2,trig);
2
2 cos(x) - 1
„Kombinowanie” wyrażeń
Funkcja combine(expr,name) służy do przekształcania wyrażenie expr z zastosowaniem reguł określonych jako name. Regułami mogą być: exp, ln, power, Psi, trig. Na przykład wyrażenie e^x e^sin(x) [sin(x)]^4 można przekształcać tak: Bez stosowania reguł otrzymujemy:
> combine(exp(x)*exp(sin(x))*sin(x)^4);
3/8 exp(x + sin(x)) + 1/8 exp(x + sin(x)) cos(4 x)
- 1/2 exp(x + sin(x)) cos(2 x)
Po wymuszeniu przekształceń ze względu na eksponensy otrzymujemy:
> combine(exp(x)*exp(sin(x))*sin(x)^4,exp);
4
sin(x) exp(x + sin(x))
Przekształcając ze względu na funkcje trygonometryczne:
> combine(exp(x)*exp(sin(x))*sin(x)^4,trig);
3/8 exp(x) exp(sin(x)) + 1/8 exp(x) exp(sin(x)) cos(4 x)
- 1/2 exp(x) exp(sin(x)) cos(2 x)
No i na koniec jeszcze jeden przykład:
> combine(exp(x)*exp(sin(x))*sin(x)^4,trig,exp);
3/8 exp(x + sin(x)) + 1/8 exp(x + sin(x)) cos(4 x)
- 1/2 exp(x + sin(x)) cos(2 x)
Obliczanie wartości wyrażenia w punkcie
Weźmy takie wyrażenie:
> w:=(2*a*x^2-3)/(x-a);
2
2 a x - 3
w := ----------
x - a
Możemy obliczyć jego wartość dla zadanej wartości parametru a i/lub w zadanym punkcie x. Ile wynosi wartość tego wyrażenia dla a = 0? Aby się tego dowiedzieć trzeba użyć funkcji subs(x1=a1,x2=a2,...,w), która oblicza wartość wyrażenia w z warunkami x₁=a₁, x₂=a₂… gdzie x_i są zmiennymi (parametrami) wyrażenia w, a a_i ich wartościami.
> subs(a=0,w);
- 3/x
A dla dowolnego a i x = 5?
> subs(x=5,w);
50 a - 3
--------
5 - a
Możemy też chcieć znać wartość jednocześnie dla a = 0 i x = 5:
> subs(a=0,x=5,w);
-3/5
Oczywiście równoważne są następujące trzy zapisy:
> subs(a=0,x=5,w);
> subs(x=5,subs(a=0,w));
> subs(a=0,subs(x=5,w));
Podstawienia
Funkcji subs(x1=a1,x2=a2,...,w) można też używać w celu dokonywania podstawień. Weźmy takie wyrażenie:
> w:=1/2*(3*x^2-5*x);
2
w := 3/2 x - 5/2 x
i dokonajmy trzech (przykładowych) podstawień: cos(t) zamiast x, z zamiast x² oraz x zamiast x²:
> subs(x=cos(t),w);
2
3/2 cos(t) - 5/2 cos(t)
> subs(x^2=z,w);
3 z 5 x
--- - ---
2 2
> subs(x^2=x,w);
-x
Określanie precyzji
evalf(1/3+1/4);
0.5833333333
evalf(1/3+1/4,4);
0.5833