Опубликован: 27.07.2006 | Доступ: свободный | Студентов: 4406 / 1100 | Оценка: 4.28 / 4.13 | Длительность: 26:56:00
Специальности: Программист
Лекция 8:

Системы компьютерной алгебры

Алгебраические преобразования

Особо важную роль играет способность системы Maxima производить разнообразные символьные преобразования алгебраических выражений. Следующий пример демонстрирует раскрытие скобок в них:

C1) p1:x^2-1;
				 2
(D1) 			        x  - 1

(C2) p2:x-1;
(D2) 				 x - 1

(C3) expand(p1*p2);
			     3	  2
(D3) 			    x  - x  - x + 1

(C4) expand((p1+p2)^2);
		       4      3	     2
(D4) 		      x  + 2 x  - 3 x  - 4 x + 4

Функцию divide можно использовать для нахождения частного и остатка от деления одного многочлена на другой:

(C5) divide(p1*p2, p1);
(D5) 			      [x - 1, 0]

Функция gcd определяет наибольший общий делитель многочленов, а factor осуществляет разложение многочлена на множители:

(C6) gcd(x^3-1, x^2-1, x-1);
(D6)                         x - 1

(C7) factor(x^8-1);
        		     2	      4
(D7)	   (x - 1) (x + 1) (x  + 1) (x  + 1)

Подстановка какого-либо выражения вместо переменной осуществляется при помощи операции =. Например, заменим все вхождения x в выражении на 5/z:

(C8)  x^4+3*x^3-2*x, x=5/z;
			 10   375   625
(D8) 		       - -- + --- + ---
			 z     3     4
			      z	    z

Функция ratsimp выносит за скобки наибольший общий делитель:

C9) ratsimp(%);
			   3
		       10 z  - 375 z - 625
(D9) 		     - -------------------
				4
			       z

Используя функцию assume (to assume - допускать), можно при вычислениях учитывать дополнительные условия, задаваемые неравенствами:

(C10) sqrt(x^2);
(D10) 			       ABS(x)
(C11) assume(x<0);
(D11) 			       [x < 0]
(C12) sqrt(x^2);
(D12) 				 - x

Функция forget (to forget - забывать) снимает все ограничения, наложенные при помощи assume:

C13) forget(x<0);
(D13) 			       [x< 0]
(C14) sqrt(x^2);
(D14) 			       ABS(x)

Maxima легко оперирует тригонометрическими выражениями. Так, функция trigexpand использует формулы преобразования сумм двух углов для представления введенного выражения в как можно более простом виде:

(C15) sin(u+v)*cos(u)^3;

		   3
(D15) 		COS (u) SIN(v + u)

(C16) trigexpand(%);

	   3
(D16) 	COS (u) (COS(u) SIN(v) + SIN(u) COS(v))

Функция trigreduce преобразует тригонометрическое выражение к сумме элементов, каждый из которых содержит только единственный sin или cos:

C17) trigreduce(%);
 
            SIN(v + 4 u) + SIN(v - 2 u)   
(D17)       --------------------------- 
                         8                
 
            3 SIN(v + 2 u) + 3 SIN(v)
          + -------------------------
                         8

Функции realpart и imagpart возвращают действительную и мнимую часть комплексного выражения:

(C18) z1:-3+%i*4;
(D18) 		        4 %I - 3

(C19) z2:4-2*%i;
(D19) 		        4 - 2 %I

(C20) z1*z2;
(D20) 	   (4 - 2 %I) (4 %I - 3)

(C21) expand(%);
(D21) 		       22 %I - 4

(C22) realpart(''c20);
(D22) 		             - 4

(C23) imagpart("c20);
(D23) 		              22

Решение уравнений

Maxima может решать уравнения и системы алгебраических уравнений с помощью функции solve. Равная нулю правая часть уравнения может быть опущена:

(C1) solve (x^2=1, x);
(D1) 			        [x = - 1, x = 1]

(C2) solve(x^2-1,x);
(D2) 			        [x = - 1, x = 1]

(C3) solve(log(x+3)=1, x);
(D3) 				  [x = %E - 3]

При решении тригонометрических уравнений выдается только одно из бесконечного множества возможных решений:

(C4) solve(sin(x)-1, x);
SOLVE is using arc-trig functions to get
a solution. Some solutions will be lost.
				 %PI
(D4) 			    [x = ---]
				  2

В следующем примере функция solve используется для решения системы из трех уравнений с тремя неизвестными:

(C5) s:[x+y+z=3, x+2*y-z=2, x+y*z+z*x=3];
(D5) 	      [z + y + x = 3, - z + 2 y + x = 2,
               y z + x z + x = 3]
(C6) solve(s, [x,y,z]);
(D6) 	       [[x = 1, y = 1, z = 1], 
                [x = 7, y = - 3, z = - 1]]

Если уравнение не имеет решений на множестве действительных чисел, то Maxima ищет решения среди комплексных чисел:

(C7) solve(x^2+1,x);
(D7) 			       [x = - %I, x = %I]

Задание

Решите уравнение ln(tg x) = 0.

Дмитрий Фаттахов
Дмитрий Фаттахов
Виктория Бельгесова
Виктория Бельгесова

Добрый день. Как получить удостоверение о прохождении данного курса?