| Spis treści | Szukaj | << | >> |
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
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
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
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
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 ex
esin(x) sin4(x) 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)
3/8 ex+sin(x) + 1/8 ex+sin(x) cos(4x) - 1/2 ex+sin(x) cos(2x). 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))
sin4(x) ex+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)
3/8 ex esin(x) + 1/8 ex esin(x) cos(4x) - 1/2 ex esin(x) cos(2x). 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)
3/8 ex+sin(x) + 1/8 ex+sin(x) cos(4x) - 1/2 ex+sin(x) cos(2x)
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
x1=a1,
x2=a2... gdzie
xi są zmiennymi (parametrami) wyrażenia w,
a ai 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));
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 x2 oraz x zamiast x2:
> 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
evalf(1/3+1/4);
0.5833333333
evalf(1/3+1/4,4);
0.5833