Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Maple.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
3.72 Mб
Скачать

3. Функции maple, решение уравнений и неравенств

3.1. Способы задания функций и замена переменных

В Maple существует несколько способов задания функций. С использованием оператора присваивания (:=), проиллюстрируем данный способ примером:

[>f:=(x+a)/(x-b);

При задании конкретного значения переменной х, получаем конкретное значение функции f , т.е.:

[>x:=a;

x:=a

[>f;

Напомним, что в Maple по умолчанию все вычисления производятся символьно, т.е. результат будет содержать в явном виде иррациональные константы, такие, как, е, и др. Чтобы получить приближенное значение в виде числа с плавающей запятой, следует использовать команду evalf(выражение, точность в числах после запятой).

Пример:

[>f:=a*exp(-x);

[>a:=3; x:=1;

a := 3

x := 1

[>evalf(f);

1.103638324

Другим способом можно задать функцию с помощью функционального оператора, который ставит в соответствие набору переменных (х1,х2,…) одно или несколько выражений (f1,f2,…).

Пример.

Определить функции двух переменных с помощью функционального оператора.

[>f:=(x,y)->cos(x+y);

f:=cos(x+y)

Обращение к этой функции осуществляется привычным в математике способом, когда в скобках вместо аргументов функции указываются конкретные значения переменных. В продолжение предыдущего примера вычисляется значение функции:

[>f(Pi/2, Pi/2);

-1

Третий способ представления функции осуществляется с помощью команды unapply(выражение,x1,x2,…), где х1,х2,… - набор переменных, от которых оно зависит. Данная команда позволяет преобразовать выражение в функциональный оператор.

Пример.

[>f:= unapply(x^2+y^2,x,y);

[>f(-7,5);

74

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

Piecewise(cond_1,f1,cond_2,f2, …).

Пример.

Функция вида записывается следующим образом:

[>f:=piecewise(x<=-2 or x>=2,0,x>-1 and x<1,1,x>-2 and x<-1,x+2,x>1 and x<2,-x+2);

3.2. Операции оценивания

Оценивание комплексных выражений, т.е. нахождение вещественной и мнимой частей выражения типа z = x + iy можно, произвести, используя команды Re(z) и Im(z).

Пример.

[>z:=3+I*2:

[>Re(z); Im(z);

3,2

Если z = x + iy, то комплексно сопряженное ему выражение w=z*x-iy можно найти с помощью команды conjugate(z). Продолжение предыдущего примера:

[>w:= conjugate(z);

w:=3-2*I

Модуль и аргумент комплексного выражения z можно найти с помощью команды polar(z), которую необходимо предварительно вызвать из стандартной библиотеки командой readlib.

Пример.

[>readlib(polar): polar(1+I);

polar

В строке вывода в скобках через запятую указаны модуль комплексного числа 1+I, равный и его аргумент, равный .

Если комплексное выражение очень сложное или содержит параметры, то получить его вещественную и мнимую части можно, используя команду evalc(z).

Пример.

[>z:=ln(1-I*sqrt(3))^2;

[>evalc(Re(z)); evalc(Im(z));

3.3. Решение уравнений и их систем

Для решения уравнений в Maple существует универсальная команда solve(уравнение,x), где x – переменная, относительно которой уравнение нужно решить. В результате выполнения этой команды в строке вывода появится выражение, которое является решением уравнения.

Пример.

[>ur:=a*x^2+b*x+c=0;

[>solve(ur,x);

,

Если уравнение имеет несколько решений, то команде solve следует присвоить имя. Обращение к необходимому решению производится путем указания его имени с номером решения в квадратных скобках – имя[номер].

Пример.

[>r:=solve(ur,x):

[> x1:=subs(r[1]);

[> x2:=subs(r[2]);

[> r[1]+r[2]:

[> simplify(%);

-1. b/a

[> r[1]*r[2]:

[> u1:=simplify(%):

[> expand(u1);

c/a

Для решения системы уравнений используется та же команда solve({уравнение1,уравнение2, …}, {x1,x2,…}). В качестве параметров команды в первых фигурных скобках указываются через запятую уравнения, а во вторых, перечисляются переменные через запятую, относительно которых решается система. При использовании полученных решений в дальнейшем необходимо команде solve присвоить имя, а затем выполнить команду присвоения assign(имя).

Пример.

[>s:=solve({a*x-y=1,5*x+a*y=1},{x,y});

[>assign(s);simplify(x-y);

Для численного решения трансцендентных уравнений, не имеющих аналитического решения, используется команда fsolve(уравнение,vars,option). Здесь параметры option могут задавать дополнительные условия, а именно complex разыскиваются комплексные корни; a..b для поиска корней задан интервал [a,b]; maxsols=n определено число, разыскиваемых решений; fulldigits используется арифметика с максимальной мантиссой.

Пример.

[>uu:=arccos(x)-sqrt(1-0.3*x^2)=0;

[> fsolve(uu,x);

.5837012692

Универсальная команда solve позволяет решать функциональные уравнения.

Пример.

[>F:=solve(f(x)^2-5*f(x)+6*x=0,f);

F := proc (x) RootOf(_Z^2-5*_Z+6*x) end

В результате получается решение в неявном виде. Однако в Maple можно работать с такими решениями, его можно попытаться преобразовать в какую-либо элементарную функцию с помощью команды convert. Продолжая пример можно получить решение в явном виде:

[>f:=convert(F(x), radical);

Команда solve может применяться для решения тригонометрических уравнений, при этом в качестве ответа будут выведены только главные решения, т.е. решения в интервале . Для получения всех решений следует предварительно ввести дополнительную команду _EnvAllSloutions:=true.

Пример.

[>_EnvAllSolutions:=true:

[>xx:=solve( );

xx := 1/3 Pi + Pi _Z~

> evalf(xx);

1.047197551 + 3.141592654 _Z

В Maple символ _Z~ обозначает константу целого типа, поэтому решение данного уравнения в привычной форме имеет вид , где n – целые числа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]