- •Содержание
- •Знакомство с Mathcad
- •1.3. Интерфейс пользователя
- •1.3.1. Меню
- •1.3.2. Панели инструментов
- •1.3.3. Настройка панели инструментов
- •1.3.4. Рабочая область
- •1.3.5. Строка состояния
- •1.4. Справочная информация
- •2. Редактирование документов
- •2.1. Работа с документами
- •2.1.1. Управление документами
- •2.1.2. Создание документа на основе шаблона
- •2.1.3. Сохранение документа
- •2.1.4. Открытие существующего документа
- •2.1.5. Закрытие документа
- •2.2. Ввод и редактирование формул
- •2.2.1. Элементы интерфейса
- •2.2.2. Ввод формул
- •2.2.3. Перемещение линий ввода внутри формул
- •2.2.4. Изменение формул
- •2.2.5. Ввод символов, операторов и функций
- •2.2.6. Управление отображением некоторых операторов
- •2.3. Ввод и редактирование текста
- •2.3.1. Ввод текста
- •2.3.2. Редактирование текста
- •2.3.3. Импорт текста
- •2.3.4. Математические символы внутри текста
- •2.3.5. Гиперссылки
- •2.4. Правка документа
- •2.5. Печать документа
- •2.6. Посылка документа по электронной почте
- •Лекция 2. Автоматизация вычислений в MathCad. Типы данных
- •3.1. Переменные и функции
- •3.1.1. Определение переменных
- •3.1.3. Функции
- •3.1.4. Определение функции пользователя
- •3.1.5. Вывод значений переменных и функций
- •3.1.6. Символьный вывод
- •3.1.7. Допустимые имена переменных и функций
- •3.2. Операторы
- •3.2.1. Арифметические операторы
- •3.2.2. Вычислительные операторы
- •3.2.3. Логические операторы
- •3.2.4. Матричные операторы
- •3.2.5. Операторы выражения
- •3.2.6. Создание оператора пользователя
- •3.3. Управление вычислениями
- •3.3.1. Режимы вычислений
- •3.3.2. Прерывание вычислений
- •3.3.3. Вычисления в ручном режиме
- •3.3.4. Отключение вычисления отдельных формул
- •3.3.5. Оптимизация вычислений
- •3.3.6. Диалоговое окно Worksheet Options
- •3.4. Сообщения об ошибках
- •4. Типы данных
- •4.1. Типы данных
- •4.1.1. Действительные числа
- •4.1.2. Комплексные числа
- •4.1.3. Встроенные константы
- •4.1.4. Строковые выражения
- •4.2. Размерные переменные
- •4.2.1. Создание размерной переменной
- •4.2.2. Работа с размерными переменными
- •4.2.3. Выбор системы единиц
- •4.2.4. Определение новой размерности
- •4.3. Массивы
- •4.3.1. Доступ к элементам массива
- •4.3.2. Ранжированные переменные
- •4.3.3. Создание массивов
- •4.3.4. Отображение вывода векторов и матриц
- •4.4. Формат вывода числовых данных
- •4.4.1. Формат результата
- •4.4.2. Округление малых чисел до нуля
- •4.4.3. Вывод чисел в других системах счисления
- •4.5. Элементы управления (controls)
- •Лекция 3. Символьные вычисления. Интегрирование и дифференцирование. Алгебраические уравнения и оптимизация.
- •5. Символьные вычисления
- •5.1. Способы символьных вычислений
- •5.2. Символьная алгебра
- •5.2.1. Упрощение выражений (Simplify)
- •5.2.2. Разложение выражений (Expand)
- •5.2.3. Разложение на множители (Factor)
- •5.2.4. Приведение подобных слагаемых (Collect)
- •5.2.5. Коэффициенты полинома (Polynomial Coefficients)
- •5.2.6. Ряды и произведения
- •5.2.7. Разложение на элементарные дроби (Convert to Partial Fractions)
- •5.2.8. Подстановка переменной (Substitute)
- •5.2.9. Матричная алгебра
- •5.3. Математический анализ
- •5.3.1. Дифференцирование (Differentiate)
- •5.3.2. Интегрирование (Integrate)
- •5.3.3. Разложение в ряд (Expand to Series)
- •5.3.4. Решение уравнений (Solve)
- •5.4. Интегральные преобразования
- •5.4.1. Преобразование Фурье (Fourier)
- •5.4.2. Преобразование Лапласа (Laplace)
- •5.5. Дополнительные возможности символьного процессора
- •5.5.1. Применение функций пользователя
- •5.5.2. Получение численного значения выражения
- •5.5.3. Последовательности символьных команд
- •7. Интегрирование и дифференцирование
- •7.1. Интегрирование
- •7.1.1. Операторы интегрирования
- •7.1.2. Об алгоритмах интегрирования
- •7.1.3. 0 Расходящихся интегралах
- •7.1.4. Кратные интегралы
- •7.2. Дифференцирование
- •7.2.1. Первая производная
- •7.2.2. Производные высших порядков
- •7.2.3. Частные производные
- •8. Алгебраические уравнения и оптимизация
- •8.1. Одно уравнение с одним неизвестным
- •8.2. Корни полинома
- •8.3. Системы уравнений
- •8.4. О численных методах решения систем уравнений
- •8.5. Приближенное решение уравнений
- •8.6. Поиск экстремума функции
- •8.6.1. Экстремум функции одной переменной
- •8.6.2. Условный экстремум
- •8.6.3. Экстремум функции многих переменных
- •8.6.4. Линейное программирование
- •8.7. Символьное решение уравнений
- •Лекция 4. Матричные вычисления. Математическая статистика. Обработка данных.
- •9. Матричные вычисления
- •9.1. Простейшие операции с матрицами
- •9.1.1. Транспортирование
- •9.1.2. Сложение
- •9.1.3. Умножение
- •9.1.4. Определитель квадратной матрицы
- •9.1.5. Модуль вектора
- •9.1.6. Скалярное произведение векторов
- •9.1.7. Векторное произведение
- •9.1.8. Сумма элементов вектора и след матрицы
- •9.1.9. Обратная матрица
- •9.1.10. Возведение матрицы в степень
- •9.1.11. Векторизация массивов
- •9.1.12. Символьные операции с матрицами
- •9.2. Матричные функции
- •9.2.1. Функции создания матриц
- •9.2.2. Слияние и разбиение матриц
- •9.2.3. Вывод размера матриц
- •9.2.4. Сортировка матриц
- •9.2.7. Ранг матрицы
- •9.3. Системы линейных алгебраических уравнений
- •14. Математическая статистика
- •14.1. Случайные величины
- •14.1.1. Нормальное (Гауссово) распределение
- •14.1.2. Равномерное распределение
- •14.1.3. Биномиальное распределение
- •14.1.4. Другие статистические распределения
- •14.2. Статистические характеристики
- •14.2.1. Построение гистограмм
- •14.2.3. Генерация коррелированных случайных чисел
- •14.2.4. Ковариация и корреляция
- •14.2.5. Коэффициенты асимметрии и эксцесса
- •14.2.6. Другие статистические характеристики
- •14.2.7. Действие статистических функций на матрицы
- •14.3. Случайные процессы
- •14.4. Некоторые примеры
- •14.4.1. Интервальная оценка дисперсии
- •14.4.2. Проверка статистических гипотез
- •15. Обработка данных
- •15.1. Интерполяция
- •15.1.1. Линейная интерполяция
- •15.1.2. Кубическая сплайн-интерполяция
- •15.1.3. Полиномиальная сплайн-интерполяция
- •15.1.4. Экстраполяция функцией предсказания
- •15.1.5. Многомерная интерполяция
- •15.2. Регрессия
- •15.2.1. Линейная регрессия
- •15.2.2. Полиномиальная регрессия
- •15.2.3. Регрессия специального вида
- •15.2.4. Регрессия общего вида
- •15.3. Сглаживание и фильтрация
- •15.3.1. Встроенные функции для сглаживания
- •15.3.2. Скользящее усреднение
- •15.3.3. Устранение тренда
- •15.3.4. Полосовая фильтрация
- •Лекция 5. Числовой ввод-вывод данных. Создание двух- и трехмерных графиков.
- •16.1. Числовой ввод-вывод
- •16.2. Создание графиков
- •16.3. Двумерные графики
- •16.3.4. Полярный график
- •16.3.5. Построение нескольких рядов данных
- •16.3.6. Форматирование осей
- •16.3.7. Форматирование рядов данных
- •16.3.9. Изменение размера и положения графиков
- •16.3.10. Трассировка и увеличение графиков
- •16.4. Трехмерные графики
- •16.4.2. Форматирование трехмерных графиков
- •16.5. Создание анимации
- •16.6. Ввод-вывод во внешние файлы
- •16.6.1. Текстовые файлы
- •16.6.2. Графические файлы
- •16.6.3. Звуковые файлы
- •Литература:
7.2. Дифференцирование
С помощью Mathcad можно вычислять производные скалярных функций любого количества аргументов, от 0-го до 5-го порядка включительно. И функции, и аргументы могут быть как действительными, так и комплексными. Невозможно дифференцирование функций только вблизи точек их сингулярности.
Вычислительный процессор Mathcad обеспечивает превосходную точность численного дифференцирования. Но больше всего пользователь оценит возможности символьного процессора, который позволяет с легкостью осуществить рутинную работу вычисления производных громоздких функций, поскольку, в отличие от всех других операций, символьное дифференцирование выполняется успешно для подавляющего большинства аналитически заданных функций.
В Mathcad для ускорения и повышения точности численного дифференцирования функций, заданных аналитически, автоматически задействуется символьный процессор.
7.2.1. Первая производная
Для того чтобы продифференцировать функцию f (х) в некоторой точке:
Определите точку х, в которой будет вычислена производная, например х:=1.
Введите оператор дифференцирования нажатием кнопки Derivative (Производная) на панели Calculus (Вычисления) или введите с клавиатуры вопросительный знак <?>.
В появившихся местозаполнителях (рис. 7.3) введите функцию, зависящую от аргумента х, т. е. f(х), и имя самого аргумента х.
Введите оператор <=> численного или < -> > символьного вывода для получения ответа.
Рис. 7.3. Оператор дифференцирования
Пример дифференцирования функции f(x)=cos(x)*ln(x) приведен в листинге 7.10.
Листинг 7.10. Численное и символьное дифференцирование
Не забывайте предварительно определять точку, в которой производится численное дифференцирование, как это сделано в первой строке листинга 7.10. Иначе будет выдано сообщение об ошибке, показанное на рис. 7.4, гласящее, что переменная или функция, входящая в выражение, ранее не определена. Между тем, символьное дифференцирование не требует обязательного явного задания точки дифференцирования В этом случае вместо значения производной (числа или числового выражения) будет выдана аналитическая зависимость (см. верхнюю часть рис. 7.4).
Рис. 7.4. Ошибка в применении оператора дифференцирования
Конечно, можно, как и при использовании других операторов, предварительно определить функцию в отдельном выражении, а затем посчитать ее производную (см. листинг 7.11); или применить оператор дифференцирования для определения собственных функций пользователя (см. листинг 7.12).
Листинг 7.11. Символьное и численное дифференцирование функции пользователя
Листинг 7.12. Определение функции через оператор дифференцирования
В обоих листингах первой строкой определяется функция f (x)=1/x. Во второй строке листинга 7.11 с помощью символьного процессора находится аналитическое выражение ее производной, а в оставшейся части, подобно листингу 7.10, сначала численно, а затем аналитически определяются значения этой производной в точке х=0.1. В листинге 7.12 через производную от f (х) определяется еще одна пользовательская функция д(х) и затем находится ее конкретное значение в той же точке х=0.1.
Как Вы заметили, оператор дифференцирования, в основном, соответствует его общепринятому математическому обозначению. Однако в некоторых случаях при его вводе следует проявить осторожность. Рассмотрим один показательный пример, приведенный в листинге 7.13. Его первые две строки вычисляют производную sin(x) в точке х=0.5. Последняя строка демонстрирует неправильное применение оператора дифференцирования. Вместо вычисления производной sin(x) в той же точке, как этого можно было ожидать, получено нулевое значение. Это случилось потому, что аргумент функции sin(x) введен не в виде переменной х, а в виде числа. Поэтому Mathcad воспринимает последнюю строку как вычисление сначала значения синуса в точке х=0.5, а затем дифференцирование этого значения (т. е. константы) также в точке х=0.5, в соответствии с требованием первой строки листинга. Поэтому ответ, на самом деле, неудивителен — в какой точке ни дифференцируй константу, результатом будет ноль.
Листинг 7.1З. Пример правильного и неправильного применения дифференцирования
Для численного дифференцирования Mathcad применяет довольно сложный алгоритм, вычисляющий производную с колоссальной точностью до 7-8-го знака после запятой. Этот алгоритм (метод Риддера) описан во встроенной справочной системе Mathcad, доступной через меню Help (Справка). Погрешность дифференцирования не зависит от констант TOL или CTOL, в противоположность большинству остальных численных методов, а определяется непосредственно алгоритмом.
Исключение составляют функции, которые дифференцируются в окрестности сингулярной точки; например для рассмотренной нами функции f (x)=1/x это будут точки вблизи х=о. При попытке найти ее производную при х=о будет выдано сообщение об одной из ошибок деления на ноль "Can't divide by zero" (Деление на ноль невозможно) или "Found a singularity while evaluating this expression. You may be dividing by zero" (Найдена сингулярность при вычислении этого выражения. Возможно, Вы делите на ноль). Если попробовать численно определить производную очень близко к нулю, например, при х=10-100, то может появиться сообщение об ошибке "Can't converge to a solution" (Невозможно найти решение). Встретившись с одной из упомянутых ошибок, присмотритесь повнимательнее к дифференцируемой функции и убедитесь, что Вы не имеете дело с точкой сингулярности.
