Основные понятия теории моделирования

advertisement
. Основные понятия теории моделирования
Термины
Объект - все то, на что направлена человеческая деятельность.
Гипотеза - предсказание о свойствах объекта основанное на неполных данных.
Аналогия - суждение о каком-либо частном сходстве объектов. Аналогия связывает гипотезу с
экспериментом.
Модель - объект-заместитель объекта, обеспечивающий изучение некоторых свойств
оригинала. Модель обеспечивает наглядность исследования объекта- оригинала.
Модель - логическая схема, упрощающая рассуждения и логические построения,
позволяющие проводить эксперименты, и уточняющая природу явлений.
Моделирование - замещение одного объекта другим с целью получения информации о
важнейших свойствах объекта - оригинала с помощью объекта-модели (далее по тексту для
упрощения заменяем объект-оригинал на объект, объект-модель на модель).
Адекватность модели объекту - совпадение результатов моделирования и результатов
экспериментов с объектом.
При моделировании сложных объектов (систем) рассматривают: макромоделирование моделирование системы в целом на уровне подсистем; микромоделирование - моделирование систем
или подсистем на уровне элементов.
1.2. Средства моделирования
Аналитический метод - вычисление параметров модели по аналитическим
зависимостям.
Имитационный метод - вычисление параметров модели по логической схеме
совокупности аналитических зависимостей.
Вычислительная техника - основное средство реализации методов моделирования.
Аналоговый (непрерывный) сигнал может принимать произвольные значения в
произвольные моменты времени.
Цифровой (дискретный) сигнал может принимать значения только из
определенного набора значений в определенные моменты времени.
Сравнительная характеристика ЭВМ различных классов приведена в таблице 1.
Таблица 1 - Качественные параметры различных компьютеров
Компьютер
Параметры
Анал
оговый
Цифровой
Аналогоцифровой
Форма сигналов
Анал
оговая
Цифровая
Аналоговая и
цифровая
Быстродействие
Боль
шое
Среднее
Среднее
Точность
Низк
ая
Высокая
Высокая
Ручн
ая
Автоматизир
ованная
Автоматизиров
анная
Цифровой
Аналоговый и
цифровой
Технология
программирования
Тип устройств, с
которыми совместим
компьютер
Анал
оговый
1.3. Классификация моделей
Модели могут быть относительно полными и неполными. Теория подобия утверждает, что
абсолютное подобие может иметь место лишь при замене объекта точно таким же. Но тогда теряется
смысл моделирования.
Полная модель характеризует все основные свойства объекта во времени и в пространстве.
Неполная модель характеризует ограниченную часть свойств объекта.
Систематизация моделей приведена в таблице 2.
Таблица 2 - Модели систем
Модели систем
Детерминир
ованная
Стохастичес
кая
Статическая
Динамическ
ая
Цифровая
(Дискретная)
Мысленная
Наглядная
Символьная
Математическая
Аналоговая
(Непрерывная)
Реальная
Натуральная
Искусственная
1.4. Имитационное моделирование
При конструировании модели любого физического объекта в начале
разрабатывается его физическая модель, в которой описывается принцип действия. Затем
разрабатывается математическая модель, в которой устанавливаются количественные
зависимости между входными и выходными параметрами объекта. На основе
математической модели разрабатывается вычислительная модель, представляющая собой
программу для ЭВМ. Имея вычислительную модель, можно проводить вычислительный
эксперимент - исследование характеристик объекта путём многократного выполнения
программы вычислительной модели при разных исходных данных.
Если движение и преобразование информации в рамках вычислительной модели
имитирует физические процессы в объекте моделирования, то вычислительный
эксперимент называется имитационным моделированием.
Итерационный процесс разработки моделирования отражён на рисунке. Если
результаты вычислительного эксперимента радикально не согласуются с результатами
физического эксперимента, то выдвигается новая гипотеза физической модели. Если
результаты вычислительного эксперимента согласуются с результатами физического
эксперимента, но погрешность превышает допустимые нормы, то корректируется
математическая модель. Если же процесс моделирования недостаточно робастный и
требует от пользователя много трудовых затрат, а от ЭВМ - больших ресурсов, то
требуется корректировка вычислительной модели.
При работе с моделью проектировщик задает как входные воздействия, так и
внутренние параметры системы, определяющие преобразовательные свойства последней.
Процесс анализа некоторой системы с помощью вычислительной модели показан
на рисунке 3.
Математически этот процесс можно представить в виде выражения: Y =F{X}
где Х - вектор входных воздействий, т. е. набор числовых значений различных
параметров сигналов, поступающих на вход системы;
Y - вектор отклика системы, т.е. набор числовых значений, характеризующих
реакцию системы на заданные входные воздействия;
F - обобщённый оператор, характеризующий процессы преобразования
информации в модели.
3. Оптимизация
3.1. Основные понятия
Оптимизация - поиск наилучшего решения с учетом ограничений.
Для оптимизации ищется целевая функция. Эта функция конструируется
искусственно на основе уравнений, описывающих объект оптимизации. Целевая функция
обычно имеет много аргументов: φ=f (х1, х2, ..., х n).
Чтобы найти оптимальное значение, перебирают значение аргументов хi пошагово
до тех пор, пока значение φ станет удовлетворять условиям оптимума. Даже количество
аргументов не более трех, "тупой" перебор может потребить очень много времени.
Поэтому разработаны десятки методов оптимизации:
- первый строгий математический метод предложил в 1840г. венгерский математик
Коши - МСС - метод скорейшего спуска. При формулировании задач оптимизации
обычно стараются ее свести к поиску минимума. МСС относится к классу градиентных
методов.
Градиент - вектор, указывающий на направление максимального возрастания
функции.
Антиградиент - вектор, указывающий на направление максимального убывания
функции. Чтобы повернуть вектор на 180╟, достаточно изменить все знаки у градиентов
на противоположные (т.е. х (-1)).
Для иллюстрации поиска экстремума в процессе оптимизации функций двух
переменных используют линии равного уровня (ЛРУ). Если задаться постоянным
значением φ и так подбирать значения хi чтобы значение φ было равным заданному
значению, то геометрическое место точек φ составит линию равного уровня.
В зависимости от целевой функции линий равного уровня могут характеризоваться
следующими географическими понятиями:
Долина - когда соседние линии равного уровня изменяется очень слабо в широком
диапазоне аргументов.
Возвышенность - когда соседние линии равного уровня представляют собой
замкнутые линии и значение φ возрастает от внешних линий к внутренним.
Впадина - когда соседние линии равного уровня представляют собой замкнутые
линии, и значение φ убывает от внешних линий к внутренним.
Седловина - локальный минимум, в центре которого векторы указывают на
возрастание функции, но вскоре направление вектора резко изменяется вверх или вниз.
МСС - простейший метод оптимизации, пригодный для сложных систем. Работа
метода хорошо иллюстрируется с помощью линий равного уровня (ЛРУ).
Порядок поиска оптимума:
- выбирается исходная точка в виде значений параметров целевой функции:
φ=f (х1, х2, ..., х n).
- ищется градиент;
- движемся в направлении антиградиента с заданным шагом;
- на каждом шаге проверяем выполнение условия движения, оно такое: φi < φi-1 (
текущее значение φ должно быть меньше предыдущего).
- если условие движения нарушается, то процесс останавливается, иначе, движение
продолжается;
- при нарушении условий движения уточняется одномерный минимум и ищется
новый градиент;
- условие останова:
а) значение φ меньше заданного;
б) разность значений соседних φ меньше заданной;
в) количество шагов превышает допустимое.
- если после останова минимума не удовлетворяет требованиям, то либо ищется
другая исходная точка и процесс повторяется, либо выбирается другой метод
оптимизации.
3.3. Многомерный и одномерный поиск
МСС представляет собой многомерный поиск, т.к. минимум ищется на разных
направлениях. Когда минимум ищется только в одном направлении для уточнения
направления следующего уровня - одномерный поиск.
Одномерный поиск
Для многомерного поиска разработаны десятки методов, для одного поиска около 1
десятка методов. Рассмотрим одномерное приближение.
Метод последовательных приближений
P - длина шага оптимизации;
φ - значение целевой функции
1. при нарушении условий движения (φi+1 > φi) движение останавливается
2. Возвращается на 1 шаг назад.
3. Делим длину шага на R где R = 3-10
4. Возобновляем движение с новым шагом.
5. При нарушении условий движения все повторяется, и т.д.
Условия останова:
- Значение j < заданного
- Разность между соседними значениями j < заданной
- Длина шага < заданной
- Кол-во шагов превышает заданное.
Любое из этих условий приводит к останову.
Метод золотого сечения
Если возьмем пропорцию:
x1/x = x2/x1 = 0.618 ; - mo -точность
Такое соотношение называется золотой пропорцией.
1. При нарушении условий движения последний шаг делим в отношении золотой
пропорции слева на право.
2. Этот же отрезок делим в золотой пропорции справа на лево. В результате
получим 2 новые точки
3. Сравниваем значения j в новых точках.
4. Выбираем отрезок, которому соответствует меньшее из этих двух j.
5. Полученный отрезок делим в отношении золотой пропорции слева направо, и
т.д.
Условия останова те же, что и в предыдущем случае.
Метод параболической аппроксимации (МПА)
При нарушении условий значения j в последних 3-х точках подставляется в формулу
решения системы 3-х уравнений для параболы. Это решение позволяет находить
координаты минимума параболы, проходящий через 3 последние точки. Уравнение
параболы y  L2 ( x) , проходящей через три точки:
Сравнение методов одномерного поиска
МПП более прост (движемся, делим), но требует много шагов (м.б. 10 и 100
шагов).
МЗС позволяет найти min за 3-4 шага.
МПА более сложен, но позволяет найти min за 1 шаг. Но МПА обладает
методической погрешностью, поскольку парабола отличается от истинной кривой;
обычно эта погрешность невелика. В пакетах программ для расчета оптики обычно
используется в качестве метода многомерного поиска демнорированый МСС, а в качестве
метода одномерного поиска - МПА.
МЕТОДЫ РЕШЕНИЯ ЗАДАЧ НЕЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Нелинейное
программирование
является
разделом
математического
программирования. Задача математического программирования, как известно,
заключается в поиске экстремума функции F(X) на допустимом множестве решений,
определяемом ограничениями G(X)
F(X) = extr, G(X) ≥ 0 , (2-1)
где X=(x1,x2,..,xn) – вектор переменных задачи, G(X)={g1(X),...gm(X)} – векторфункция ограничений.
Если F(X) и G(X) линейны, то сформулированная задача относится к линейному
программированию. В противном случае, когда F(X) или G(X), или обе функции
нелинейны, имеем задачу нелинейного программирования.
В нелинейном программировании возможны весьма различные и далеко
неоднозначные ситуации, что вызывает необходимость разработки различных методов,
каждый из которых ориентирован на определенный тип задач. Это обстоятельство
затрудняет широкое применение нелинейных моделей в практике поиска оптимальных
решений.
В предлагаемой лабораторной работе рассматриваются основные методы
нелинейного программирования.
При изложении методов изображения n-мерных функций F(X) будет ограничено
двумерным случаем, поскольку n=2 уже "много", и в то же время допустимая область –
часть плоскости, а F(X) представима в виде нелинейной поверхности.
На рис.2.1 показано объемное изображение функции F(X)=10-(х1-2)2-(х2- 2)2 в
области, определяемой ограничениями 0 ≤ х1 ≤ 4, 0 ≤ х2 ≤ 4. Объемное изображение
предельно наглядно, но в дальнейшем удобнее все-таки пользоваться плоским, на котором
поверхность, как на географической карте, изображаeтся линиями равного уровня F(X)=
const. Здесь же представлены две возможные траектории поиска экстремума.
Рис. 2.1
2.1.Методы возможных направлений.
Рассмотрим простейшую задачу, в которой на вектор X не накладываются
ограничения:
F(Х)= min , где Х = (х1, х2, ... ,хn). (2-2)
Будем полагать, что F(Х)- унимодальна, т.е. имеет oдин экстремум. Любой
численный метод, как правило итерационный, начинается с задания исходного
приближения Хo=(х1o, х2o, ... , хno).
Суть каждого метода определяется способом вычисления очередного приближения
X1 = Xo + S(Xo)* t , (2-3)
где S(Xo)– направление изменения вектора Х в исходной точке,
t – постоянная, называемая шагом.
Группа численных методов, где вектор S направлен в сторону экстремума,
называют методами возможных направлений (МВН).
На рис.2.2 показаны несколько таких направлений:
Рис. 2.2
1,2–определяются изменением только одной координаты,
3–перпендикулярно линии F(Х)=const и ведет к наибольшему снижению F, т.е.
является наилучшим из всех,
4,5-недопустимые направления.
Основное уравнение метода возможных направлений
Xk+1 = Xk + S(Xk) * t, (2-4)
где k – номер итерации.
Блок-схема алгоритма МВН показана на рис. 2.3.
Сходимость процесса во многом определяется выбором величины шага t.
Рассмотрим процесс поиска минимума функции только одной переменной
F(X)= 9 – 4*X + 0.5*X2 = min
при различных значениях шага t.
Исходное приближение Xo= 7.
Примем в качестве возможного направления S= – dF/dX = X – 4.
Рис. 2.3
Основное уравнение МВН:
X k+1 = Xk - ( Xk - 4)*t .
При изменении t от 0.5 до 2.1 можно наблюдать все возможные виды
итерационного
процесса
(апериодический,
колебательный,
зацикливание
и
расходящийся). Здесь можно найти зависимость F(t), если выражение X(t) подставить в
F(X) и определить затем шаг, который обеспечивает минимум целевой функции на
рассматриваемом направлении. Такой шаг называют оптимальным.
Критерием окончания итерационного процесса может служить одно из условий: ∆F
= F(Xk+1 ) – F(Xk) < eps или abs( dF/dX ) < eps , где eps - точность решения. Величина eps
влияет на число итераций k. При решении практических задач оптимизации, когда
математическая модель имеет методические погрешности, а исходные данные, часто
получаемые на основе прогнозирования, недостаточно достоверны, стремление получить
высокую точность решения вряд ли можно считать оправданным. Величина eps должна
выбираться разумно в соответствии с точностью модели. В этой ситуации речь может
идти о поиске некоторой зоны вероятно-оптимальных решений.
2.2. Выбор оптимального шага.
Рассмотрим задачу F(X)=min. Произвольно выберем исходную точку Xo, в которой
F(Xo)=Fo, и возможное направления So. При изменении t на этом направлении
X(t)=Xo+So*t. Если удается найти функцию F(t), то наилучший шаг tопт можно определить
из уравнения dF/dt=0.
Однако, довольно часто F(X), а значит и F(t), аналитически не представимы и
функциональная зависимость F(t) находится только путем сложных расчетов. Например,
потери в электрической сети в функции от реактивной мощности источника ∆P=F(Q)
можно найти только путем итерационного расчета режима сети. В таких ситуациях F(t) на
выбранном
направлении
апроксимируют
многочленом
второго
порядка
F(t)=Ao+A1*t+A2*t2 . Коэффициенты Ao, A1, A2 находят путем вычисления F в трех
точках при t=0, t=1 и t=2. Для этого в конце каждого шага t на направлении Sо находят
вектор Х, а затем расчетом и F:
t=0, X=Xo, F(X)=Fo,
t=1, X=Xo+So*1, F(X)= F1,
t=2, X=Xo+So*2, F(X)= F2 .
C другой стороны по F(t) для тех же значений шага t можно записать
t=0,Ao=Fo,
t=1, Ao+A1+A2=F1,
t=2 , Ao+2A1+4A2= F2.
Решение этой системы линейных алгебраических уравнений
Ao=Fo, A1=(4F1-3Fo-F2)/2 , A2=(F2-2F1+ Fo)/2.
Оптимальный шаг , найденный из условия F(t)=min,
2.3.Методы безусловной оптимизации.
Изучение алгоритмов и методов возможных направлений начнем с задачи
безусловной оптимизации:
F(X)=min , где X =(x1, x2, ... , xn).
Все методы можно разделить на три группы в зависимости от способа анализа
целевой функции при выборе возможного направления и шага:
1. Методы нулевого порядка, основанные только на вычислении F(X).
2. Методы первого порядка, использующие производные dF/dX.
3. Методы второго порядка, в которых используются вторые производные от F(X).
2.3.1.Метод случайного поиска.
В этом методе направление поиска определяется с помощью программного
генератора псевдослучайных чисел с равномерным законом распределения.
Вокруг исходной Xo или текущей точки Xk рассматривается многогранник с ребром
dX. Значение F(Xk) определяется расчетом. Случайно выбранная точка Xk+1 внутри
многогранника с вероятностью примерно 0.5 будет определять возможное напpавление,
что проверяется путем вычисления F(Xk+1) и сравнения с F(Xk). Если точка Xk+1 дальше от
экстремума, то проводится инверсия координат относительно Xk. По мере приближения к
экстремуму ребро dX уменьшается.
Достоинство метода – простой алгоритм. Недостаток – большое число итераций.
2.3.2.Метод деформируемого многогранника.
В этом методе в исходной точке Xo строится произвольный многогранник,
имеющий n+1 вершину, включая и Xo. Это может быть и равносторонний многогранник,
относительные координаты вершин которого определяются матрицей D размером n*(n+1):
Рис. 2.4
В каждой из вершин многогранника вычисляется F(Х) и ищется вершина h, где
целевая функция F(X) максимальна (рис.2.4). Затем находят координаты центра
усеченного многогранника без этой вершины:
,(2-6)
и организуют перемещаются точки h по линии hc в новую вершину e, координаты
которой:
где t > 0.
Для полученного многогранника расчет повторяется. По мере приближения к
минимуму может оказаться, что F(Xe)>F(Xh). В этом случае размер многогранника с
вершиной, где функция минимальна, уменьшается в 2 раза. Для улучшения сходимости на
отдельных этапах поиска применяется также растяжение и сжатие многогранника.
Критерием окончания может служить сжатие его до определенного небольшого
размера, определяемого необходимой точностью решения.
2.3.3.Метод покоординатного спуска.
Рассмотрим задачу F(X)=min , X=(X1,X2, ... ,Xn ). В этом методе возможное
направление выбирается на каждом i-ом шаге по орту Ei составляющей Xi вектора Х, т.е.
Xi = Xio + Ei*t = Xio + 1*t.
Оптимизация начинается c составляющей X1 при неизменных значениях остальных
Xj=Xjo. Поиск F(Xi)=min на шаге может осуществляться любым известным методом
одномерной оптимизации. Критерием окончания может служить приращение F(Xi)F(Xio)< eps. Оптимизацией n-й составляющей завершается первый цикл и переходят к
следующему.
Алгоритм поиска решения приведен на рис.2.5. Метод чрезвычайно прост, но
имеет плохую сходимость для "овражных" функций.
Рис.2.5
2.3.4.Градиентный метод.
Вновь рассматриваем задачу F(X) = min, где X=(x1,x2,...,xn), а исходное
приближение Xo.
В градиентном методе возможное направление определяется по градиенту dF(Xo),
что равносильно линейной апрокcимации F(X) в текущей точке.
Составляющие градиента, как известно, определяются частными производными
каждая из которых пропорциональна tg(a) наклона касательной в текущей точке.
Составляющие могут быть найдены через конечные приращения
Такое определение градиента требует вычисления на каждом шаге целевой
функции в n+1 точке и сопряжено с погрешностью.
Для повышения точности при определении составляющих градиента может
использоваться формула центрированных разностей
Основное уравнение градиентного метода при минимизации F(X):
Xk+1 = Xk F(Xk)*t.
Критерий окончания итерационного процесса | ÑF | < eps.
В этом методе для ускорения сходимости при выборе оптимального шага t могут
использоваться составляющие градиента. Действительно, в исходной точке Xo на
направлении –ÑF(Xo) составляющие вектора X и функция F(X) зависят только от t :
X = Xo - ÑF(Xo)*t,
F(X) = F(Xo F(Xo)*t) = f(t) .
В точке Xo, т.е. при t=0, производную df/dt можно определить как скалярное
произведение.
Рис. 2.6
Зависимость df/dt от шага t неизвестна, как и точка перехода ее через 0,
определяющая tопт. Для того, чтобы оценить тенденцию изменения, делается пробный шаг
to и определяется df/dt в конце его (рис 2.7 ):
Зависимость df/dt аппроксимируем прямой линией и из подобия треугольников
найдем шаг t*, который близок к оптимальному:
Метод имеет хорошую
оптимизации.
сходимость и широко используется
в практике
2.3.5.Метод Ньютона.
Метод Ньютона относится к методам второго порядка, в которых F(X) в текущей
точке X апроксимируется квадратичной функцией - разложением в ряд Тейлора
Минимум F(X) по X определяется условием равенства нулю производной, что
позволяет найти приращение
где G(Xo)- матрица Гессе вторых частных
симметричная.
Таким образом, основное уравнение метода Ньютона
производных,
квадратная,
Здесь направление и величина шага точно определены и ведут в точку минимума
функции второго порядка, которой заменяется исходная функция в текущей точке. При
этом осуществляется переход в центр эллипсоида, построенного в точке Хk. Если F(X)квадратичная функция, то минимум достигается всего за один шаг.
Метод имеет наилучшую сходимость, но требует больших вычислений по
обращению матрицы Гессе.
Динамическое программирование.
В задачах линейного и нелинейного программирования рассматриваются как
правило независимые от времени процессы. Такие статические задачи называют
одношаговыми или одноэтапными.
Динамическое программирование является своеобразным математическим методом
оптимизации многошаговых процессов. Разбиение на шаги может быть естественным, а
иногда и искусственным.
Для иллюстрации идеи динамического программирования рассмотрим
сравнительно простую задачу, в которой требуется определить наилучший режим подъема
параметров пара парогенератора.
Начальное состояние So определяется давлением Рo и температурой to, конечное –
Sk, соответственно, Рk и tk. Известны расходы топлива при подъеме только давления или
только температуры. Критерием оптимизации является минимум расхода топлива на
перевод системы из состояния So в состояние Sk. В этой задаче разделение на шаги
проводится искусственно. Разобьем отрезок давления на три части, а диапазон температур
на четыре части (рис.3.1.а)
а)
б)
Рис.3.1. Пример оптимизации режима работы генератора ЭС с помощью методов
динамического программирования.
Таким образом для перехода из So в Sk требуется пройти N=7 шагов, на каждом из
которых можно повышать только один параметр пара: давление P или температуру t.
Возможные состояния Si в конце каждого i-го шага отмечены кружками. Между ними
показаны затраты топлива, необходимого для реализации соответствующего перехода.
Оптимизацию начнем с последнего шага. В конце предыдущего шага возможны
два состояния S6, для каждого из которых управление, приводящее в Sk, выбирается
однозначно: увеличение t, требующее 13 условных единиц (у.е.) топлива, или подъем
давления P с расходом 10 у.е. Для каждого состояния запоминаются управления
(отмечены стрелкой) и условно-оптимальные затраты топлива (занесены в кружок).
Затем переходим к следующему шагу и рассматриваем все возможные состояния S5
в начале его. Для средней точки возможны два управления:
1) Подъем t с затратами на этапе в 9 у.е. и общими на двух этапах В=9+10=19 у.е.
2) Подъем Р с затратами на этапе в 10 у.е. и общими В=10+13=23 у.е.
Из этих управлений выбирается лучшее и запоминается. Аналогично
рассматривается 5-й этап. При этом условно-оптимальные затраты определяются для
каждого возможного состояния по минимуму затрат на рассматриваемом этапе и на всех
последующих.
Продолжая процесс для оставшихся шагов приходим, наконец, в состояние So.
Выбрав на 1-м шаге оптимальное управление, определяем и минимальный расход топлива
Вo=52 у.е.
На этом этап условной оптимизации заканчивается. Затем обратным ходом,
извлекая из памяти оптимальные управления для каждого состояния, находим
оптимальную траекторию подъема параметров пара (см. рис.3.1б).
В предложенной схеме решения задачи на каждом шаге ищется такое управление,
которое обеспечивает оптимальное продолжение процесса относительно
рассматриваемого в начале шага состояния. Этот принцип выбора оптимального
управления предложен американским математиком Беллманом и называется принципом
оптимальности динамического программирования.
Рассмотрим систему, состояние которой характеризуется двумя какими-либо
параметрами. Процесс условной оптимизации проводим, начиная с последнего шага
(рис.3.2).
Рис.3.2 Процесс условной оптимизации
Введем следующие обозначения:
So –исходное состояниее,
Sk – конечное состояние,
S– состояние в начале i-го шага,
S’– состояние в конце i-го шага,
Ui – управление,
Wi(S) – условно оптимальная эффективность на всех шагах, начиная с i-го, при
условии, что система находится в состоянии S.
Ui(S) – условно оптимальное управление на i-ом шаге, совместно с Ui+1,..,Un
формирующее вектор оптимального управления.
Cвойства системы определяют характер зависимости эффекта на шаге wi(S,Ui) и
состояния в конце шага S’=f(S,Ui) как функции только S и управления Ui.
Мера эффективности на всех шагах от i-го до последнего при любом управлении Ui
на i-м шаге и фиксированном состоянии S зависит лишь от Ui
(3-1)
В соответствии с принципом оптимальности управление выбирается так, чтобы
обеспечить
(3-2)
Это и есть основное функциональное уравнение динамического программирования.
Конкретный вид функций wi(S,Ui) и S"=f(S,Ui) определяется свойствами
оптимизируемой системы. Функции могут быть заданы аналитически, в виде таблиц, как
результат достаточно сложных расчетов и т.п. Однако, независимо от этого, алгоритм
динамического программирования остается неизменным и включает следующие пункты:
1. Выбор параметров, характеризующих состояние системы и управление, и
определение способa разбиения на шаги.
2. Определение характера вычисления состояния S" в конце i-го шага S"=f(S,Ui).
3. Определение способа вычисления критерия на i-м шаге wi(S,Ui).
4. Формирование основного функционального уравнения.
5. Определение условной оптимальной эффективности на последнем шаге
для тех управлений, которые приводят в состояние Sk, и условнооптимального управления Un(S).
6. Зная Wn(S) и пользуясь уравнением динамического программирования
осуществляется поиск один за другим условно-оптимальных критериев на шагах Wn(S),
Wn-1(S), ... , W1(S) и соответствующих им условно-оптимальных управлений Un(S), Un-1(S),
... , U1(S).
7. Определение для заданного начального состояния So оптимального значения
критерия Wo=W1(So), а затем оптимальных управлений и состояний по цепочке:
So>U1(So) > S1>U2(S1) > S2>U3(S2) > .. > Un(S )> Sn.
Если начальное состояние задано внутри области So, то оптимальное управление
находят рассматривая ряд состояний Sн внутри So по критерию Wo = extr (W1(Sн)).
В принципе процесс динамического программирования может разворачиваться от
первого шага к последнему. Алгоритм будет аналогичен изложенному, а основное
функционaльное уравнение несколько изменится
(3-3)
где S – состояние в конце i-го шага, Si-1 – в начале его.
Важным моментом в реализации алгоритма является разбиение процесса на шаги и
определение разумного числа рассматриваемых дискретных состояний в конце каждого
шага, от которых зависит точность решения и объем вычислений.
MathCAD
1. Назначение MathCAD
MathCAD является математическим редактором, позволяющим проводить разнообразные
научные и инженерные расчеты, начиная от элементарной арифметики и заканчивая
сложными реализациями численных методов. MathCAD стал наиболее популярным
математическим приложением. MathCAD 2001, в отличие от большинства других
современных математических приложений, построен в соответствии с принципом
WYSIWYG ("What You See Is What You Get" - "что Вы видите, то и получите"). Поэтому
оночень прост в использовании, в частности, из-за отсутствия необходимости сначала
писать программу, реализующую те или иные математические расчеты, а потом запускать
ее на исполнение. Вместо этого достаточно просто вводить математические выражения с
помощью встроенного редактора формул, причем в виде, максимально приближенном к
общепринятому, и тут же получать результат.
математические выражения и текст вводятся с помощью формульного редактора
MathCAD, который по возможностям и простоте использования не уступает, к примеру,
редактору формул, встроенному в MicrosoftWord;
- математические расчеты производятся немедленно, в соответствии с введенными
формулами;
- графики различных типов (по выбору пользователя) с богатыми возможностями
форматирования вставляются непосредственно в документы;
- возможен ввод и вывод данных в файлы различных форматов;
- документы могут быть распечатаны непосредственно в MathCAD в том виде, который
пользователь видит на экране компьютера, или сохранены в формате RTF для
последующего редактирования в более мощных текстовых редакторах (например,
Microsoft Word); - возможно сохранение документов в формате Web-страницы, причем
создание файлов с рисунками происходит автоматически;
в состав MathCAD входят несколько интегрированных между собой компонентов - это
мощный текстовый редактор для ввода и редактирования как текста, так и формул,
вычислительный процессор - для проведения расчетов согласно введенным формулам, и
символьный процессор, являющийся, по сути, системой искусственного интеллекта.
После того как MathCAD 2001 установлен на компьютере и запущен на исполнение,
появляется основное окно приложения. Оно имеет ту же структуру, что и большинство
приложений Windows. Сверху вниз располагаются заголовок окна, строка меню, панели
инструментов (стандартная и форматирования) и рабочий лист, или рабочая область,
документа (worksheet). Новый документ создается автоматически при запуске MathCAD.
Панели инструментов служат для быстрого (в один щелчок мыши) выполнения наиболее
часто применяемых команд. Все действия, которые можно выполнить с помощью панелей
инструментов, доступны и через верхнее меню. На рис. 1.7 изображено окно MathCAD с
тремя основными панелями инструментов, расположенными непосредственно под
строкой меню. Кнопки в панелях сгруппированы по сходному действию команд:
- Standard (Стандартная) - служит для выполнения большинства операций, таких как
действия с файлами, редакторская правка, вставка объектов и доступ к справочным
системам;
- Formatting (Форматирование) - для форматирования (изменения типа и размера шрифта,
выравнивания и т. п.) текста и формул;
- Math (Математика) - для вставки математических символов и операторов в документы.
Группы кнопок на панелях инструментов разграничены по смыслу вертикальными
линиями - разделителями. При наведении указателя мыши на любую из кнопок рядом с
кнопкой появляется всплывающая подсказка -короткий текст, поясняющий назначение
кнопки (см. рис. 1.3 и 1.4). Наряду со всплывающей подсказкой, более развернутое
объяснение готовящейся операции можно отыскать на строке состояния.
Панель Math (Математика) предназначена для вызова на экран еще девяти панелей (рис.
1.8), с помощью которых, собственно, и происходит вставка математических операций в
документы. В прежних версиях MathCAD эти математические панели инструментов
назывались палитрами (palettes) или наборными панелями. Чтобы показать какую-либо из
них, нужно нажать соответствующую кнопку на панели Math (см. рис. 1.3). Перечислим
назначение математических панелей:
- Calculator (Калькулятор) - служит для вставки основных математических операций,
получила свое название из-за схожести набора кнопок с кнопками типичного
калькулятора;
- Graph (График) - для вставки графиков;
- Matrix (Матрица) - для вставки матриц и матричных операторов;
- Evaluation (Выражения) - для вставки операторов управления вычислениями;
- Calculus (Вычисления) - для вставки операторов интегрирования, дифференцирования,
суммирования;
- Boolean (Булевы операторы) - для вставки логических (булевых) операторов;
- Programming (Программирование) - для программирования средствами MathCAD;
- Greek (Греческие символы) - для вставки греческих символов;
- Symbolic (Символика) - для вставки символьных операторов.
Большую часть окна MathCAD занимает рабочая область, в которую пользователь вводит
математические выражения, текстовые поля и элементы программирования.
элементы интерфейса редактора MathCAD
- указатель мыши (mouse pointer) - играет обычную для приложений Windows роль, следуя
за движениями мыши;
- курсор - обязательно находится внутри документа в одном из трех видов:
курсор ввода (crosshair) - крестик красного цвета, который отмечает пустое место в
документе, куда можно вводить текст или формулу;
линии ввода (editing lines) - горизонтальная (underline) и вертикальная (insertion line)
линии синего цвета, выделяющие в тексте или формуле определенную часть;
линия ввода текста (text insertion point) - вертикальная линия,
аналог линий ввода для текстовых областей.
- местозаполнители (placeholders) - появляются внутри
незавершенных формул в местах, которые должны быть
заполнены символом или оператором:
местозаполнитель символа - черный прямоугольник;
местозаполнитель оператора - черная прямоугольная рамка.
Ввод формул
Ввести математическое выражение можно в любом пустом месте документа MathCAD.
Для этого поместите курсор ввода в желаемое место документа, щелкнув в нем мышью, и
просто начинайте вводить формулу, нажимая клавиши на клавиатуре. При этом в
документе создается математическая область (math region), которая предназначена для
хранения формул, интерпретируемых процессором MathCAD. Продемонстрируем
последовательность действий на примере ввода выражения х5+х (рис. 2.11):
1. Щелкните мышью, обозначив место ввода.
2. Нажмите клавишу <х> - в этом месте вместо курсора ввода появится регион с
формулой, содержащей один символ х, причем он будет выделен линиями ввода.
3. Введите оператор возведения в степень, нажав клавишу <^>, либо выбрав кнопку
возведения в степень на панели инструментов Calculator (Калькулятор) - в формуле
появится местозаполнитель для введения значения степени, а линии ввода выделят этот
местозаполнитель.
4. Последовательно введите остальные символы <5>, <+>, <х>.
Таким образом, поместить формулу в документ можно, просто начиная вводить
символы, числа или операторы, например + или /. Во всех этих случаях на месте курсора
ввода создается математическая область, иначе называемая регионом, с формулой,
содержащей и линии ввода. В последнем случае, если пользователь начинает ввод
формулы с оператора, в зависимости от его типа, автоматически появляются и
местозаполнители, без заполнения которых формула не будет восприниматься
процессором MathCAD.
Перемещение линий ввода внутри формул
Чтобы изменить формулу, щелкните на ней мышью, поместив таким образом в
ее область линии ввода, и перейдите к месту, которое хотите исправить.
Перемещайте линии ввода в пределах формулы одним из двух способов:
- щелкая в нужном месте мышью;
- нажимая на клавиатуре клавиши - со стрелками, пробел и <Ins>:
клавиши со стрелками имеют естественное назначение, переводя линии ввода вверх,
вниз, влево или вправо;
клавиша <Ins> переводит вертикальную линию ввода с одного конца горизонтальной
линии ввода на противоположный;
пробел предназначен для выделения различных частей формулы.
Выделение части формулы
Чтобы выделить часть формулы в некоторой математической области (рис. 2.17):
1. Поместите ее между линиями ввода, пользуясь, при необходимости, клавишамистрелками и пробелом.
2. Поместите указатель мыши на вертикальную линию ввода, нажмите и удерживайте
левую кнопку мыши.
3. Удерживая кнопку мыши, протащите указатель мыши вдоль горизонтальной линии
ввода, при этом часть формулы будет выделяться обращением цвета.
4. Отпустите кнопку мыши, когда будет выделена нужная часть формулы.
Управление отображением некоторых операторов
Некоторые операторы, например, умножения или присваивания численного вывода,
допускают различное представление в документах MathCAD. Сделано это, главным
образом, для упрощения подготовки отчетов (в MathCAD- программе символ
присваивания в виде := выглядит естественно, но в отчетной документации зачастую
неприемлем).
Оператор умножения может иметь различный вид (рис. 2.21):
- Dot (Точка)
- Narrow Dot (Узкая точка)
- Large Dot (Большая точка)
-х
- Thin Space (Тонкий пробел)
- No Space (Вместе)
Оператор присваивания представляется либо знаками := (двоеточием и равенством Colon Equal), либо просто знаком равенства (Equal), как показано на рис. 2.22.
Для того чтобы в документе поменять отображение указанных операторов:
1. Поместите указатель мыши на оператор и вызовите щелчком правой кнопкой мыши
контекстное меню.
2. Наведите указатель мыши на его первый пункт.
3. В открывшемся подменю выберите нужный вид оператора, как показано на рис. 2.21 и
2.22.
Ввод и редактирование текста
MathCAD - это математический редактор. Основное его назначение заключается в
редактировании математических формул и расчете по ним. Вместе с тем, наряду с
формульным редактором, MathCAD обладает довольно развитыми средствами по
оформлению текста. Назначение текстовых областей в документах MathCAD для разных
пользователей и разных задач может быть различным. Качественно стоит различать
подход к тексту, используемому:
- просто в качестве комментариев;
- как элемент оформления документов для создания качественных отчетов в печатной и
электронной формах.
Ввод текста
Текстовую область (или, по-другому, регион с текстом - text region) можно разместить в
любом незанятом месте документа MathCAD. Однако, когда пользователь помещает
курсор ввода в пустое место документа и просто начинает вводить символы, MathCAD по
умолчанию интерпретирует их как начало формулы. Чтобы до начала ввода указать
программе, что требуется создать не формульный, а текстовый регион, достаточно, перед
тем как ввести первый символ, нажать клавишу <">. В результате на месте курсора ввода
появляется новый текстовый регион, который имеет характерное выделение (рис. 2.24).
Курсор принимает при этом вид вертикальной линии красного цвета, которая называется
линией ввода текста и аналогична по назначению линиям ввода в формулах.
Выделение части документа
- Чтобы выделить несколько регионов, расположенных последовательно друг за другом,
нажмите вне крайнего из них левую кнопку мыши (определяя тем самым место курсора
ввода) и протащите ее указатель через все регионы, которые надо выделить. Выделенные
регионы от курсора ввода до указателя мыши будут отмечены пунктиром (рис. 2.30).
Обновление вида документа
Редактор MathCAD - довольно сложная программа, и в результате работы в нем на
поверхности документа может время от времени появляться "мусор",- лишние символы,
которых на самом деле в документе нет. Если вы подозреваете, что имеете дело именно с
такой ситуацией, выполните команду View / Refresh (Вид / Обновить) или нажмите
клавиши <Ctrl>+<R>. В результате все лишние символы должны исчезнуть.
Переменные и функции
Основные инструменты математика - это операции с переменными величинами и
функциями. В MathCAD переменные, операторы и функции реализованы в интуитивной
форме, т. е. выражения в редакторе вводятся и вычисляются так, как они были бы
написаны на листе бумаги. Порядок вычислений в документе MathCAD также очевиден:
математические выражения и действия воспринимаются процессором слева направо и
сверху вниз.
Присваивание переменным значений
Чтобы присвоить переменной новое значение, например переменную х сделать равной 10:
1. Введите в желаемом месте документа имя переменной, например х.
2. Введите оператор присваивания с помощью клавиши <:> или нажатием
соответствующей кнопки Definition (Присваивание) на панели инструментов Calculator
(Калькулятор) или Evaluation (Выражения), как показано на рис. 3.1.
3. Введите в появившийся местозаполнитель новое значение переменной (10).
Функции
Функции в MathCAD записываются в обычной для математика форме:
- f (х,...) - функция;
f - имя функции;
х,... - список переменных.
Легче всего ввести написание функции в документ при помощи клавиатуры. В MathCAD
формально можно разделить функции на два типа:
- встроенные функции;
- функции, определенные пользователем.
Для того чтобы определить функцию пользователя, например f(x,y) = x2-cos (x+y):
1. Введите в желаемом месте документа имя функции (f).
2. Введите левую скобку "(", имена переменных через запятую х, у и правую скобку ")".
При вводе левой скобки и запятых автоматически будут появляться соответствующие
местозаполнители.
3. Введите оператор присваивания с панели инструментов или нажатием клавиши <:>.
4. Введите в появившийся местозаполнитель выражение, определяющее функцию x 2-cos
(x+y), пользуясь клавиатурой или панелями инструментов.
Вывод значений переменных и функций
Чтобы вычислить в документе некоторое математическое выражение, которое может
состоять из переменных, операторов и функций (встроенных и определенных
пользователем):
1. Введите это выражение, например ху;
2. Нажмите клавишу <=>.
В результате справа от введенного знака равенства появится вычисленное значение
выражения (листинг 3.5, предпоследняя строка). Нельзя изменять содержимое выражения
справа от знака равенства, поскольку оно есть результат работы вычислительного
процессора MathCAD, совершенно скрытой от глаз пользователя. Подчас (когда
выражение содержит функции, реализующие разные численные методы, часто в сложных
комбинациях) алгоритмы расчета бывают очень затейливыми и занимают существенное
время. О том, что некоторое выражение документа находится в стадии вычисления,
свидетельствует обрамляющая его зеленая рамка и невозможность предпринять какоелибо действие с программой MathCAD.
Наряду с численным выводом, в MathCAD имеется возможность символьного, или
аналитического, вычисления значения выражения. Для символьных вычислений имеется
ряд специальных средств, которые будут детально рассмотрены позднее (см. гл. 5), самое
простое из них - это оператор символьного вывода (symbolic evaluation). Он обозначается
символом -> и в большинстве случаев применяется точно так же, как оператор численного
вывода, однако внутреннее различие между действием этих двух операторов огромно.
Если численный вывод - это в обычном смысле этого слова "запрограммированный"
расчет по формулам и численным методам, скрытый от глаза пользователя, то
символьный вывод - результат работы системы искусственного интеллекта, встроенной в
MathCAD и называемой символьным процессором. Работа символьного процессора также
невидима (и, чаще всего, даже трудно представима) пользователю и заключается в
анализе самого текста математических выражений. Конечно, гораздо более узкий круг
формул можно рассчитать символьно, хотя бы потому, что, вообще говоря, относительно
не такая большая часть математических задач допускает аналитическое решение.
Чтобы попытаться вычислить символьно математическое выражение, например B .
sin(arcsin(c . х)), где в,с,х - некоторые переменные:
1. Введите это выражение: B . sin(asin(c . х)).
2. Введите оператор символьного вывода сочетанием клавиш <Ctrl>+<.>, либо нажатием
соответствующей кнопки (рис. 3.4) на панели Symbolic (Символика) или Evaluation
(Выражения).
После этого справа от символа оператора символьного вывода появится определенное
аналитически значение выражения (листинг. 3.10), либо сообщение об ошибке "No answer
found" (Ответ не найден). Если символьному процессору MathCAD не удается
аналитически упростить выражение, то оно будет выдано справа от знака -> в том же
виде, что и слева.
Листинг 3.10. Символьный вывод выражения
Листинг 3.11. Символьный вывод выражения, которое не удалось упростить
Допустимые имена переменных и функций
В заключение перечислим, какие символы можно, а какие нельзя применять в именах,
которые пользователь дает переменным и функциям, и перечислим ряд ограничений на
присваивание имен. Допустимые символы:
- большие и маленькие буквы - MathCAD различает регистр: так, имена х и х определяют
разные переменные. Кроме того, MathCAD различает и шрифт, например имена х и х
воспринимаются как разные;
- числа от 0 до 9;
- символ бесконечности (клавиши <Ctrl>+<Shift>+<Z>);
- штрих (клавиши <Ctrl>+<F7>);
- греческие буквы - они вставляются с помощью панели Greek (Греческие символы);
- символ подчеркивания;
- символ процента;
- нижний индекс.
Теперь рассмотрим ограничения на имена переменных и функций:
- имя не может начинаться с цифры, символа подчеркивания, штриха или
процента;
- символ бесконечности должен быть только первым в имени;
- все буквы в имени должны иметь один стиль и шрифт;
- имена не могут совпадать с именами встроенных функций, констант и размерностей,
например, sin или TOL. Тем не менее, допускается их переопределение, но тогда
одноименная встроенная функция больше не будет использоваться по первоначальному
назначению;
- MathCAD не различает имен переменных и функций: если сначала определить функцию
f (х), а потом переменную f, то в оставшейся части документа будет утерян доступ к
функции f(x).
Режимы вычислений
Все примеры, которые мы рассматриваем в этой книге, неявно предполагают, что включен
автоматический режим вычислений. Он включается по умолчанию при создании пустого
документа, поэтому если вводятся выражения, содержащие операторы вывода, они
вычисляются немедленно. Вообще говоря, имеется два режима вычислений:
- автоматический режим (automatic mode) - все вычисления проводятся автоматически
по мере ввода формул;
- ручной режим (manual mode) - старт вычислений каждой формулы или всего документа
производится пользователем.
Режим вычислений можно выбрать с помощью команды Math / Automatic Calculation
(Математика / Считать автоматически),
Прерывание вычислений
MathCAD осуществляет вычисления документа, как это принято в большинстве сред
программирования: сверху вниз и слева направо. Пока очередное выражение находится в
процессе расчета (вычислительным или символьным процессором), оно выделяется
рамкой зеленого цвета (рис. 3.15), а любые действия пользователя по дальнейшему
редактированию документа блокируются. Если у вас не слишком быстрый компьютер, а
формулы достаточно сложные, то можно наблюдать, как зеленая рамка .перескакивает с
одного выражения на другое.
Чтобы прервать затянувшийся процесс вычислений, нажмите клавишу <Esc>. Появится
диалоговое окно, показанное на рис. 3.16, в котором нужно подтвердить прерывание
вычислений (ОК). В этом случае выражения, которые MathCAD не успел вычислить,
будут помечены в документы красным цветом. Прерванные вычисления возобновляются
нажатием клавиши <F9> или командой Math / Calculate (Математика / Пересчитать).
Типы данных
Наиболее простой и распространенный ввод-вывод данных в MathCAD реализован
присваиванием и выводом (либо численным, либо символьным) непосредственно в
документе. Переменные и функции, посредством которых осуществляется ввод-вывод,
могут иметь значения различных типов (числовые, строковые и т. д.). Перечислим
основные типы данных, которые обрабатываются процессорами системы MathCAD:
- числа (в том числе, действительные, комплексные, а также встроенные константы) MathCAD хранит все числа в формате двойной точности с плавающей точкой (не разделяя
их на целые, булевы и т. д.);
- строки - любой текст, заключенный в кавычки;
- массивы (в том числе, ранжированные переменные, векторы и матрицы) упорядоченные последовательности чисел или строк. Рассмотрим более подробно типы
данных и то, как осуществляется их непосредственный ввод в документ с помощью
присваивания значения переменным.
Действительные числа
Любое выражение, начинающееся с цифры, MathCAD интерпретирует как число. Поэтому
для ввода числа просто начните его набирать на клавиатуре. Несмотря на то, что
MathCAD хранит все числа в одинаковом формате, вводить их можно в наиболее
подходящем представлении (notation), исходя из контекста документа:
- как целое число;
- как десятичное число (decimal notation) с любым количеством десятичных цифр после
точки;
- в представлении с порядком (exponential notation) - в так называемом научном формате
или представлении (scientific notation), для чего после ввода числа напечатайте символ
умножения и введите 10 в нужной степени;
- как число в другой системе счисления.
Три первых представления иллюстрируются содержанием соответствующей строки
листинга 4.1.
При вводе целых чисел, больших или равных 1000, все цифры пишутся слитно (как
показано в первой строке листинга 4.1), и ни в коем случае не разделяются на порядки
запятыми. Например, ввод числа 1000 как 1,000 или 1.000 недопустим.
Листинг 4.1. Ввод действительных чисел
Комплексные числа
Большинство операций в среде MathCAD по умолчанию осуществляются над
комплексными числами. Комплексное число является суммой действительного и мнимого
числа, получающегося путем умножения любого действительного числа на мнимую
единицу (imaginary unit) i. По определению,
i = корень -l ИЛИ i2=-l.
Чтобы ввести мнимое число, например 3i:
1. Введите действительный сомножитель (з).
2. Введите символ "i" или "j" непосредственно после него.
Для ввода мнимой единицы надо нажать клавиши <1>, <i.>. Если просто ввести символ
"i", то MathCAD интерпретирует его как переменную i. Кроме того, мнимая единица
имеет вид 1i, только когда соответствующая формула выделена. В противном случае
мнимая единица отображается просто как i (рис. 4.1).
Комплексное число можно ввести в виде обычной суммы действительной и мнимой
частей, или в виде любого выражения, содержащего мнимое число.
Встроенные константы
Некоторые имена в MathCAD зарезервированы под системные перемени которые
называются встроенными константами (built-in constants). Встроные константы делятся
на два типа: математические, хранящие значение некоторых общеупотребительных
специальных математических СИМВОЛОВ системные, определяющие работу
большинства численных алгоритмов, реализованных в MathCAD.
Математические константы (math constants)
- символ бесконечности (вводится клавишами <Ctrl>+<Shift>+<z>
- е - основание натурального логарифма (клавиша <е>);
- число "пи" (вводится клавишами <Ctrl>+<Shift>+<p>);
- i, j - мнимая единица (вводится клавишами <1>, <i> или <1>, <j>);
- % - символ процента, <%>, эквивалентный o.o1
Размерные переменные
В MathCAD числовые переменные и функции могут обладать размерностью. Сделано это
для упрощения инженерных и физических расчетов. В MathCAD встроено большое
количество единиц измерения, с помощью которых и создаются размерные переменные.
4.2.1. Создание размерной переменной
Чтобы создать размерную переменную, определяющую, например, силу тока в 10 А:
1. Введите выражение, присваивающее переменной i значение ю: 10:=10
2. Сразу после ввода ю введите символ умножения "*".
3. Находясь в области местозаполнителя, выберите команду Insert / Unit
(Вставка / Единицы), либо нажмите кнопку с изображением мерного стакана на
стандартной панели инструментов, либо клавиши <Ctrl>+<U> (рис. 4.3).
4. В списке Unit (Единица измерения) диалогового окна Insert Unit (Вставка единицы
измерений) выберите нужную единицу измерения Ampere (A).
5. Нажмите кнопку ОК.
Если вы затрудняетесь с выбором конкретной единицы измерения, но знаете, какова
размерность переменной (в нашем случае это электрический ток), то попробуйте выбрать
ее в списке Dimension (Размерность) диалогового окна Insert Unit (Вставка единицы
измерений). Тогда в списке Unit (Единица измерения) появятся допустимые для этой
величины единицы измерений, из которых выбрать нужную будет легче (рис. 4.5).
Работа с размерными переменными
Работая с размерными переменными, приготовьтесь к тому, что MathCAD будет
постоянно контролировать корректность расчетов. Например, нельзя
складывать переменные разной размерности, в противном случае (рис. 4.6)
будет получено сообщение об ошибке "The units in this expression do not
match" (Размерности в этом выражении не совпадают). Тем не менее, позволяется
складывать, например, амперы с килоамперами (см. рис. 4.9).
Массивы
Массивами (arrays) называют упорядоченные последовательности чисел, или элементов
массива. Доступ к любому элементу массива возможен по его индексу, т. е. номеру в
последовательности чисел (в листинге 4.10 а - это массив, a1 - его элемент). Применение
массивов чрезвычайно эффективно в математических расчетах.
В MathCAD условно выделяются два типа массивов:
- векторы (одноиндексные массивы, листинг 4.10), матрицы (двухиндексные, листинг
4.11) и тензоры (многоиндексные);
- ранжированные переменные (range variables) - векторы, элементы которых
определенным образом зависят от их индекса.
Ранжированные переменные
Ранжированные переменные в MathCAD являются разновидностью векторов и
предназначены, главным образом, для создания циклов или итерационных вычислений.
Простейший пример ранжированной переменной - это массив с числами, лежащими в
некотором диапазоне с некоторым шагом.
Например, для создания ранжированной переменной s с элементами 0,1,2,3,4,5:
1. Поместите курсор ввода в нужное место документа.
2. Введите имя переменной (з) и оператор присваивания ":".
3. Нажмите кнопку Range Variable (Ранжированная переменная) на панели Matrix
(Матрица), показанную на рис. 4.9, либо введите символ точки с запятой с клавиатуры.
4. В появившиеся местозаполнители (рис. 4.9) введите левую и правую границы диапазона
изменения ранжированной переменной о и 5.
Создание матрицы командой Insert Matrix
Самый простой и наглядный способ создания вектора или матрицы заключается в
следующем:
1. Нажмите кнопку Matrix or Vector (Матрица или вектор) на панели Matrix (Матрица)
(рис. 4.12) либо клавиши <Ctrl>+<M>, либо выберите пункт меню Insert / Matrix (Вставка
/ Матрица).
2. В диалоговом окне Insert Matrix (Вставка матрицы) задайте целое число столбцов и
строк матрицы, которую хотите создать. Например, для создания вектора 3x1, введите
показанные на рис. 4.12 значения.
3. Нажмите кнопку ОК или Insert (Вставить) - в результате в документ будет вставлена
заготовка матрицы с определенным числом строк и столбцов (рис. 4.13).
4. Введите значения в местозаполнители элементов матрицы. Переходить от одного
элемента матрицы к другому можно с помощью указателя мыши либо клавиш со
стрелками.
Решение уравнений (Solve)
С помощью символьного процессора можно вычислить аналитически значение
переменной, при котором выражение обращается в ноль. Для этого:
1. Введите выражение.
2. Выделите переменную, относительно которой будет решаться уравнение,
приравнивающее выражение нулю.
3. Выберите в меню Symbolics (Символика) пункт Variable / Solve (Переменная / Решить)
(рис. 5.19).
Решение СЛАУ с применением встроенной функции
isolve. Для этого система уравнений должна быть
записана в матричной форме Аx=b:

isolve (А, b) — вектор решения системы
линейных алгебраических уравнений:


А — матрица коэффициентов системы;
b — вектор правых частей.
Листинг 8.4. Численное решение СЛАУ
Преобразование Фурье (Fourier)
Преобразование Фурье представляет функцию f (х) в
виде интеграла по гармоническим функциям,
называемого интегралом Фурье:
ОДУ первого порядка
Дифференциальное уравнение первого порядка может по определению содержать помимо
самой искомой функции y(t) только ее первую производную y'(t). В подавляющем
большинстве случаев дифференциальное уравнение можно записать в стандартной
форме (форме Коши):
у' (t)=f (y(t),t)
и только с такой формой умеет работать вычислительный процессор MathCAD.
Правильная с математической точки зрения постановка соответствующей задачи Коши
для ОДУ первого порядка должна, помимо самого уравнения, содержать одно начальное
условие - значение функции у (to) в некоторой точке t0. Требуется явно определить
функцию y(t) на интервале от t0 до ti.По характеру постановки задачи Коши называют еще
задачами с начальными условиями (initial value problem), в отличие от краевых задач.
Встроенные функции rkfixed, Rkadapt, Bulstoer
Альтернативный метод решения ОДУ перешел из прежних версий MathCAD.Он
заключается в использовании одной из встроенных функций rkfixed, Rkadapt или Bulstoer.
Этот способ несколько проигрывает первому и в про стоте, и в наглядности. Поэтому я
советую предпочесть вычислительный блок Given/odesoive. Однако иногда приходится
решать ОДУ первого порядка с помощью второго способа, например, при следующих
обстоятельствах:
- вы работаете одновременно с более старыми версиями MathCAD 5.0-8.0или менее
мощной разновидностью MathCAD 2001 Standard и хотите, чтобы ваши документы
воспринимались каждой из них корректно;
- одно ОДУ решается в контексте решения более сложных задач, в которые входят
системы дифференциальных уравнений (для которых вычислительный блок неприменим)
- в этом случае может потребоваться единый стиль программирования;
- ответ предпочтительнее получить в виде вектора, а не функции;
- вы привыкли к записи ОДУ в старых версиях MathCAD, у вас много документов,
созданных с их помощью и т. п.
Поскольку решение вторым способом одного ОДУ мало чем отличается отрешения
систем ОДУ (см. разд. 11.3), приведем пример его использования в задаче из листинга
11.1 практически без комментариев (см. листинг 11.2) и с помощью одной из трех
существующих для этих целей встроенных функций rkfixed. Обратите внимание только на
необходимость явного задания количества точек интегрирования ОДУ м=юо в третьей
строке листинга, а также на получение результата, в отличие от вычислительного блока,
не в виде функции, а в виде матрицы размерности мх2. Она состоит из двух столбцов: в
одном находятся значения аргумента t (от to до ti включительно), а в другом
соответствующие значения искомой функции y(t).
Листинг 11.2. Решение задачи Коши для ОДУ первого порядка вторым способом
Системы ОДУ первого порядка
MathCAD требует, чтобы система дифференциальных уравнений была представлена в
стандартной форме:
Задание системы (1) эквивалентно следующему векторному представлению:
где Y и Y ' - соответствующие неизвестные векторные функции переменной t размера
NXI, a F - векторная функция того же размера и (N+D количества переменных (N
компонент вектора и, возможно, t). Именно векторное представление (2) используется для
ввода системы ОДУ в среде MathCAD.
Для того чтобы определить задачу Коши для системы ОДУ, следует определить еще N
начальных условий, задающих значение каждой из функцийY(tо) в начальной точке
интегрирования системы to.
Встроенные функции для решения систем ОДУ
В Math CAD 2001 имеются три встроенные функции, которые позволяютрешать
поставленную в форме (2-3) задачу Коши различными численнымиметодами.
- rkfixed(yO,tO,ti,M,D) - метод Рунге-Кутты с фиксированным шагом;Rkadapt(yO,to,ti,M,D) - метод Рунге-Кутты с переменным шагом;- Buistoer (yO,to,ti,M,D) метод Булирша-Штера;
уо - вектор начальных значений в точке to размера NXI;
to - начальная точка расчета;
ti - конечная точка расчета;
м - число шагов, на которых численный метод находит решение;
о - векторная функция размера NXI двух аргументов - скалярного t ивекторного у. При
этом у - искомая векторная функция аргумента tтого же размера NXI.
Решение системы двух ОДУ
Чтобы построить график решения, надо отложить соответствующие компоненты матрицы
решения по координатным осям:
значения аргумента и<0> - вдоль оси х,
а и<1> и и<2> - вдоль оси Y (рис. 11.4).
Как известно, решения обыкновенных
дифференциальных уравнений часто
удобнее изображать не в таком виде, а
в фазовом пространстве, по каждой из
осей которого откладываются значения
каждой из найденных функций. При
этом аргумент входит в них лишь
параметрически.
Download