1 Постановка задачи
Вид материала | Документы |
- Задачи оптимизации с ограничениями в виде неравенств. Постановка задачи. Геометрические, 42.48kb.
- Курсовой проект по дисциплине «Теория информационных процессов и систем» тема: Задачи, 258.87kb.
- И. Д. Салмин московский инженерно-физический институт (государственный университет), 27.33kb.
- Сопротивление композиционных материалов, 28.35kb.
- Удк 532 0727. 12 Физическое моделирование гидравлических явлений, 105.2kb.
- Задачи нелинейной и дискретной оптимизации. Методы решения. Постановка и экономико-математическая, 24.28kb.
- Дисциплина: Инженерия знаний Доклад Генетические алгоритмы, 371.21kb.
- Титул Напротив фамилии оставить автограф автора. Задание, 11.99kb.
- План урока Вступительное слово учителя. «Золотое сечение» в математике постановка задачи,, 118.33kb.
- Исследование операций, 82.88kb.
3.2Язык описания численных методов
В упомянутых в пункте 2 XML-ориентированных языках встречаются средства для описания расчетных параметров модели (например, шаг по времени), однако они не позволяют судить об использованном при моделировании численном методе и не отделены четко от параметров самой модели. В то же время вычислительный алгоритм часто обладает большей сложностью, чем модель предметной области, и для его описания на XML необходим специальный набор тегов, независимый от средств описания моделей. Описание численных методов предназначено уже не для эксперта предметной области, а для математика и может применяться независимо от задачи описания моделей, поэтому набор тегов, описывающих численные методы, вполне можно выделить в отдельный подъязык, который мы в дальнейшем мы будем именовать SimulNumML. SimulNumML описывает математическую формулировку модели, то есть оперирует не столько с параметрами модели и их взаимоотношениями, сколько с математическими объектами: векторами, вектор-функциями и пр.
Опишем DTD этого языка, давая комментарии к нему по ходу описания.
NumericalMethod ANY>
Главный элемент языка NumericalMethod может включать в себя конкретные численные методы. Так как их количество в принципе не ограничено, то содержимое этого элемента обозначено ключевым словом ANY
% NumMethod "
id ID #REQUIRED
description CDATA #IMPLIED
">
В тело главного элемента включена параметрическая сущность %NumMethod. Параметрические сущности обычно используются, когда стандартный набор атрибутов, логически связанных между собой, может часто наследоваться группой элементов.
В нашем случае все конкретные численные методы наследуют уникальный идентификатор метода id и описание метода description у параметрической сущности %NumMethod, .
3.2.1Методы решения алгебраических уравнений
Методы решения алгебраических уравнений бывают простыми и итерационными. Рассмотрим по одному методу из каждого типа
3.2.1.1Метод Гаусса
GaussAEMethod (Datatype, MathBlock, MainElement?)>
%NumMethod;
>
Элемент GaussAEMethod включает в себя элемент Datatype, описывающий тип переменных метода, элемент MathBlock, содержащий блоки математических выражений
и необязательный элемент MainElement, который нужен для определния главного элемента в случае, если метод Гаусса будет реализовываться с выбором главного элемента. Также элемент GaussAEMethod наследует атрибуты параметрической сущности %NumMethod
MathBlock (Name, (Math|MathBlock+))>
Name (#PCDATA)>
Структура, создаваемая элементами MathBlock, позволяет указать логику в математических формулах MathML. Например, в случае метода Гаусса можно отделить прямой ход метода от обратного. Каждый MathBlock имеет имя и может содержать как математические выражения в теге Math, так и другие элементы MathBlock.
Все математические выражения, описывающие тот или иной численный метод, являются статическими и не зависят от каких-либо внешних параметров. В связи с этим было бы не очень разумно каждый раз включать их в xml-документы, описывающие модель. Правильнее было бы вынести все математические формулы в отдельный xml-документ для каждого численного метода.
MathBlock
XML:LINK CDATA #FIXED "SIMPLE"
HREF CDATA #REQUIRED
SHOW (EMBED | REPLACE | NEW) "EMBED"
ACTUATE (AUTO | USER) "AUTO"
>
Эта ссылка реализована с помощью XLINK и выглядит следующим образом:
Документ GaussAEMethod.xml состоит из нескольких элементов MathBlock и математических выражений на MathML (мы их здесь не будем приводить для экономии места):
Прямой ход метода Гаусса определяет переменные a и b, обратный ход определяет переменные x. Таким образом, блочная структура элементов MathBlock даёт нам возможность показать логику вычислений, о чём говорилось ранее
Тег MainElement содержит внутри номер главного элемента
В заключение, приведём код на языке SimulNumML, описывающий метод Гаусса.
Пример xml-кода, описывающего метод Гаусса:
A
matrix
b
vector
l
int
3.2.1.2Итерационные методы
Итерационные методы решения алгебраических уравнений в отличие от прямых методов характеризуются неким набором условий, при котором метод заканчивают свою работу (назовём этот набор условий стоппером итерационного метода).
IterativeAEMethod (Datatype, MathBlock, InCondition, MethodParam)>
%NumMethod;
stopper IDREF #REQUIRED
type (LinearMethod| UnlinearMethod) #IMPLIED
>
Атрибут stopper в элементе IterativeAEMethod является маркированным и имеет тип IDREF. Атрибуты такого типа указывают на другие элементы в xml-документе и их значения должны совпадать со значениями атрибутов типа ID этих элементов. Атрибут stopper указывает на элемент, определяющий стоппер данного численного метода.
Атрибут type определяет, какой тип итерационного метода будет использоваться: для линейных или нелинейных уравнений. Этот атрибут нужен, поскольку имеет место разная математическая реализация численного метода в случае линейной и нелинейной системы уравнений.
Элемент IterativeAEMethod включает в себя также элемент InCondition, описывающий начальное условие применимости метода простых итераций (|F’(x)|<1).
В элементе MethodParam задаются значения переменных метода, которыми в данном случае являются максимальное число итераций и необходимая точность вычислений, использующиеся в стопперах.
Пример xml-кода, описывающего метод простых итераций:
Method of simple iterations for system of unlinear equations-->
x
F
x0
N
N
В этом примере метод простых итераций использует IterationsCountStopper, останавливающий итерационный процесс, когда число итераций достигнет определённого значения. Подробнее о стопперах расскажем в следующем пункте
3.2.1.3 Стопперы итерационных методов
MENT IterationsStopper (IterationsCountStopper | ToleranceIterationsStopper | ComplexIterationsStopper)>
Стопперы бывают трёх различных видов: по максимальному числу итераций (IterationsCountStopper), по заданной точности (ToleranceIterationsStopper) и комплексный стоппер, учитывающий в совокупности оба этих фактора (ComplexIterationsStopper).
id ID #REQUIRED
description CDATA #IMPLIED
>
MaxIterationCount (Datatype)>
IterationsCountStopper включает в себя элемент MaxIterationCount, определяющий максимальное число итераций. Пример xml-кода данного стоппера был приведен в предыдущем пункте.
LIST ToleranceIterationsStopper
id ID #REQUIRED
description CDATA #IMPLIED
>
В элементе Tolerance задаётся точность, по достижению которой итерации прекращаются
ComplexIterationsStopper (Math, MaxIterationCount, Tolerance)>
id ID #REQUIRED
description CDATA #IMPLIED
>
Комплексный стоппер определяет как максимальное число итераций, так и точность вычислений. MaxIterationCount и Tolerance объявлены именно элементами, а не атрибутами, поскольку это продиктовано способом передачи значения этих параметров от тега
3.2.2Методы решения обыкновенных дифференциальных уравнений
3.2.2.1Методы, не имеющие параметров
T DefaultODEMethod
%NumMethod;
>
Методы, не имеющие собственных параметров, просто наследуют атрибуты параметрической сущности %NumMethod
3.2.2.2Методы типа Рунге-Кутты
RungeKuttaMethod (MathBlock, ButcherTable)>
%NumMethod;
type (Explicit | Halfplicit | Implicit) "Explicit"
>
Методы типа Рунге-Кутты имеют ряд числовых параметров, записываемых в таблицу Бутчера. Для этих параметров мы ввели специальный элемент ButcherTable
Элемент RungeKuttaMethod наследует атрибуты параметрической сущности %NumMethod и имеет атрибут type, определяющий является ли этот метод явным, неявным или полуявным
Пример xml-кода, описывающего метод Рунге-Кутты:
v
vector
r
vector
f
fn
vector
a
vector
c
vector
B
matrix
Вначале заданы типы данных, применяемых в методе переменных: входной параметр вектор-функция f, промежуточный параметр вектор r и выходной параметр вектор v. Затем с тега MathBlock стоит ссылка на xml-документ, непосредственно описывающий математические формулы метода. В элементе ButcherTable определены типы данных переменных, используемых в таблице Бутчера. Таким образом, элемент ButcherTable является аналогом элемента MethodParam в итерационных методах.