Аппроксимация
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: доклад по биологии, доклад по истории
| Добавил(а) на сайт: Borzilov.
Предыдущая страница реферата | 2 3 4 5 6 7 8 9 10 11 12 | Следующая страница реферата
3.2 Описание модуля типов.
Для задания типов и файловых переменных вводного и выводного текстовых файлов используется модуль типов unit typesm, структура которого приведена ниже
unit typesm; interface const mmax=20; nmax=20; e=1e-5; type klt =array[1..3] of integer; at =array[1..mmax+1,1..nmax+1] of real; vec1it =array[1..nmax] of integer; vec2it =array[1..mmax] of integer; vec1rt =array[1..nmax] of real; vec2rt =array[1..mmax] of real; var fi, fo:text; implementation end.
В разделе констант заданы константы nmax и mmax, задающие максимальное число строк расширенной матрицы a без единицы, а также пороговая константа е, используемая в модуле поиска разрешающей строки. Константа е используется для обеспечения устойчивости алгоритма (модуль разрешающего элемента не должен быть слишком мал, а именно, больше е).
Ниже приведена таблица фактических и формальных параметров подпрограмм задач линейного программирования. Обозначения формальных и фактических параметров совпадают.
|N/N |Назначение |Обозначение |Тип |
|1. |Управляющий вектор |k1 |ki1t |
|2. |Число ограничений |m |intege|
| | | |r |
|3. |Число переменных |n |intege|
| | | |r |
|4. |Матрица коэффициентов |a |at |
|5. |Вектор номеров свободных переменных |i1 |vec1it|
|6. |Отслеживающий вектор основных |p1 |vec1it|
| |переменных прямой задачи | | |
|7. |Отслеживающий вектор вспомогательных|q1 |vec1it|
| |переменных двойственной задачи | | |
|8. |Отслеживающий вектор вспомогательных|p2 |vec2it|
| |переменных прямой задачи | | |
|9. |Отслеживающий вектор основных |q2 |vec2it|
| |переменных двойственной задачи | | |
|10. |Разрешающая строка |r |intege|
| | | |r |
|11. |Разрешающий столбец |s |intege|
| | | |r |
|12. |Вектор-решение прямой задачи |x |vec1rt|
|13. |Вектор-решение двойственной задачи |u |vec2rt|
4.2 Укрупненная блок-схема задачи линейного программирования.
[pic]
5.2 Параметры и заголовки процедур задачи линейного программирования.
В основной программе используются следующие переменные, которые описаны в разделе var:
m,n,r,s:integer;{числовые переменные целого типа}
Процедуры программы:
|N/N |Назначение |Заголовок |
|1. |Ввод и контроль исходных |input(var k1:k1t; var |
| |данных и вывод их в файл |m,n:integer; var a:at, var |
| |результатов |i1:vec1it; var p1,q1:vec1it; |
| | |var p2,q2:vec2it) |
|2. |Исключение свободных |issp(var k1:k1t; m,n:integer; |
| |переменных |var a:at; var i1,p1,q1:vec1it;|
| | |var p2,q2: vec2it) |
|3. |Исключение нуль-уравнений |isnu(var k1:k1t; m,n:integer; |
| | |var a:at; var p1,q1:vec1it; |
| | |var p2,q2: vec2it) |
|4. |Поиск опорного решения |opor(m,n:integer; var a:at; |
| | |var p1,q1:vec1it; var p2,q2: |
| | |vec2it) |
|5. |Поиск оптимального решения |optim(m,n:integer; var a:at; |
| | |var p1,q1:vec1it; var p2,q2: |
| | |vec2it) |
|6. |Вывод решения прямой задачи|outp(m,n:integer; var a:at; |
| | |var p2: vec2it; x:vec1rt) |
|7. |Вывод решения двойственной |outd(m,n:integer; var a:at; |
| |задачи |var q1: vec1it; u:vec2rt) |
|8. |МЖИ |mji ( m,n:integer; var a:at; |
| | |r,s:integer) |
|9. |Поиск разрешающей строки |nstro(m,n:integer; var a:at; |
| | |r,s:integer var p2:vec2it) |
6.2 Блок-схема и параметры реализованной процедуры.
Обращащение: isnu(k1,m,n,a,p1,q1,p2,q2). Используются модули typesm, mjim.
Параметры подпрограммы isnu:
|Наименование |Обозначение |
|Число ограничений |m |
|Число переменных |n |
|Матрица задачи |a |
|Отслеживающие векторы |p1, q1, p2, q2 |
В итоге успешной работы алгоритма все нуль-уравнения будут исключены, и в отслеживающем векторе p1 это будет отмечено как -1, что даст возможность в дальнейшем соответствующие столбцы матрицы А при выборе разрешающего элемента не трогать. Если же алгоритм применить нельзя, то будет выдано сообщение (см. блок-схему), и работа программы закончится.
7.2 Листинг модуля, исходных данных и результатов машинного расчета.
unit isnum; interface uses typesm,mjim; procedure isnu(var k1:k1t;m,n:integer; var a:at; var p1,q1:vec1it; var p2,q2:vec2it); implementation procedure isnu; var p:real;k,s,r,j,t:integer; begin for r:=1 to k do begin if p2[r]0 then begin if abs(a[r,j])>p then begin p:=abs(a[r,j]);s:=j;end; end;end; if p=0 then begin writeln(fo,'Исключить r',r:6,'-ое нуль-уравнение нельзя'); close(fi);close(fo);halt end; mji(m,n,a,r,s); p2[r]:=p1[s];p1[s]:=-1; t:=q2[r];q2[r]:=q1[s];q1[s]:=t; end; end.
Исходный файл simp.dat:
12
Исключение нуль-уравнений
Моносов ЭОУС-1-2 преподаватель Марьямов А. Г.
12.05.98
2 2 0
5 3
-2 -1 1 -2
1 -1 0 -1
-1 -1 0 -2
0 1 0 2
2 1 0 4
4 4 0 0
1 2
Файл результатов simp.res:
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ
КАФЕДРА ИНФОРМАТИКИ И ПРИКЛАДНОЙ МАТЕМАТИКИ
Лабораторная работа по информатике
Факультет ЭОУС, 2-ой семестр обучения
Решение задачи линейного программирования
Вариант 12
модуль: Исключение нуль-уравнений
Исполнил студент Моносов ЭОУС-1-2 преподаватель Марьямов А. Г.
Дата исполнения: 12.05.98
Управляющий вектор:
2 2 0
Число ограничений: 5
Число переменных: 3
Матрица задачи
Н-р Коэффициенты Св. члены
строки
Рекомендуем скачать другие рефераты по теме: сочинение описание, банк курсовых.
Категории:
Предыдущая страница реферата | 2 3 4 5 6 7 8 9 10 11 12 | Следующая страница реферата