Методические указания к экзамену по дисциплине ПАКЕТЫ ПРИКЛАДНЫХ ПОГРАММ MATHCAD
СОДЕРЖАНИЕ ВОПРОСОВ
1. Правила вставки в интервал ячеек рабочего листа Excel функций как массивов. Примеры функций, вставляемых как массивы: МУМНОЖ, МОБР, ТРАНСП, ТЕНДЕНЦИЯ, РОСТ, правила определения размерностей их выходных массивов в зависимости от размерностей входных.
Табличный процессор Microsoft Excel уже давно стал стандартным программным обеспечением. Конечно, существуют специализированные программные средства для решения математических задач, такие как MathCad, Maple и другие, но они не всегда могут быть доступны пользователю, а Excel есть на всех ПК, на которых установлена ОС Windows. И при необходимости провести ряд математических численных расчетов пользователь во многих случаях может вполне справиться с задачей средствами Excel.
В математике известны функции, возвращающие массивы – векторы или матрицы, например, произведение матриц, обратную матрицу и т.д.
Массивом в Excel называется интервал ячеек, содержащий одну и ту же формулу. Признаком того, что интервал является массивом, является заключение этой формулы в фигурные скобки, являющиеся не текстовыми, а специальными символами. Некоторые операции в Excel возможны без применения массивов – например, если в какие-либо интервалы введены матрицы одних и тех же размеров, то для вычисления суммы этих матриц достаточно ввести в первую ячейку зарезервированного для этой суммы интервала формулу, имеющую вид суммы верхних левых элементов этих матриц с относительными ссылками, и заполнить этой формулой вправо и вниз необходимый интервал.
Ряд функций в Excel возвращают только массивы. Если такая функция вставляется с помощью мастера функций, то после ввода значений аргументов в текстовые поля выше кнопки OK перечисляются все ее значения (или их видимая часть) в фигурных скобках, что является признаком необходимости вставки этой функции как массива. Во встроенной справке по такой функции всегда указано, что ее необходимо вставить как массив.
Процедура вставки функции как массива состоит из четырех шагов.
Шаг 1. Выделяется нужный интервал.
Шаг 2. В начальную ячейку выделения вставляется нужная функция с нужными аргументами.
Шаги 1 и 2 можно менять местами, но начальная ячейка выделения все равно должна содержать формулу со вставляемой функцией, а ее значение – первое значение массива.
Шаг 3. Щелкнуть левой кнопкой мыши по концу строки формул, содержащей вставляемую функцию, либо на клавиатуре нажать F2.
Шаг 4. На клавиатуре одновременно нажать Ctrl+Shift+Enter.
В результате весь интервал окажется заполнен одной и той же формулой в фигурных скобках. Рекомендуется единообразно оформить данный интервал. При этом наиболее распространенные ошибки таковы.
а) В массиве выделено ячеек меньше, чем надо. Здесь можно расширить выделение, затем повторить шаги 3 и 4.
б) В массиве выделено ячеек больше, чем надо, о чем свидетельствует сообщение об ошибке «#Н/Д» в лишних ячейках. В этом случае все выделение необходимо очистить (клавиша Delete), затем выделить нужный интервал и повторить всю процедуру заново.
в) При попытке изменить содержимое одиночной ячейки массива появляется диалоговое окно с надписью «Нельзя изменять часть массива» и единственной кнопкой OK. Грамотным выходом из этой ситуации является только нажатие клавиши Esc.
Далее приводятся наиболее распространенные функции, вставляемые как массивы.
а) Функция МУМНОЖ (категория «Математические») возвращает произведение матриц. Известно, что если матрица A имеет размеры m ( n (т.е. состоящая из m строк и n столбцов), а матрица B имеет размеры n ( p, то их произведение AB (в указанном порядке!) определено и имеет размеры m ( p. Таким образом, если сомножители введены в какие-либо интервалы, то по этим правилам можно определить размеры интервала для их произведения.
б) Функция МОБР (категория «Математические») возвращает обратную матрицу. Известно, что если матрица A является квадратной и имеет размеры n ( n, то обратная к ней матрица A1 будет иметь такие же размеры. Если при вычислении обратной матрицы во всех ячейках интервала, ее содержащего, появится сообщение об ошибке «#ЧИСЛО!», это значит, что определитель матрицы A равен нулю и обратная к ней матрица не существует. Для проверки этого, следует в какой-либо ячейке вычислить определитель A с помощью скалярной функции МОПРЕД.
в) Функция ТРАНСП (категория «Ссылки и массивы») возвращает транспонированную матрицу. Известно, что если матрица A имеет размеры m ( n, то транспонированная к ней матрица AT имеет размеры n ( m. После выполнения шагов 1 и 2 при вставке этой функции, в начальной ячейке интервала, зарезервированного, для матрицы AT, появляется сообщение о якобы имеющейся ошибке «#ЗНАЧ!», которое следует игнорировать и перейти к выполнению шагов 3 и 4.
г) Функция ТЕНДЕНЦИЯ (категория «Статистические») возвращает линейный тренд по методу наименьших квадратов, т.е. по формуле 13 EMBED Equation.3 1415. Должна быть задана последовательность Y = {Y(1), Y(2), ... Y(n)}, называемая временным рядом, где n - количество наблюдений. Эта последовательность, как правило, монотонная. Также могут быть заданы: последовательность X = {X(1), X(2), ... X(n)}, обязательно возрастающая, а также скаляр или последовательность XH, значения которого произвольны.
Функция ТЕНДЕНЦИЯ имеет 4 аргумента. Первый аргумент является обязательным и содержит ссылку на Y. Второй аргумент необязателен; если он присутствует, то содержит ссылку на X; если он отсутствует, то он по умолчанию равен {1, 2, ... n}. Третий аргумент необязателен; если он присутствует, то содержит ссылку на XH. Четвертый аргумент необязателен; если он отсутствует или равен логическому значению ИСТИНА, то функция возвращает значения тренда, надлежащим образом подбирая параметр b, а если он равен логическому значению ЛОЖЬ, то функция возвращает значения тренда при b=0.
При отсутствии третьего аргумента функция возвращает массив, имеющий такие же размеры, что и Y. При наличии третьего аргумента функция возвращает массив, имеющий такие же размеры, что и XH, а если последний является скаляром, то она возвращает скаляр.
д) Функция РОСТ (категория «Статистические») возвращает экспоненциальный тренд по методу наименьших квадратов, т.е. по формуле 13 EMBED Equation.3 1415, и работает аналогично функции ТЕНДЕНЦИЯ. Единственное дополнительное требование – все элементы Y должны быть положительны.
2. Приближенное вычисление определенных интегралов по формуле трапеций и приближенное решение задач Коши для обыкновенных дифференциальных уравнений первого порядка методом Эйлера в среде Excel.
а) Пусть f(x) – функция, определенная и непрерывная на каком-либо отрезке [a; b]. Требуется приближенно найти
13 EMBED Equation.3 1415.
Значение такого интеграла не всегда выражается через элементарные функции, поэтому существует большое количество приближенных методов поиска интеграла, например, метод трапеций.
Отрезок [a; b] можно разбить на N равных частей, тогда шаг
13 EMBED Equation.3 1415. (1)
Положим x0=a, и образуем арифметическую прогрессию:
13 EMBED Equation.3 1415. (2)
При каждом значении xk вычислим yk=f(xk). Тогда, исходя из геометрического смысла определенного интеграла, он равен площади криволинейной трапеции, ограниченной осью Ox, прямыми x=a, x=b и графиком функции y= f(x). Эта площадь приближенно равна сумме N площадей уже обычных (прямолинейных) трапеций, каждая из которых имеет вершины с координатами (xk-1; 0), (xk; 0), (xk; yk) и (xk-1; yk-1). Площадь каждой такой трапеции вычисляется по формуле, известной из курса геометрии средней школы. После сложения этих площадей и приведения подобных слагаемых получается:
13 EMBED Equation.3 1415 (3)
Пусть S* – точное значение интеграла. Из дисциплины «Численные методы» известно, что абсолютная погрешность приближения
13 EMBED Equation.3 1415 (4)
пропорциональна h2. Вычисляется также относительная погрешность приближения
13 EMBED Equation.3 1415 (5)
(возможно, точное значение интеграла отрицательно, поэтому на всякий случай оно берется по модулю).
Пусть на рабочем листе Excel где-либо заданы a и b, а также N, равное, например, 100. Тогда h вычисляется по формуле (1), x0 приравнивается к a, далее рассчитываются N значений xk по формуле (2) в столбец, где ссылка на xk1 относительная, а на h абсолютная.
Напротив xk вычисляются значения функции yk с относительной ссылкой на xk (т.е. сначала записывается формула для функции при x=x0, затем ею заполняется необходимый интервал). Может произойти, что при значении x0=a функция f(x) формально не определена (например, из-за деления на 0 в формуле) и интеграл становится несобственным, но существует конечный предел этой функции при x(a. В этом случае значение a следует увеличить на малую величину, например, на 0,001.
Далее реализуется формула (3). Если каким-либо образом известно точное значение интеграла (например, оно выражается через элементарные функции), то это значение вводится в какую-либо ячейку, затем вычисляются абсолютная и относительная погрешности приближения по формулам (4) и (5), которые должны быть малыми.
б) Пусть дана задача Коши для обыкновенного дифференциального уравнения первого порядка:
13 EMBED Equation.3 1415,
где f(x,y) определена и дифференцируема по обоим аргументам в некоторой достаточно большой окрестности точки 13 EMBED Equation.3 1415. Из дисциплины «Дифференциальные уравнения» известно, что такая задача имеет единственное решение, но оно не всегда выражается через элементарные функции. Поэтому существует большое количество методов приближенного решения такой задачи. Простейшим из них является метод Эйлера. Его недостатком является относительно низкая точность, а достоинством – легкость реализации.
Ограничимся построением решения задачи на некотором отрезке [a; b], где a=x0, так, чтобы условия существования и единственности решения задачи были бы на этом отрезке соблюдены.
Отрезок [a; b] можно разбить на N равных частей, тогда шаг h вычисляется по формуле (1), а арифметическая прогрессия xk – по формуле (2).
Формула метода Эйлера известна из дисциплины «Численные методы»: при k=1,...,n
13 EMBED Equation.3 1415. (6)
Пусть y*(x)– точное решение задачи Коши. Из этой же дисциплины известно, что локальные абсолютные погрешности приближения
13 EMBED Equation.3 1415 (7)
пропорциональны h2, где коэффициент пропорциональности возрастает с ростом индекса, а глобальная абсолютная погрешность приближения 13 EMBED Equation.3 1415 уже пропорциональна h. Вычисляется также глобальная относительная погрешность приближения
13 EMBED Equation.3 1415 (8)
(возможно, точное значение y*(xN) отрицательно, поэтому на всякий случай оно берется по модулю).
Для практического расчета на рабочем листе Excel так же, как при вычислении определенного интеграла, задаются a, b, N, вычисляются h и xk. Напротив x0 задается y0. Напротив x1,... xN реализуется формула (6), где ссылка на h абсолютная, остальные ссылки относительные.
Если каким-либо образом известно точное решение задачи Коши (например, оно выражается через элементарные функции), то формулы для этого решения записываются напротив xk с относительной ссылкой на аргумент. При этом значение точного решения при x= x0 должно совпасть с y0.
При k=N реализуются формулы (7) и (8).
После проведения расчетов на одной диаграмме строятся графики рядов, содержащих приближенное и точное решения. При правильной работе метода Эйлера графики должны разойтись незначительно.
3. Приведение общей задачи линейного программирования к стандартному виду, постановка двойственной к ней задачи. Решение этих задач в среде Excel с помощью надстройки «Поиск решения» («Solver»).
Пусть даны: матрица A размером m(n, столбец B из m элементов и столбец C из n элементов. Требуется найти такой столбец X из n элементов, чтобы
13 EMBED Equation.3 1415 (1)
(где CX – скалярное произведение, AX – матричное произведение, а в третьем неравенстве сравнение массива с нолем понимается в том смысле, что все элементы этого массива должны быть больше либо равны нулю). Такая задача называется стандартной, или прямой задачей линейного программирования (ЛП).
Если раскрыть второе соотношение формулы (1) по строкам, то при каждом k=1,...,m 13 EMBED Equation.3 1415. Но задача может быть так поставлена, что в ее условии при каком-то k 13 EMBED Equation.3 1415, такое неравенство следует умножить на (-1). Если же 13 EMBED Equation.3 1415, то истинность этого равенства равносильна одновременной истинности неравенств 13 EMBED Equation.3 1415 и 13 EMBED Equation.3 1415.
Пусть AT – транспонированная матрица к A, тогда двойственной задачей к стандартной задаче ЛП называется задача нахождения такого столбца U из m элементов, чтобы
13 EMBED Equation.3 1415 (2)
(где BU – скалярное произведение, ATU – матричное произведение, а в третьем неравенстве сравнение массива с нолем понимается в прежнем смысле).
Множество решений каждой из задач, удовлетворяющих всем указанным неравенствам, называется допустимым, а такое множество, на котором целевая функция достигает указанного экстремума – оптимальным.
Обе эти задачи совместно обладают следующими свойствами, известными из дисциплины «Методы оптимизации».
Свойство 1. Двойственная задача к двойственной есть прямая задача.
Свойство 2. Если обе задачи имеют оптимальные решения, то максимальное значение z в прямой задаче должно быть равно минимальному значению w в двойственной задаче.
Свойство 3 (называемое также условием дополняющей нежесткости). Пусть получены оптимальные решения обеих задач, тогда:
а) при каждом k=1,...,m 13 EMBED Equation.3 1415;
б) при каждом k=1,...,n 13 EMBED Equation.3 1415.
Это свойство можно сформулировать по-другому. Если при подстановке решения одной из задач в какое-либо ее ограничение оно становится строгим неравенством, то соответствующая этому ограничению переменная двойственной к ней задачи равна 0 (обратное может быть неверно).
Свойство 4. Если одна из этих двух задач не имеет решений по причине отсутствия допустимых решений, то двойственная к ней задача не имеет решений по той причине, что множество допустимых решений не ограничено, причем на нем целевая функция неограниченно возрастает или убывает, т.е. экстремума не достигает; и наоборот.
В Excel встроены методы решения задач ЛП, вызов которых возможен при наличии надстройки «Поиск решения» («Solver»). Если эта надстройка имеется, то пункт с таким названием должен быть в меню «Сервис». Возможно, эта надстройка установлена, но скрыта – отобразить ее можно через пункт меню «Сервис», подпункт «Надстройки»; если она не установлена, потребуется ее дополнительная установка.
Пусть задача ЛП приведена к стандартному виду. В какой-либо интервал заносится матрица A, в столбцы заносятся B и C. Для X резервируется столбец, который предварительно заполняется нолями. В каком-либо столбце вычисляется AX с помощью функции МУМНОЖ. В какой-либо ячейке вычисляется z с помощью функции СУММПРОИЗВ.
Для двойственной задачи в каком-либо интервале размещается матрица AT с помощью функции ТРАНСП. Для U резервируется столбец, который предварительно заполняется нолями. В каком-либо столбце вычисляется ATU с помощью функции МУМНОЖ. В какой-либо ячейке вычисляется w с помощью функции СУММПРОИЗВ.
Решаем с помощью надстройки «Поиск решения» прямую задачу. После запуска соответствующего подпункта меню «Сервис» появится диалоговое окно. Поле «Установить целевую ячейку» заполнить ссылкой на z, согласно первому соотношению (1) выбрать переключатель «Максимальному значению», поле «Изменяя ячейки» заполнить ссылкой на X (по кнопке «Предположить» здесь щелкать нельзя – она предназначена для разрешения изменений всех аргументов, входящих в формулу целевой функции, но здесь можно изменять только X, а C нельзя).
Для ввода ограничений следует щелкнуть по кнопке «Добавить». Появится отдельное диалоговое окно «Добавление ограничения», в котором поле «Ссылка на ячейку» (т.е. левую часть) согласно второму соотношению (1) заполнить ссылкой на AX, из раскрывающегося списка знаков выбрать «(», поле «Ограничение» (т.е. правую часть) заполнить ссылкой на B. Для ввода второго ограничения в этом же диалоговом окне следует снова щелкнуть по кнопке «Добавить». Появится это же окно, но с пустыми полями. Здесь поле «Ссылка на ячейку» (т.е. левую часть) согласно третьему соотношению (1) заполнить ссылкой на X, из раскрывающегося списка знаков выбрать «(», в поле «Ограничение» (т.е. правую часть) ввести число 0. После того, как все ограничения добавлены, можно щелкнуть по кнопке «OK», и произойдет возврат к главному диалоговому окну поиска решения, после чего можно щелкнуть по кнопке «Выполнить». При произвольных исходных данных возможен один из трех случаев.
1. Если допустимых решений вообще нет, то появится диалоговое окно с предупреждением «Поиск не может найти подходящего решения».
2. Если множество допустимых решений не ограничено, причем на нем целевая функция неограниченно возрастает или убывает, т.е. экстремума не достигает, то появится диалоговое окно с предупреждением «Значение целевой ячейки не сходятся».
В обоих случаях лучше щелкнуть по кнопке «Отмена».
3. Появится диалоговое окно с сообщением «Решение найдено», тогда следует щелкнуть по кнопке «OK», и значения X, вообще говоря, изменятся (возможен случай, когда столбец из нолей действительно является оптимальным решением задачи – например, когда все элементы A и B положительны, а все элементы C отрицательны), при этом вместе с ними изменятся значения AX и z.
Решаем с помощью надстройки «Поиск решения» двойственную задачу. После запуска соответствующего подпункта меню «Сервис» появится диалоговое окно. Поле «Установить целевую ячейку» заполнить ссылкой на W, согласно первому соотношению (2) выбрать переключатель «Минимальному значению», поле «Изменяя ячейки» заполнить ссылкой на U (по кнопке «Предположить» здесь по-прежнему щелкать нельзя).
Для ввода ограничений можно либо поочередно выделить каждое ограничение из оставшихся от прямой задачи и удалить его, затем добавить новые; либо же выбирать каждое ограничение и его изменять.
В любом случае при появлении отдельного диалогового окна «Добавление (Изменение) ограничения» в нем поле «Ссылка на ячейку» (т.е. левую часть) согласно второму соотношению (2) заполнить ссылкой на ATU, из раскрывающегося списка знаков выбрать «(», поле «Ограничение» (т.е. правую часть) заполнить ссылкой на интервал C. Во втором ограничении поле «Ссылка на ячейку» (т.е. левую часть) согласно третьему соотношению (2) заполнить ссылкой на U, из раскрывающегося списка знаков выбрать «(», в поле «Ограничение» (т.е. правую часть) ввести число 0. После возврата к главному диалоговому окну поиска решения можно щелкнуть по кнопке «Выполнить».
При наличии решений обеих задач следует сравнить значения ячеек, содержащих z и w – они по свойству 2 обязаны быть равны. Также следует произвести проверку выполнения свойства 3. Согласно его пункту «а» в какую-либо ячейку вводим формулу вида 13 EMBED Equation.3 1415 и заполняем ею столбец из m элементов, который в результате должен состоять из нолей. Аналогично проверяем пункт «б», для этого в какую-либо ячейку вводим формулу вида 13 EMBED Equation.3 1415 и заполняем ею столбец из n элементов, который в результате также должен состоять из нолей.
4. Символьные преобразования в среде MathCAD с автопересчетом и без автопересчета: аналитические преобразования, аналитическое решение уравнений с одним неизвестным, упрощение выражений, раскрытие скобок, разложение на множители.
Программа MathCAD разработана фирмой MathSoft и первоначально предназначалась лишь для численных математических расчетов. Начиная с версии 6, в MathCAD было добавлено ядро символьных математических преобразований, приобретенное ее разработчиком у фирмы Waterloo Maple - разработчика программы Maple. По сравнению с Maple, MathCAD выигрывает простотой интерфейса ввода, но проигрывает в возможностях символьных преобразований, поскольку Maple все же имеет более богатый их набор; кроме того, в MathCAD имеются конфликты между символьными и числовыми процедурами. Тем не менее, в ряде случаев для аналитического решения задач возможностей MathCAD достаточно.
Символьные преобразования в MathCAD можно осуществлять двумя способами: с помощью меню «Symbolic» («Символы») и с помощью кнопок одноименной панели инструментов.
Например, пусть требуется вычислить сложное арифметическое выражение, содержащее лишь явно заданные числа, в виде обыкновенной несократимой дроби. Это выражение охватывается уголком, после чего последовательно запускаются пункты меню «Symbolic» («Символы»), «Evaluate» («Расчеты»), «Symbolically» («Символические»), что равнозначно нажатию на клавиатуре Shift+F9. Ответ будет помещен в отдельной надписи и будет иметь вид именно обыкновенной дроби. Разумеется, после него можно добавить знак равенства, эта дробь будет выведена в десятичном виде. Полученное таким образом символьное выражение не будет пересчитываться при новом открытии документа.
Можно вычислить эту же дробь вторым способом. Исходное выражение копируется в буфер, где-либо на пустом месте вставляется из буфера, далее щелкнем по кнопке «(» на панели инструментов «Symbolic» («Символы») и на клавиатуре нажмем Enter. Полученное таким образом символьное выражение уже будет пересчитываться при новом открытии документа.
Вообще говоря, все формулы с численными расчетами при новом открытии документа всегда пересчитываются. При необходимости пересчитать текущий документ (за исключением выражений, полученных через меню «Symbolic»), запускаются пункты меню «Math» («Математика»), «Calculate Worksheet» («Просчитать документ»).
Возможны также 2 способа аналитического решения уравнений с одним неизвестным. Пусть уравнение записано, знак равенства отображается в нем в виде булева равенства (кнопка на панели инструментов либо комбинация клавиш Ctrl+=). При реализации первого способа охватывается уголком любое вхождение неизвестной переменной, и последовательно запускаются пункты меню «Symbolic» («Символы»), «Variable» («Переменная»), «Solve» («Вычислить» или «Решить»), ответ будет помещен в отдельной надписи. При реализации второго способа охватывается уголком все уравнение, затем щелкаем по кнопке «Solve» на панели инструментов «Symbolic» («Символы»), после слова «Solve» появится знакоместо, в которое вводится имя неизвестной переменной, после чего на клавиатуре нажимается Enter.
При работе с Mathcad также имеются возможности: упрощения символьного выражения (Simplify), раскрытия скобок в символьном выражении (Expand), разложение символьного выражения на множители (Factor), обращения матрицы с выводом результата в виде обыкновенных дробей и ряд других. Для реализации этих возможностей также имеются 2 способа: через меню и панель инструментов. Во всех случаях при символьных преобразованиях надо следить, чтобы входящим в них переменным не были присвоены никакие значения, а если и были присвоены, то следует их очистить (команды вида имя:=имя).
5. Действия с комплексными числами в среде MathCAD, вычисление корней многочленов в среде MathCAD в аналитическом и десятичном виде.
а) Арифметические действия с комплексными числами.
Предварительно записывается оператор
Пусть требуется вычислить арифметическое выражение, содержащее комплексные числа.
1-й способ. Это выражение охватывается уголком, после чего последовательно запускаются пункты меню «Symbolic» («Символы»), «Evaluate» («Расчеты»), «Complex» («Комплексные»). Ответ будет помещен в отдельной надписи, где коэффициенты при действительной и мнимой единицах будут иметь вид целых чисел или обыкновенных дробей. При добавлении знака равенства справа от результата эти коэффициенты переведутся в десятичный вид. Полученное таким образом символьное выражение не будет пересчитываться при новом открытии документа.
Можно вычислить это же выражение вторым способом. Исходное выражение копируется в буфер, где-либо на пустом месте вставляется из буфера, далее щелкнем по кнопке «Complex» на панели инструментов «Symbolic» («Символы») и на клавиатуре нажмем Enter. Полученное таким образом символьное выражение уже будет пересчитываться при новом открытии документа.
б) Вычисление корней многочленов.
Если x – независимая переменная, то необходимо проследить, чтобы ей ранее в документе не было присвоено никакое значение, а если и было присвоено, то очистить его командой x:=x. Далее, какой-нибудь переменной присваивается значение многочлена от x, на возможное выделение буквы x красным цветом можно не обращать внимание.
1-й способ. В следующей надписи вставляется имя этого многочлена, щелкаем по кнопке «Solve» на панели инструментов «Symbolic» («Символы»), после слова «Solve» появится знакоместо, в которое вводится x, после чего на клавиатуре нажимается Enter. Если ответ иррациональный, его можно перевести в десятичный вид. Если многочлен имеет степень 5 или выше, то его корни могут не выражаться через элементарные функции, тогда они сразу приводятся в десятичном виде с 20 цифрами после точки.
2-й способ. Другой переменной присваивается следующее выражение: вначале вводится имя многочлена, затем щелкаем по кнопке «Coeffs» на панели инструментов «Symbolic» («Символы»), после слова «Coeffs» появится знакоместо, в которое вводится x, после чего на клавиатуре нажимается Enter. Ответом является столбец коэффициентов многочлена, расположенных сверху вниз от свободного слагаемого до x в наибольшей степени. Затем вставляется функция polyroots с аргументом – именем столбца коэффициентов многочлена, после чего вводится знак равенства, справа от которого выводится ответ в десятичном виде.
6. Способы приближенного решения алгебраических уравнений с одним неизвестным и нелинейных систем алгебраических уравнений с заданной точностью в среде MathCAD.
а) Из математического анализа известно, что если f(x) – функция, определенная и непрерывная на каком-либо отрезке, и на концах этого отрезка значения функции имеют разные знаки, то график такой функции по крайней мере один раз пересечет ось Ox внутри этого отрезка.
Вообще говоря, функция может иметь сколь угодно много действительных корней в своей области определения. Нахождение количества действительных корней – это отдельная задача, для решения которой необходимо средствами дифференциального исчисления найти интервалы монотонности функции. Сузим задачу: пусть требуется найти с заданной точностью по крайней мере один действительный корень функции, если заведомо известно, что он существует (даже если действительных корней нет, график функции всегда можно поднять или опустить на какую-либо величину так, чтобы корни были), а по возможности – несколько корней. В таких задачах значение корня, как правило, невозможно алгебраически выразить через элементарные функции. Точность задается системной переменной TOL, которая по умолчанию равна 0,001, при необходимости предварительно ее изменить.
Вначале вводится оператор f(x):=заданная формула. Задается произвольное число a так, чтобы при b=a+1 на отрезке [a; b] функция f(x) была определена и непрерывна. Пусть переменная x меняется от a до b с шагом 0,1. Это записывается как x:=a,a+0.1..b, где две точки вводятся не с клавиатуры, а кнопкой на панели инструментов «Арифметика», которая имеет вид «m..n» (задать диапазон дискретной величины); либо нажатием на клавиатуре «;».
Построим таблицу значений функции, для этой цели напишем f(x)= . Далее с помощью кнопки «X-Y зависимость» на панели инструментов «Графики» строится график функции, в нижнее знакоместо которого вводится «x», а в левое знакоместо «f(x)». После построения графика, чтобы появились оси координат, необходимо щелкнуть по нему правой кнопкой мыши, выбрать «Формат» («Format») и установить переключатель «Пересечение» («Crossed»).
Если график на этом отрезке ни разу не пересечет ось Ox, подберем другое a и т.д. Пусть в конце концов при каком-либо a график пересек ось Ox. Зададим, исходя из графика, начальное приближение корня с точностью до 0,1 командой вида x:=число, и уточним его с заданной погрешностью
·, т.е. найдем такое число x, для которого 13 EMBED Equation.3 1415. Существует несколько способов приближенного поиска корней.
1-й способ.
Given
(булево равенство)
x1= (ответ)
f(x1)= (проверка)
2-й способ работает, даже если уравнение решений не имеет, и ищет такое x, при котором 13 EMBED Equation.3 1415.
Given
(булево равенство)
x2:=Minerr(x)
x2= (ответ)
f(x2)= (проверка)
3-й способ.
x3:=root(f(x),x)
x3= (ответ)
f(x3)= (проверка)
При проверке точность должна быть соблюдена, при решении по крайней мере 1-м и 3-м способами.
б) Пусть требуется решить систему нелинейных уравнений
13 EMBED Equation.3 1415
Если решения этой системы не выражаются через элементарные функции, то она заменяется системой
13 EMBED Equation.3 1415,
где значение
· по-прежнему хранится в системной переменной TOL. Вначале задаются формулы для этих функций, затем начальные приближения переменных (как правило, ноли), после чего пишется:
Given
f(x,y)=a (или число в явном виде)
g(x,y)=b (или число в явном виде)
z:=Find(x,y) (или Minerr(x,y), 2-й способ более надежный)
z= (ответ в виде столбца из двух чисел).
Если системная переменная ORIGIN, хранящая наименьшее значение индекса в массивах, равна нулю, как по умолчанию, то для проверки пишутся:
f(z0,z1)=
g(z0,z1)=
7. Приближенное вычисление определенных интегралов в среде MathCAD с помощью разложения подынтегральной функции в степенной ряд.
Пусть f(x) – функция, определенная и непрерывная на каком-либо отрезке [0; a] (возможно, при x=0 функция f(x) формально не определена, например, из-за деления на 0 в формуле, и интеграл становится несобственным, но существует конечный предел этой функции при x(0, по крайней мере справа). Требуется приближенно найти
13 EMBED Equation.3 1415.
Значение такого интеграла не всегда выражается через элементарные функции, поэтому существует большое количество приближенных методов поиска интеграла. Одним из таких способом является интегрирование с помощью разложения f(x) в степенной ряд, или ряд Маклорена.
Пусть подынтегральная функция в достаточно большой окрестности точки x=0, входящей в [0; a], раскладывается в степенной ряд. Существует целый класс функций, которые легко раскладываются в такие ряды (например, произведение степенной функции с натуральным показателем на синус, косинус или экспоненту, и т.д.). Из математического анализа известно, что этот ряд можно почленно интегрировать. Требуется подобрать количество слагаемых ряда таким образом, чтобы точность приближения S не превосходила заданного числа
·.
Вначале задается выражение для f(x). Затем в новой надписи вводится f(x), и щелкаем по кнопке «Series» на панели инструментов «Symbolic» («Символы»), после слова «Series» появятся 2 знакоместа, в которые последовательно вводятся буква x и, например, число 20 (оно задает количество слагаемых ряда), после чего на клавиатуре нажимается Enter. Ответом является многочлен, который копируется в буфер (в версии 2000 последним слагаемым является O(x20), его копировать не надо). Затем с помощью кнопки на панели инструментов «Calculus» («Математический анализ») вводится шаблон для определенного интеграла, в верхнее и нижнее знакоместа вводятся пределы интегрирования, в знакоместо для подынтегральной функции вставляются пара скобок и содержимое буфера, в знакоместо после буквы «d» для переменной вводится x, после чего ставится знак равенства для выдачи ответа в десятичном виде. Аналогичным образом вставляется и заполняется еще один шаблон для определенного интеграла, только в знакоместо для подынтегральной функции вводится f(x). Если значения этих двух интегралов разошлись по модулю более чем на
·, требуется увеличить количество слагаемых ряда (чем больше верхний предел интегрирования, тем больше это количество) и повторить процедуру заново.
8. Приближенное вычисление двойных интегралов методом Монте-Карло в среде MathCAD.
Пусть требуется приближенно вычислить методом Монте-Карло 13 EMBED Equation.3 1415, где f(x,y) - функция, определенная, непрерывная и неотрицательная в конечной области D так, чтобы вероятность того, что относительная погрешность приближения не превысит 0,01, равна 0,99.
Из дисциплины «Теория вероятностей и математическая статистика» известно, что в этом случае минимально необходимое число испытаний N=16000.
Вокруг области D на плоскости xOy и графика функции f(x,y) описывается параллелепипед высотой по оси Oz, большей либо равной m – максимальному значению функции в области D. В этот параллелепипед бросается N точек со случайными координатами (x; y; z). Из этих точек подсчитывается M - количество точек, таких, что 13 EMBED Equation.3 1415 и z
В отличие от многих языков программирования, MathCAD не поддерживает возможность создания врйменной простой переменной в цикле, поэтому x, y и z здесь будут являться массивами. Системную переменную ORIGIN, определяющую наименьшую границу индекса в массивах, удобнее положить равной 1.
При решении данной задачи возможны 2 наиболее распространенных случая.
Случай 1 – область D прямоугольная, описываемая неравенствами a(x(b, c(y(d. Если f(x,y) по каждому аргументу монотонная, то в качестве m можно выбрать: f(b,d), если она возрастает по обоим аргументам; f(a,c), если она убывает по обоим аргументам; f(b,c), если она возрастает по x и убывает по y; f(a,d), если она убывает по x и возрастает по y.
Для координат случайных точек резервируются массивы x, y и z, каждый из них состоит из N элементов. Они заполняются значениями псевдослучайных величин, имеющих равномерные законы распределений на [a; b], [c; d] и [0; m] соответственно. Это реализуется формулами вида: по всем k:=1..N xk:=a+rnd(b-a) и т.д. Здесь встроенная функция rnd генерирует равномерный закон от 0 до аргумента.
В MathCAD логические ложь и истина обозначаются как 0 и 1, поэтому здесь допустимо суммирование логических выражений, и для подсчета M можно применить формулу:
(наружные квадратные скобки не обязательны). Очевидно, 13 EMBED Equation.3 1415, тогда легко вычисляется S, а точное значение двойного интеграла
Отклонения S от S0 при пересчете документа должны быть разных знаков. На последнем шаге рассчитывается относительная погрешность приближения.
Случай 2 – область D является кругом заданного радиуса R с центром, например, в начале координат, или сектором этого круга; в формуле для f(x,y) присутствует квадратный корень из выражения, которое за пределами круга отрицательно. Поскольку около области D на плоскости xOy описывается прямоугольник, задаваемый неравенствами вида a(x(b, c(y(d, то проекция точки, бросаемой в параллелепипед с основанием – этим прямоугольником, и определяемой высотой m, на эту плоскость может быть за пределами области D, и если формально вычислить функцию непосредственно по заданной формуле, то может получиться комплексное число, что приведет при расчете M к ошибке, потому что комплексные числа нельзя сравнивать по величине.
Поэтому для определения функции надо использовать формулу вида
f(x,y):=if(подкоренное выражение(0, корень из подкоренного выражения, 0).
Функция if работает совершенно аналогично функции ЕСЛИ в Excel и имеет 3 аргумента: логическое выражение, значение - если истина, значение - если ложь.
Для определения m в этом случае надо в выражение для функции подставлять такие значения аргументов, при которых подкоренное выражение максимально, эти значения, как правило, очевидны.
Точно так же, как в случае 1, определяются массивы x, y и z, но для вычисления M здесь применяется формула вида
где умножение неравенств равносильно логической операции «или». Если центром круга не является начало координат, это отображается во втором сомножителе.
Далее действия аналогичны случаю 1.
9. Численное решение задач Коши для обыкновенных дифференциальных уравнений первого, второго и третьего порядков методом Рунге-Кутта в среде MathCAD.
а) Пусть дана задача Коши для обыкновенного дифференциального уравнения первого порядка:
13 EMBED Equation.3 1415, (1)
где f(x,y) определена и дифференцируема по обоим аргументам в некоторой достаточно большой окрестности точки 13 EMBED Equation.3 1415. Известно, что такая задача имеет единственное решение, но оно не всегда выражается через элементарные функции. Поэтому существует большое количество методов приближенного решения такой задачи. Рассмотрим один из них – метод Рунге-Кутта 4-го порядка, отличающийся высокой точностью и реализованный в MathCAD с помощью встроенной функции.
Ограничимся построением решения задачи на некотором отрезке [a; b], так, чтобы условия существования и единственности решения задачи были бы на этом отрезке соблюдены.
Если в дифференциальном уравнении y’ задана неявно, предварительно требуется привести уравнение к виду (1). В этом случае записывается исходное уравнение заменой y’ на какую-нибудь букву, например, на z, средствами символьных преобразований алгебраически решается это уравнение относительно z, ответ копируется в буфер, после чего производится запись f(x,y):= и в появившемся знакоместе вставляется содержимое буфера. Если уравнение уже имеет вид (1) по условию, то в качестве функции f(x,y) непосредственно берется правая часть равенства. Значение y0 должно быть задано из условия.
Отрезок [a; b] можно разбить на N равных частей, тогда шаг
13 EMBED Equation.3 1415.
Здесь удобнее сохранить (а при необходимости – назначить) нулевое значение системной переменной ORIGIN. Образуем арифметическую прогрессию: x0=a, а при всех 13 EMBED Equation.3 1415.
Реализация метода требует формулы D(x,y):=f(x,y0). Сам метод реализуется в виде Z:=rkfixed(y,a,b,N,D). На выходе последней формулы Z – матрица из двух столбцов, а ее последний столбец (с индексом 1) реализует приближенные решения задачи Коши. Копируем этот столбец в массив z1, для чего используем формулу z1:=Z<1>, где угловые скобки вставляются с помощью кнопки на панели инструментов «Матрицы».
Пусть известно точное решение задачи Коши. Тогда по всем k=0..N z2k - запись формулы для точного решения, в которой x всюду снабжается индексом k. Вычисляется глобальная относительная погрешность приближения
13 EMBED Equation.3 1415
Из дисциплины «Численные методы» известно, что она пропорциональна h4.
Для проверки необходимо на одной диаграмме вставить 2 графика: после вставки шаблона декартова графика в нижнее знакоместо вставляется «x», в левое знакоместо «z1,z2» (после вставки запятой курсор переместится на новую строку). Графики должны практически совпасть.
б) Пусть дана задача Коши для обыкновенного дифференциального уравнения второго порядка:
13 EMBED Equation.3 1415, (2)
причем условия существования и единственности соблюдаются.
Если в дифференциальном уравнении y’’ задана неявно, предварительно требуется привести уравнение к виду (2). В этом случае записывается исходное уравнение заменой y’ и y’’ на какие-нибудь буквы, например, на z и u, средствами символьных преобразований алгебраически решается это уравнение относительно u, ответ копируется в буфер, после чего производится запись f(x,y,z):= и в появившемся знакоместе вставляется содержимое буфера. Если уравнение уже имеет вид (2) по условию, то в качестве функции f(x,y,z) берется правая часть равенства после замены y’ на z. Даже если какая-либо из этих трех переменных в формуле для функции отсутствует, ее все равно в списке ее аргументов надо перечислить!
После того, как определены значения y0 и y1, надо задать функцию D в виде матрицы:
В остальном ход решения аналогичен решению задачи Коши для дифференциального уравнения первого порядка.
в) Пусть дана задача Коши для обыкновенного дифференциального уравнения третьего порядка:
13 EMBED Equation.3 1415, (3)
причем условия существования и единственности соблюдаются.
Если в дифференциальном уравнении y’’’ задана неявно, предварительно требуется привести уравнение к виду (3). В этом случае записывается исходное уравнение заменой y’, y’’ и y’’’ на какие-нибудь буквы, например, на z, t и u, средствами символьных преобразований алгебраически решается это уравнение относительно u, ответ копируется в буфер, после чего производится запись f(x,y,z,t):= и в появившемся знакоместе вставляется содержимое буфера. Если уравнение уже имеет вид (3) по условию, то в качестве функции f(x,y,z,t) берется правая часть равенства после замены y’ на z, y’’ на t. Даже если какая-либо из этих четырех переменных в формуле для функции отсутствует, ее все равно в списке ее аргументов надо перечислить!
После того, как определены значения y0, y1 и y2, надо задать функцию D в виде матрицы:
В остальном ход решения аналогичен решению задачи Коши для дифференциального уравнения первого и второго порядков.
10. Решение задач линейного и нелинейного программирования в среде MathCAD.
а) Постановка стандартной задачи линейного программирования (ЛП), составление двойственной к ней задачи и свойства, которыми совместно обладают эти задачи, рассмотрены в изложении вопроса № 3. Пусть задача ЛП уже приведена к стандартному виду. Для удобства системная переменная ORIGIN полагается равной 1. Столбцы A и B, а также матрица C должны быть заданы так, чтобы число элементов B, которое обозначается m, должно быть равно числу строк A, а чтобы число элементов C, которое обозначается n, должно быть равно числу столбцов A. Числа m и n можно вычислить через функции rows и cols, обе с аргументом A.
Далее в цикле по k=1..n все Xk полагаются равными нулю, и определяется функция
(массив C в ней является глобальным аргументом и должен быть определен ранее). Далее составляется блок решений, начинающийся ключевым словом Given, после чего пишутся неравенства A(X(B и X(0, закрывается блок оператором x:=Maximize(Z,X). Если задача решений не имеет, последний оператор будет выделен красным цветом. При наличии решения необходимо вывести полученные значения x и Z(x).
Затем решается двойственная задача. В цикле по k=1..m все Uk полагаются равными нулю, и определяется функция
(массив B в ней является глобальным аргументом и должен быть определен ранее). Далее составляется еще один блок решений, начинающийся ключевым словом Given, после чего пишутся неравенства AT(U(C и U(0, закрывается блок оператором u:=Minimize(W,U). Если задача решений не имеет, последний оператор будет выделен красным цветом. При наличии решения необходимо вывести полученные значения u и W(u).
Если обе задачи имеют решения, то следует хотя бы визуально проверить свойства обеих задач, сформулированные в изложении вопроса № 3.
б) Для решения задачи нелинейного программирования, в которой требуется найти экстремум функции f двух переменных x и y, следует построить трехмерный график этой функции, где ее аргументы принимают возможные значения на указанных в условии интервалах. В версии 8 для необходимо предварительно задать шаги дискретизации по обеим переменным и в двойном цикле по ним составить матрицу значений функции, и далее строить график по этой матрице, где в единственное знакоместо в шаблоне графика вставить имя матрицы. В более поздних версиях возможно непосредственное построение трехмерного графика, в соответствующее знакоместо в шаблоне графика вставляется имя функции.
Исходя из графика, следует определить вид экстремума (максимум или минимум), затем задать начальные приближения переменных, по возможности наиболее близкие к экстремальным, после чего аналогично решению задач ЛП составить блок решений, в котором указать все имеющиеся в условии неравенства, ограничивающие диапазоны изменений переменных. При наличии решения задачи ответом будет столбец с именем, например, t. Если системная переменная ORIGIN сохраняет заданное по умолчанию нулевое значение, то оптимальное значение функции равно f(t0,t1), в противном случае f(t1,t2).
11. Поиск линейного, экспоненциального и полиномиального трендов для временного ряда в среде MathCAD.
а) Понятия линейного и экспоненциального трендов рассмотрены в изложении вопроса № 1. Функции для вычисления коэффициентов, входящих в уравнение линейного тренда, являются встроенными в MathCAD. Для удобства системная переменная ORIGIN полагается равной 1. Задаются массивы x и y, обе одной и той же длины n, которая при необходимости может быть найдена через функцию last. Последовательность элементов y должна быть, как правило, монотонной. Линейный тренд имеет параметры a и b, которые могут быть найдены соответственно через встроенные функции slope(x,y) и intercept(x,y). Далее следует в цикле по k=1..n положить zk равными a(xk+b, найти остатки тренда wk:=ykzk, и коэффициент детерминации через дисперсии, вычисляемые через встроенную функцию Var, по формуле:
Если график массива y близок к графику отрезка прямой, то этот коэффициент должен быть, в свою очередь, близок к единице.
Экспоненциальный тренд строится при условии, что все элементы y положительны. Поскольку индексная переменная k не переопределена, то цикл по ней продолжает действовать и нет надобности открывать его вновь. Полагаются y0k равными ln(yk), и ищутся параметры a0 и b0 соответственно через функции slope(x,y0) и intercept(x,y0). Далее следует положить z0k равными 13 EMBED Equation.3 1415, найти остатки тренда w0k:=ykz0k, и коэффициент детерминации
Если график массива y мало походит на график отрезка прямой, но является всюду выпуклым в одну и ту же сторону, то коэффициент r2 должен быть близок к единице.
Если массив x является арифметической прогрессией, то z также должен образовывать арифметическую прогрессию, а z0 – геометрическую.
Как только для одних и тех же исходных данных найдены оба тренда, следует на одной диаграмме построить графики трех рядов, где в шаблоне графика в нижнем знакоместе вставить «x», в левом знакоместе вставить «y,z,z0». У какого тренда коэффициент детерминации выше, график такого тренда должен проходить ближе к графику y.
б) Если последовательность элементов y не является монотонной, то ни линейный, ни экспоненциальный тренды не будут (за редким исключением) адекватно описывать поведение массива y. В таких случаях для его аппроксимации строится полиномиальный тренд. Здесь удобнее системную переменную ORIGIN положить равной нулю, поскольку в уравнении многочлена может быть ненулевое свободное слагаемое. Степень многочлена можно подобрать, исходя из графика y, она, как правило, равна количеству локальных экстремумов, видных на этом графике, увеличенному на 1. Обозначим эту степень через m.
Далее строятся вспомогательные матрицы A и B, где по всем i:=0..m, j:=0..m:
,
Если C является столбцом коэффициентов многочлена, то из дисциплины «Методы оптимизации» известно, что он удовлетворяет системе линейных уравнений, которая в матричном виде записывается как AC=B и всегда имеет единственное решение. Поэтому C:=A1(B. Тогда по всем k:=0..n элементы полиномиального тренда равны
Далее, как при построении линейного тренда, следует вычислить остатки и коэффициент детерминации, а также на одной диаграмме построить графики y и z. При надлежащем подборе степени многочлена эти графики должны разойтись незначительно, а коэффициент детерминации должен быть близок к единице.
12. Правила расчетов, записи математических констант, встроенных и пользовательских функций в среде Maple.
Программа Maple разработана фирмой Waterloo Maple и предназначена в первую очередь для математических аналитических (символьных) преобразований. По сравнению с MathCAD, Maple выигрывает в возможностях символьных преобразований и наличием традиционных элементов программирования (составные условные операторы, полноценные циклы и процедуры), но проигрывает громоздкостью проведения численных расчетов и даже построения графиков по точкам, а также необходимостью ввода операторов не в двумерном виде, как в MathCAD, а в строку. Тем не менее, если для решения математической задачи понадобятся в первую очередь символьные преобразования, Maple обладает достаточно богатым набором средств для их выполнения и может составлять достойную конкуренцию программе Mathematica, разработанной для аналогичных целей.
Ввод математического выражения в Maple осуществляется со строки ввода, предваряемой знаком «>». Текст в строке ввода записывается красным цветом, результаты вычислений – синим, комментарии и неисполняемые команды – черным. Независимо от установок панели управления операционной системы, в Maple целая часть числа отделяется от дробной всегда точкой, а элементы списка и аргументы функции друг от друга – запятой. Присваивание обозначается как «:=». Если в конце строки ввода поставлена точка с запятой, то результат выводится на экран, а если в конце этой строки поставлено двоеточие, то результат на экран не выводится, а лишь хранится в памяти. Математическое выражение записывается в одну строку по правилам, похожим на правила ввода формул, например, в Excel. При необходимости вставки строки ввода выше текущей используется комбинация клавиш Ctrl+K, а ниже текущей - комбинация клавиш Ctrl+J. Для отображения всплывающих подсказок к кнопкам панелей инструментов необходимо, чтобы режим «Balloon Help» был включен, что производится в меню «Help».
При вводе математического выражения можно немедленно проверить его корректность щелчком по кнопке на панели инструментов, имеющей вид буквы «х». Чтобы введенная команда не исполнялась, необходимо щелкнуть по кнопке, имеющей вид кленового листа. Для ввода текстового комментария в текущей строке производится щелчок по кнопке, имеющей вид буквы «Т», либо комментарий можно ввести в строке ввода, предварив его знаком «#».
Если в математическом выражении используется встроенная функция, то оно может быть сохранено в виде объекта, если название функции написано с заглавной буквы, либо в виде результата, если ее название записано со строчной буквы. В первом случае вывести результат объекта можно с помощью функции value(имя объекта).
Если последний вычисленный объект безымянный, то ссылка на него производится с помощью знака «%», на предпоследний безымянный – с помощью «%%», и т.д.
Следует иметь в виду, что при вводе документа ссылка на какую-либо именованную переменную действует не по мере движения по документу сверху вниз, а по мере ввода строк, в том числе при вставке строки внутри документа! Например, если в первую строку ввести выражение «x:=2*2:», затем вставить строку впереди первой и в ней ввести «x:=5:», а в последней строке документа ввести просто «x;», то будет отображено именно значение 5! Более того, если первую строку документа удалить, сохранить его, закрыть и через некоторое время открыть, то возникнет иллюзия того, что 2(2=5! Дело в том, что сохраненный документ хранит в себе результаты расчетов. Во избежание подобного эффекта полный пересчет документа сверху вниз осуществляется через меню «Edit/ Execute/ Worksheet». При нежелании хранить в документе результаты расчетов следует запустить меню «Edit/ Remove Output/ From Worksheet». Настоятельно рекомендуется в начало документа (а также задачи, если он содержит несколько задач) для очистки памяти (в том числе и от результатов расчетов в других документах, если они открывались в течение текущего сеанса работы с пакетом) вставить команду «restart:».
В таблице указаны правила записи некоторых встроенных математических функций и констант.
Функция или константа
Запись в Maple
Квадратный корень
sqrt
Арксинус
arcsin
Арккосинус
arccos
Арктангенс
arctan
Натуральный логарифм
ln
Десятичный логарифм
log10 или log[10]
Логарифм выражения по основанию
log[основание](выражение)
e (если не является основанием степени)
exp(1)
ex
exp(x)
i (мнимая единица)
I
·
Pi
(
infinity
В Maple можно использовать греческие буквы. Например,
· (альфа строчная) записывается как alpha,
· (альфа заглавная) – как Alpha и т.д. Но следует иметь в виду, что
· (gamma), как и
·, является встроенной константой и изменять ее значение запрещено (о встроенных константах см. в справочной системе Maple).
Можно определять пользовательские функции. Способы их определения следующие:
а) имя функции := переменная или (список переменных)->выражение;
б) имя функции := unapply(выражение, переменная или (список переменных));
в) имя функции := proc(переменные) операторы... RETURN(выражение) end:
В процедурах можно использовать локальные переменные, типом которых по умолчанию является local. При необходимости использовать глобальные переменные, они в начале процедуры объявляются как global.
13. Вывод чисел в десятичном виде в среде Maple с заданной точностью. Правила записи условных операторов и циклов в среде Maple.
Переменные в Maple могут иметь различные типы. Для выяснения типа используется функция whattype(переменная). Например, выражение вида Ѕ хранится именно как обыкновенная дробь (при необходимости сокращаемая) и имеет тип «дробь (fraction)», а вот Ѕ. уже имеет вид 0.5 и тип «вещественное (float)». Аналогично, число 5 имеет тип «целое (integer)», а вот 5. уже имеет тип «вещественное (float)». Также, 13 EMBED Equation.3 1415 имеет тип «степень (^)», а 13 EMBED Equation.3 1415 или ln 2- тип «функция (function)». Для приведения числового выражения к вещественному виду используется функция evalf, которая имеет один из двух синтаксисов:
а) evalf (выражение) – оно будет выведено с общим количеством цифр, равным значению встроенной системной переменной Digits, которое по умолчанию равно 10 и которое предварительно можно изменить;
б) evalf (выражение, общее количество цифр).
Во всех случаях общее количество цифр включает целую и дробную части.
Условные операторы в Maple имеют вид: if условие then операторы (необязательное elif условие then операторы...) (необязательное else операторы) fi; (т.е. if наоборот).
Циклы в Maple имеют вид: for переменная (необязательное from начальное значение) to конечное значение (необязательное by шаг) (необязательное while условие) операторы od; (т.е. do наоборот). Если начальное значение или шаг не указаны, то по умолчанию они равны 1. В цикл может быть вложены другой цикл, условный оператор и т.д.
Весь условный оператор и весь цикл должны содержаться в одной строке ввода. Разумеется, после условного оператора и цикла можно вместо точки с запятой поставить двоеточие.
14. Составные переменные в среде Maple: множества, последовательности, массивы, списки, таблицы, векторы, матрицы. Задание составных переменных. Определение типов составных переменных. Возможности преобразования составных переменных из одного типа в другой. Действия с матрицами.
Составные переменные, т.е., переменные, состоящие из нескольких элементов, могут иметь типы «множество (set)», «символ (symbol)», «последовательность выражений (exprseq)», «список (list)», «массив (array)», «таблица (table)» и некоторые другие. Во всех случаях, кроме множества, индекс при вызове элемента составной переменной записывается в квадратных скобках.
Множество вводится и выводится перечислением элементов в фигурных скобках. Порядок следования его элементов может быть совершенно произвольным. Для извлечения элемента из множества используется функция op(порядковый номер, имя множества).
Последовательность выражений вводится и выводится простым перечислением ее элементов через запятую. Наименьшее значение индекса в ней всегда равно 1.
Список вводится и выводится перечислением элементов в квадратных скобках. Наименьшее значение индекса в списке также всегда равно 1. Список может содержать вложенные списки; в этом случае при вызове элемента в квадратных скобках записываются все его индексы через запятую.
Для ввода массива предварительно его нужно объявить как array(наименьший индекс.. наибольший индекс, [необязательное перечисление элементов]). Массив выводится в виде: имя наименьший индекс :=значение, и т.д.
Для ввода таблицы предварительно ее нужно объявить как table([индекс=значение,...]); при объявлении пустой таблицы ставятся только квадратные скобки без круглых. Индексы могут быть как произвольными числами, так и символами, в последнем случае они записываются в круглые скобки. Вид таблицы при выводе аналогичен ее виду при объявлении.
Иногда не очевиден тип составной переменной, полученной в результате каких-либо преобразований. Для выяснения типа такой переменной используется функция whattype(переменная).
Для преобразования к другому типу в большинстве случаев используется функция convert(переменная, тип). Но ее, вообще говоря, нельзя использовать для преобразования таблицы, поскольку порядок расположения индексов в ней может быть произвольным; в таком случае для копирования элементов таблицы в элементы составной переменной другого типа лучше использовать явные присваивания или цикл.
Для работы с матрицами предварительно необходимо загрузить пакет расширения, содержащий средства линейной алгебры, командой «with(linalg):». Матрица объявляется как matrix([[1-я строка], [2-я строка]...]). Вектор объявляется как vector([элементы]). Вектор обрабатывается как столбец, но всегда вводится и выводится в строку. Матрицы и векторы имеют тип «символ», даже если они состоят из чисел.
Умножение матриц (во избежание путаницы с умножением скаляров) обозначается как «&*». Обратная матрица вычисляется с помощью функции inverse. Определитель вычисляется с помощью функции det. При выводе матриц и векторов необходимо использовать функцию evalm (в противном случае будут выведены только лишь их имена). Матрицу можно умножать на вектор, лишь бы количество столбцов матрицы было равно количеству элементов вектора, результатом такого действия будет вектор.
15. Символьные преобразования в среде Maple: аналитическое решение уравнений с одним неизвестным, упрощение выражений, раскрытие скобок, разложение на множители, действия с комплексными числами.
При символьных преобразованиях в Maple надо следить, чтобы входящим в них переменным не были присвоены никакие значения, а если и были присвоены, то следует их очистить (допустимы команды вида имя:=’имя’, либо применить команду «restart:»).
Знак умножения в необходимых случаях следует ставить между переменными, а также перед открывающей скобкой, в противном случае результат трактуется как соответственно новая переменная или функция.
Во всех случаях желательно производить визуальный контроль правильности выражения, которое следует преобразовать, особенно при обилии в нем скобок, вложенных дробей и т.п.
Уравнение с одним неизвестным может быть решено с помощью функции solve(уравнение, неизвестная). Если решений несколько, то они образуют последовательность выражений. Для проверки решения можно подставить значение переменной в выражение (в том числе все уравнение) с использованием функции subs(переменная=значение, выражение).
При невозможности решения уравнения через функции, являющиеся элементарными, и некоторые специальные функции (не выражающиеся через элементарные и имеющие имена), ответ будет иметь вид RootOf(повтор уравнения, где неизвестная переменная будет заменена на _Z). В этом случае для численного решения уравнения можно использовать функцию fsolve.
При работе с Maple также имеются возможности: упрощения символьного выражения с помощью функции simplify, раскрытия скобок в символьном выражении с помощью функции expand, разложения символьного выражения на множители с помощью функции factor. Если видно, что выражение может быть упрощено группировкой некоторых слагаемых и вынесением из их суммы общего множителя, можно использовать функцию op(порядковый номер слагаемого, выражение).
Maple поддерживает арифметические действия с комплексными числами. Мнимая единица здесь обозначается как I, и использовать ее в качестве пользовательской переменной запрещается. Для того, чтобы при извлечении корня из комплексного числа выделить вещественную и мнимую части результата, следует использовать функцию evalc.
16. Вычисление производных, неопределенных, определенных, несобственных интегралов и сумм рядов в среде Maple.
Первая производная выражения, являющегося функцией одной или нескольких переменных, по указанной переменной, вычисляется с помощью функции diff(выражение, переменная). Производная высокого порядка вычисляется как diff(выражение, переменная $ порядок). Если дифференцируемое выражение является пользовательской функцией, то для того, чтобы его производная также была пользовательской функцией, используется конструкция имя:=unapply(производная, переменная).
При вычислении производных следует иметь в виду, что в Maple встроены следующие правила, равносильные общепринятым в России:
13 EMBED Equation.3 1415
(тангенс записывается обычным образом как tan, котангенс – как cot).
Первообразная выражения, являющегося функцией одной или нескольких переменных, по указанной переменной, вычисляется с помощью функции int(выражение, переменная). При повторном интегрировании эту функцию можно вкладывать в саму себя. В отличие от неопределенного интеграла, первообразная не содержит неопределенное слагаемое, поэтому при желании ее можно назначить пользовательской функцией в том же порядке, что и производную.
Следует иметь в виду, что Maple работает с таблицей интегралов, несколько отличающейся от общепринятой в России, поэтому в ответе могут содержаться обратные гиперболические функции, которые не является элементарными функциями, но выражается через элементарные, а именно, логарифм. Если такое произойдет, для выражения результата интегрирования через элементарные функции следует применять запись convert(первообразная, ln).
Определенный или несобственный интеграл вычисляется как int(выражение, переменная, нижний предел.. верхний предел).
Сумма ряда вычисляется как sum(выражение, индекс=нижний предел.. infinity). Если ответ только повторил условие, то следует посчитать эту сумму в десятичном виде, возможно, заменив бесконечность каким-нибудь достаточно большим числом.
Если в полученном выражении для определенного или несобственного интеграла, либо суммы ряда встретится какая-либо специальная функция, имя которой может быть не знакомо пользователю, полученное значение следует вывести в десятичном виде.
17. Правила аналитического решения задач Коши для обыкновенных дифференциальных уравнений первого, второго и третьего порядков в среде Maple. Использование результатов решений. Построение графиков решений.
а) Пусть дано дифференциальное уравнение первого порядка вида 13 EMBED Equation.3 1415. Здесь производную алгебраически выражать через x и y не обязательно. Из дисциплины «Дифференциальные уравнения» известно, что его общим решением (если оно существует) называется функция вида 13 EMBED Equation.3 1415, где C – неопределенная константа, если при подстановке этой функции в исходное уравнение оно становится тождеством. Общим интегралом такого уравнения называется неявная функция вида 13 EMBED Equation.3 1415, такая, что если из нее найти производную y’(x) по правилам дифференцирования неявной функции и подставить ее в уравнение, то оно также станет тождеством. Возможен случай, когда общий интеграл существует и выражается через элементарные функции, но из него аналитически выразить y через элементарные функции невозможно.
Если к дифференциальному уравнению добавить начальное условие вида y(x0)=y0, то получается задача Коши. Ее решение (если оно существует и единственно) может быть найдено как из общего решения, так и из общего интеграла уравнения исключением неопределенной константы. Для получения аналитического решения задачи Коши в Maple вначале надо ввести исходное дифференциальное уравнение, в котором переменную y всюду, где она встречается, обязательно записать как y(x), а ее производная, как известно, обозначается diff(y(x),x). Далее следует поставить задачу Коши как множество, состоящее из уравнения и начального условия (т.е. перечислить их в фигурных скобках).
Решение поставленной задачи, насколько это по силам Maple, возвращает функция dsolve(задача Коши, y(x)).
Если задача успешно решена, то ее решение будет иметь вид логического равенства, в правой части которого содержится формула. Для того чтобы эту правую часть, возвращаемую функцией rhs, назначить функцией от x, используется оператор y:=unapply(rhs(решение),x); . Для проверки решения следует вывести дифференциальное уравнение, которое должно стать тождеством (при необходимости упростить его). Также значение y(x0) должно совпасть с y0.
Если требуется построить график полученного решения на отрезке [a; b], где a, как правило, равно x0, b – заданное число, большее a, то применяется функция plot(y(x),x=a..b). При желании явно назначить цвет графика в качестве дополнительного аргумента функции plot записывается выражение color= название цвета на английском языке.
Может произойти такое, что в ответе будет содержаться специальная функция, название которой незнакомо большинству пользователей. Это может означать, что существует только общий интеграл поставленного дифференциального уравнения, записанный в элементарных функциях. В этом случае иногда помогает следующий способ: y объявляется независимой переменной, x – функцией от y, а y’(x) по правилам дифференцирования обратной функции в записи уравнения заменяется выражением 1/diff(x(y),y).
Если ответ оказался пустым, то это означает, что Maple с решением задачи не справился; возможно, единственный способ ее решения – численный.
б) Пусть дано дифференциальное уравнение высокого порядка вида 13 EMBED Equation.3 1415. Здесь производную наибольшего порядка алгебраически выражать через остальные переменные не обязательно. Поставим задачу Коши добавлением начальных условий вида y(x0)=y0, y’(x0)=y1, y’’(x0)=y2... В записи Maple вторая производная есть diff(y(x),x$2), а в начальном условии y’(x0) записывается как D(y)(x0), y’’(x0) как D(D(y))(x0) , и т.д. В остальном порядок решения аналогичен решению задачи Коши для уравнения первого порядка.
Следует отметить, что результаты преобразований могут формально различаться в различных версиях пакета, но такие результаты всегда являются равносильными друг другу. Формат файлов Maple (*.mws) поддерживается всеми версиями пакета – даже если файл создан в поздней его версии, то он может быть открыт с помощью более ранней версии. Например, если в одной из версий решение получено с помощью гиперболических функций, которые выражаются через экспоненту, то для его приведения к элементарным функциям используется запись convert(решение, exp), а при необходимости результат упрощается.
Также ответ может оказаться пустым, но это не всегда означает, что решение не может быть найдено. В частности, Maple плохо справляется с решением дифференциальных уравнений, допускающих понижение порядка. В этом случае следует предварительно понизить порядок уравнения и впоследствии получить его решение по правилам, известным из дисциплины «Дифференциальные уравнения».
Разве что за исключением «игральных автоматов».
А неграмотным выходом – нажатие Ctrl+Alt+Delete с возможной потерей данных. Неопытному пользователю, совершившему эту ошибку, может создаться впечатление «зацикливания» Excel. Было бы логичным добавить в диалоговое окно кнопку «Отмена», но что есть, то есть...
Есть другие способы использования линейного тренда: функции ПРЕДСКАЗ и ЛИНЕЙН.
Есть также другие способы использования экспоненциального тренда.
Достойную конкуренцию этой программе составляет MATLAB, но последняя программа требует чрезвычайно много памяти и по этой причине имеет ограниченный круг пользователей.
Например, определенный интеграл может быть аналитически вычислен в виде «интегрального синуса» от числа, т.е. функции, не выражающейся через элементарные, но в десятичный вид это значение переведено быть не может – в Maple ничего подобного нет!
Прописные и строчные буквы в MathCAD различаются, поэтому M и m – разные переменные.
Степень многочлена всегда можно положить равной количеству элементов массива y, уменьшенному на 1, т.е. при ORIGIN=0 как last(y). Тогда имеется задача уже не аппроксимации, а интерполяции данных, т.к. значения многочлена такой степени при x=xk будут в точности равны yk. Но при исходном массиве большой длины этот метод не эффективен, и следует подбирать не очень большую степень многочлена.
При необходимости самостоятельного изучения программы Mathematica опыт работы с Maple будет очень полезен.
Для сравнения: документ MathCAD хранит лишь результаты символьных преобразований, произведенных через меню «Символы». Остальные выражения автоматически пересчитываются при открытии документа.
К сожалению, построить графики функций, определенных этим способом, невозможно.
Например, ab не есть произведение a и b, а новая переменная.
Например, если m:=a*b+a*c+k+a*d, то его упрощение достигается с помощью записи factor(op(1,m)+op(2,m)+op(4,m))+op(3,m).
Так же, как и в MathCAD, что не удивительно: эти пакеты используют одно и то же ядро символьных преобразований.
Если в ответе есть обратная тригонометрическая функция, то в таком случае она заменится логарифмом с комплексным аргументом, что не совсем правильно, поскольку переменная интегрирования предполагается вещественной.
В отличие от Excel и MathCAD, ноли здесь индексами не являются!
В Maple встроены алгоритмы решения большинства типов дифференциальных уравнений, хорошо изученных аналитически. В особо сложных случаях следует предварительно подключить пакет расширения DEtools, сведения о котором можно найти, например, во встроенной справочной системе Maple.
Для возвращения левой части равенства используется функция lhs.
13PAGE 15
13PAGE 14215
°ѕ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·РТZ\
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·’Root EntryEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation Native