- •2. Алфавит Maple-языка и его синтаксис. Основные объекты (определение, ввод, действия с ними). Числа. Обыкновенные дроби.
- •3. Основные объекты (определение, ввод, действия с ними). Радикалы. Константы. Переменные, неизвестные и выражения.
- •4. Последовательности, списки, множества. Массивы. Вектора.
- •Создание массивов, векторов и матриц
- •5. Аналитические преобразования. Операции с формулами. Преобразование типов. Операции оценивания.
- •Оценивание выражений
- •6. Работа с последовательностями, списками, множествами. Последовательности с заданным числом членов
- •Основные функции для произведения членов последовательностей
- •7. Работа с массивами, таблицами. Создание Maple-таблиц и их применение
- •Создание массивов, векторов и матриц
- •8. Внутренняя структура объектов Maple. Подстановка и преобразование типов. Преобразования чисел с разным основанием
- •Контроль за типами объектов
- •9. Операции с полиномами. Определение полиномов
- •Выделение коэффициентов полиномов
- •Оценка коэффициентов полинома по степеням
- •Оценка степеней полинома
- •Контроль полинома на наличие несокращаемых множителей
- •Разложение полинома по степеням
- •Вычисление корней полинома
- •Основные операции с полиномами
- •Операции над степенными многочленами с отрицательными степенями
- •10. Решение уравнений и неравенств.
- •11. Математический анализ. Пределы, суммы. Ряды. Пределы
- •Суммы и ряды
- •12. Математический анализ. Исследование функций. Разложение и приближение функций.
- •13. Математический анализ. Дифференцирование функций. Интегрирование. Производные
- •Интегралы
- •14. Обзор пакетов Maple 15. Пакет linalg. Элементарные операции с матрицами и векторами. Состав пакета linalg
- •15. Пакет LinearAlgebra. Элементарные операции с матрицами и векторами. Назначение и загрузка пакета LinearAlgebra
- •Примеры матричных операций с применением пакета LinearAlgebra
- •Методы решения систем линейных уравнений средствами пакета LinearAlgebra
- •16. Решение систем линейных уравнений. Пакет student. Функции пакета student
- •Функции интегрирования пакета student
- •Иллюстративная графика пакета student
- •17. Основы программирования в maple 15. Задание функций пользователя. Задание функции пользователя
- •10.1.2. Конструктор функций unapply
- •Визуализация функции пользователя
- •18. Основы программирования в maple 15.Условные выражения. Циклы. Операторы пропуска и прерывания. Условные выражения
- •Циклы for и while
- •10.2.5. Операторы пропуска и прерывания циклов
- •19. Процедуры функции. Процедуры. Средства отладки процедур, их сохранение и использование (подключение).
- •Графические процедуры
- •Просмотр кодов процедур
- •Оператор возврата значения return
- •Статус переменных в процедурах и циклах
- •Объявления переменных локальными с помощью оператора local
- •Объявления переменных глобальными с помощью слова global
- •Ключи в процедурах
- •Общая форма задания процедуры
- •20. Решение алгебраических уравнений и систем уравнений. Основная функция solve. Решение систем линейных уравнений
- •21. Одиночные нелинейные и тригонометрические уравнения. Решение одиночных нелинейных уравнений
- •Решение тригонометрических уравнений
- •22. Системы нелинейных и трансцендентных уравнений. Решение уравнений в численном виде. Решение систем нелинейных и трансцендентных уравнений
- •Решение в численном виде — функция fsolve
- •23. Решение функциональных, рекуррентных и др. Уравнений. Функция RootOf. Функция RootOf
- •Решение функциональных уравнений
- •Решение рекуррентных уравнений — rsolve
- •24. Решение обыкновенных дифференциальных уравнений и уравнений в частных производных Примеры аналитического решение оду первого порядка
- •Функция pdsolve
- •25. Двумерная графика в системе maple 15. Команда plot(). Функция plot для построения двумерных графиков
- •26. Двумерные команды пакета plots. Двумерные графические структуры Maple.
- •27. Двумерные команды пакета plottols. Анимация двумерных графиков.
- •28. Пространственная графика в Maple. Команда plot3d().
- •Параметры функции plot3d
- •29. Трёхмерные команды пакета plots. Трёхмерные графические структуры Maple.
- •30. Меню для работы с трёхмерной графикой. Трёхмерные команды пакета plottools.
- •31. Символьные преобразования выражений. Команда simplify, expand. Упрощение выражений — simplify
- •Расширение выражений — expand
- •32. Символьные преобразования выражений. Команда factor, collect. Разложение выражений (факторизация) — factor
- •Комплектование по степеням — collect
- •33. Решение тригонометрических уравнений.
- •34. Решение систем линейных уравнений. Решение систем линейных уравнений
- •35. Решение систем нелинейных и трансцендентных уравнений.
- •36. Поиск эсктремумов функции командой solve.
- •37. Поиск эсктремумов функции командой extrema.
- •38. Поиск минимумов и максимумов аналитической функции командами minimize, maximize.
- •39. Работа с функцией из отдельных кусков. Функция piecewise. Работа с функциями piecewise
- •40. Численное решение дифференциальных уравнений. Команда dsolve.
- •II. Вопросы по практике
35. Решение систем нелинейных и трансцендентных уравнений.
Функция solve может использоваться для решения систем нелинейных и трансцендентных уравнений. Для этого система уравнений и перечень неизвестных задаются в виде множеств. Ниже приведены примеры решения уравнений (файл solvenl):
> restart;
> solve{{х*у=а,x+y=b},{х,у});
у = RootOf(_Z² - _Zb + а), х = -RootOf(_Z² -_Zb + a)+b)
> allvalues(%);
> s:=solve({x*y=2,x+y=3},{x,y});
s:={y = 1, x = 2}, {y = 2, x = 1}
> assign(s); x; y;
1 2
> unassign('x'); y:= 'y';
y:= y
> [x, y];
[x,y]
В этих примерах хорошо видна техника работы с функциями solve и assign. В конце примеров показано восстановление неопределенного статуса переменных х и у с помощью функции unassign и снятие определения переменных с помощью заключения их в прямые апострофы.
Приведем еще один пример решения системы нелинейных уравнений с проверкой правильности решения с помощью функции eval:
> eqs: = {2*х+4*у=6,у+1/х=1};
> r:=solve(eqs, {х, у});
r:= {y = 2, х = -1}, {у = ½, х = 2}
> eval(eqs,r[1]);
{1 = 1, 6 = 6}
> eval(eqs,r[2]);
{1 = 1, 6 = 6}
Для проверки всех решений можно использовать также функции map и subs:
> map(subs,[r],eqs);
[{1 = 1, 6 = 6}, {1 = 1, 6 = 6}]
Maple имеет и еще ряд возможностей для проверки решений, но представленных обычно вполне достаточно для такой проверки. Ее следует принять за правило при выполнении решений уравнений.
36. Поиск эсктремумов функции командой solve.
Функция solve нередко позволяет найти экстремумы в аналитическом виде как нули первой производной. Приведем примеры этого (файл extrem):
> restart:y:=ехр(-а*х)-exp(-b*x);dy:=diff(y,х);
у = e(-ax) - е(-bx) dy := -ae(-ax) + bе(-bх)
> solve(dy,x);
> restart:y:=а*х*ехр(-b*x);dy:=diff(y,х);
y := axe(-bx) dy := ae(-bx) - axbe(-bx)
> solve(dy,x);
Этот метод иногда можно распространить на случай ряда переменных. Ниже представлен такой пример для функции двух переменных:
> restart:
> z:=(х,y)-> а*х^2 + b*х*y + с*y^2 + d*(х-y);
z := (х,у)→aх² + bху + су² + d(x-y)
> xy:=solve({diff(z(x,y),x) = 0, diff(z(x,y),y) = 0},{х,y});
> z(rhs(xy[2]),rhs(xy[1]));
> simplify(%);
Разумеется, подобное решение возможно далеко не всегда, хотя и частные решения данной задачи представляют значительный практический интерес.
37. Поиск эсктремумов функции командой extrema.
Ряд функций служит специально для вычисления экстремумов, максимумов и минимумов функций, а также для определения их непрерывности. Одна из таких функций extrema позволяет найти экстремумы выражения expr (как максимумы, так и минимумы) при ограничениях constrs и переменных vars, по которым ищется экстремум:
extrema(expr, constrs)
extrema(expr, constrs, vars)
extrema(expr, constrs, vars, 's')
Ограничения contrs и переменные vars могут задаваться одиночными объектами или списками ряда ограничений и переменных. Найденные координаты точки экстремума присваиваются переменной 's'. При отсутствии ограничений в виде равенств или неравенств вместо них записывается пустой список {}.
Эта функция в предшествующих версиях Maple находилась в стандартной библиотеке и вызывалась командой readlib(extrema). Но начиная с Maple 7 ее можно использовать без предварительного объявления. В этом убеждают приведенные ниже примеры (файл extrema):
> restart:
> z:=(х,y)-> а*х^2 + b*x*y + с*y^2 + d*(х-y);
z:= (х,у)→ах² + bxy + су² + d(х - y)
> extrema(z(х,y),{},{х,y},'s');
> s;
> extrema(а*х^2+b*х+с,{},x,'s');s;
> extrema(х*ехр(-х),{}, х, 's'); s;
{e(-1)} {{x = 1}}
> extrema(sin(x)^2,{},x,'s');s;
{0,1} {{x=0}, {х=½π}}
> extrema(х+у/z,х^2+у^2+z^2=1,{x,y,z},'s');s;
{max(1 - RootOf(_Z4 + 1)2, - 1 + RootOf(_Z4 + 1)2), min(1 - RootOf(_Z4 + 1)2, -1 + RootOf(_Z4 + 1)2)} {{z = RootOf(_ Z4 + 1), x = -1, у = RootOf(_Z4 + 1)3}, {x = 1, z= RootOf(_ Z4 + 1), у = - RootOf(_ Z4 + 1)3}}
> evalf(%);
{{x = -1., у = -0.7071067812+0.7071067812 I, z = 0.7071067812+0.7071067812 I},{z = 0.7071067812+0.7071067812 I, x = 1., у = 0.7071067812-0.7071067812 I}}
Как видно из приведенных примеров, функция extrema возвращает как значения экстремумов, так и значения аргументов, при которых экстремумы наблюдаются. Обратите внимание, что в первом примере результат вычисления экстремума функции z(x,y) оказался тем же, что и в предшествующем разделе. Это говорит в пользу применения функции extrema.
Для проверки оптимизационных алгоритмов существует ряд тестовых функций. Одна из таких функций — функция двух переменных Розенброка. В представленном ниже примере она задана как rf(x,y):
> rf:= (x,у)->100*(у-х^2)^2+(1-х)^2;
rf:=(x,.y)→100(y-x²)²+(1-x)²
> extrema(rf(х,у),{х,у},'s');s;
{{y = -RootOf f(_ Z4 + 1)3, х = 1, z = RootOf(_Z4 + 1)}, {x = -1, у = RootOf(_Z4 + 1)3, z = RootOf(_Z4 + 1)}}
> evalf(%);
{{y = 0.7071067812-0.7071067812, x = 1., z =0.7071067812+0.7071067812 I}, {z = 0.7071067812+0.7071067812 I, x = -1.,y = -0.7071067812+0.7071067812 I}}
Как нетрудно заметить, минимум этой функции при значениях x=у=1, равный 0, функцией extrema явно не обнаружен. Однако это не недостаток данной функции, а просто неудачное ее применение. Функция Розенброка имеет минимум значения и для его обнаружения надо использовать функцию minimize, описанную ниже.
Функция extrema дает неплохие результаты при поиске экстремумов простых аналитических функций, не имеющих особенностей. Однако при анализе сложных функций, содержащих функции со сравнением аргумента (например, abs(x), signum(x) и др.) функция extrema часто отказывается работать и просто повторяет запись обращения к ней.