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