Анализ транспортной сети

Экономико-математическая модель задачи оптимизации транспорта энергии, газа, трубопроводных систем различного назначения, а также транспортировки продукции от поставщиков к потребителям. Программа оптимизации доставок по заданной схеме сети перевозок.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.01.2012
Размер файла 114,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования Российской Федерации

Южно-Российский государственный университет экономики и сервиса

Кавминводский институт сервиса

Кафедра ЭРТИ

КУРСОВАЯ РАБОТА

по дисциплине: Информатика

тема: Анализ транспортной сети

Пятигорск 2004

Содержание курсовой работы

Задание на курсовой проект

1. Постановка задачи

2. Спецификация

2.1 Название задачи. Приводится кратко сформулированное название задачи, описывающее ее суть.

2.2 Описание задачи. Даемся полное математическое описание задачи с привлечением необходимых формул, таблиц и т. д.

2.3 Управление программой. Описывается порядок запуска программы, управление её режимами, просмотра промежуточных и конечных результатов

2.4 Входные данные. Приводится их описание, способ ввода (описания) данных

2.5 Выходные данные. Должен быть приведен перечень выходных данных, способ их вывода на экран

3. Проектирование и алгоритмизация

На этом этапе разрабатываются общая блочная структура программы, алгоритмы функционирования каждого блока (словесные и в виде блок-схемы). Определяется схема потока данных (взаимосвязи блоков). Необходимые математические выражения привести в матричной и координатной формах. В соответствии со словесным описанием алгоритма разработать модульную структуру алгоритма и его блок-схему. Дать подробное описание модулей и отдельных блоков.

4. Кодирование алгоритма. Описать вес идентификаторы переменных, констант, массивов и др., их соответствие входным, промежуточным и выходным данным. Привести листинг программы (отдельным приложением).

5. Руководство пользователя. Даётся краткая инструкция для пользователя, незнакомого с программой. Инструкция должна содержать такие пункты:

5.1 пуск;

5.2 ввод данных;

5.2 просмотр результатов;

5.4 выход из программы

Результаты расчета. Приводятся исходные данные заданного варианта схемы и результаты вычислений. Делается краткий анализ полученных результатов

Список использованных источников

Приложение. Листинг программы

Задание на курсовой проект:

Разработать и отладить программу, реализующую предложенный алгоритм решения задачи

Решить поставленную задачу для выданного варианта схемы и входных данных. Проанализировать результат, сделать выводы. Проверить решение путем составления баланса потоков по узлам

Написать пояснительную записку в соответствии с требованиями ЕСКД и ЕСПД на листах формата А4

На защиту курсовой работы представить пояснительную записку и дискету с разработанной программой в виде .pas и .exe файлов.

Варианты задания и данные для проектирования

Варианты схемы сети

Схема 1

Схема 2

Схема 3

Схема 4

Схемы

Объём производства

Стоимости перевозок по ветвям

1

2

3

4

01

02

03

04

12

13

14

23

24

34

1

80

60

-150

-30

3

4

5

6

2

-

5

6

-

3

2

120

-80

-100

-

2

4

3

-

4

5

-

6

-

-

3

70

100

-160

-80

4

5

7

6

5

-

-

8

-

5

4

150

-70

-120

80

6

3

8

2

4

-

-

5

-

6

Фамилия, имя студента

№ схемы

Метод решения системы ур-й

Аванесов А.В.

1

Гаусса

Анучин А.В.

2

Обратной матрицы

Бакуменко С.Н.

3

Крамера

Брянцева Е.М.

4

Гаусса

Гайдидей С.И.

1

Крамера

Геворгян А.А.

2

Обратной матрицы

Гербин Д.А.

3

Гаусса

Горепекин А.А.

4

Крамера

ГречаниновЕ.С.

1

Гаусса

Дузенко А.А.

2

Обратной матрицы

Емельяненко А.А.

3

Крамера

Ерофеев Е.А.

4

Гаусса

Иваненко Р.М.

1

Крамера

Исаенко М.В.

2

Обратной матрицы

Кондауров В.А.

3

Гаусса

Лавриненко М.А.

4

Крамера

Лаврухин В.О.

1

Гаусса

Лазаревич Д.А.

2

Обратной матрицы

Маетный М.А.

3

Крамера

Морозов А.А.

4

Гаусса

Нордгеймер М.Ю.

1

Крамера

Овчинников М.С.

2

Обратной матрицы

Озернова Е.Ю.

3

Гаусса

Самбиев Ш.Х.

4

Крамера

Суковатицин М.А.

1

Гаусса

Сухарев А.П.

2

Обратной матрицы

Чурюмов Е.С.

3

Крамера

Шавлаков Е.В.

4

Гаусса

Шандлер В.И.

1

Крамера

1. Постановка задачи

В качестве объекта исследования рассматривается сеть с потоками однородного продукта - экономико-математическая модель задачи оптимизации транспорта энергии, газа, трубопроводных систем различного назначения, а также транспортировки продукции от поставщиков к потребителям. Необходимо написать программу оптимизации транспорта энергии, газа, трубопроводных систем различного назначения по заданной схеме сети перевозок.

2. Спецификация

2.1 Название задачи

В качестве данных для проектирования дается схема транспортной сети, состоящей из m узлов и n ветвей, соединяющих эти узлы (рис. 1).

Размещено на http://www.allbest.ru/

Рис. 1. Схема транспортной сети

На рисунке 1 узлы обозначены цифрами от 1 до 4, узел 0 называют базисным. Он может рассматриваться как склад, хранилище. Его назначение - обеспечить соответствие между производством и потреблением продукции.

В ходе выполнения работы необходимо найти направления потоков по ветвям и их величину P (в условных единицах).

2.2 Описание задачи

Выбирается произвольно направление потоков по ветвям (рис. 2).

Размещено на http://www.allbest.ru/

Рис. 2. Схема направлений потоков

Матрица А получается из матрицы соединений (инциденций). Последняя содержит (m+1) строк по числу узлов, и n столбцов по числу ветвей. На пересечении i-й строки и j-го столбца ставится 1, если i-я ветвь входит в j-й узел и -1, если она выходит из этого узла. Если ветвь не инцидентна узлу, соответствующий элемент матрицы равен нулю. Вычеркивая i-ю строку с номером 0 (выделена заливкой), получают матрицу А (см. табл. 1).

Таблица 1

1-0

1-2

1-3

2-0

2-3

3-0

1

1

-1

-1

0

0

0

2

0

0

0

1

-1

0

3

0

0

0

0

0

1

0

-1

0

0

-1

0

-1

Вводится диагональная матрица R, элементами которой являются заданные стоимости перевозок по ветвям.

Можно показать, что искомый вектор потоков определяется (в матричной форме) как

Размещено на http://www.allbest.ru/

где R-1 - матрица, обратная матрице R,

AI - транспонированная матрица А,

- вектор Лагранжа (потенциалов), который находится из решения системы уравнений в матричной форме

Размещено на http://www.allbest.ru/

где - объемы производства в узлах схемы, которые задаются в качестве входных данных и входят в уравнение

Размещено на http://www.allbest.ru/

2.3 Управление программой

Все расчетные операции курсового проекта выполнены в Turbo Pascal. Программа запускается из файлового менеджера Norton Commander и имеет следующий путь к стартовому файлу: C:\TP71\turbo.exe.

После запуска программы появляется окно редактора, в котором непосредственно выполненное задание. Готовый листинг программы можно откомпилировать, то есть преобразовать в машинный код, комбинацией клавиш Alt+F9 или через меню в разделе Compile, в процессе чего происходит её связь с библиотекой стандартных процедур и функций и загрузка в оперативную память. При этом в небольшом окне сообщается о количестве откомпилированных строк и объёме доступной оперативной памяти.

Для визуального представления результатов написанной программы ее необходимо исполнить. Данная операция называется прогоном программы и реализуется командой Ctrl+F9 либо через меню в разделе Run. Управление передается загруженной в оперативную память программе, и на экран выводится окно прогона программы. На зеленом экране появляется содержательное меню выполненного задания, содержащее необходимые результаты вычислений.

После завершения программы на экране монитора восстанавливается окно редактора ее листингом.

Для выхода из среды Turbo Pascal используется комбинация клавиш Alt+x либо в меню раздел File.

2.4 Входные данные

Ввод данных - это передача информации от внешних устройств в оперативную память. Устройствами ввода могут являться клавиатура, мышь, сканер, микрофон и другие.

В данном курсовом проекте входными данными являются числа от 1 до 10, вводимые с клавиатуры при выборе пункта меню в исполняемой программе.

2.5 Выходные данные

Вывод данных - это передача данных из оперативной памяти на внешние устройства (принтер, динамики). Основным устройством вывода, входящим в стандартную конфигурацию персонального компьютера, является монитор.

Все результаты вычислений данного курсового проекта выводились на дисплей с помощью оператора Write(<комментарии>,<данные>). Элементами данных могут быть константы и переменные, которые отделяются друг от друга запятой. Кроме того данный оператор позволяет выводить комментарии в виде строк и предложений, которые указываются в апострофах. Оператор Writeln(<комментарии>,<данные>) отличается от оператора Write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки.

Пустой оператор вывода без параметров Writeln используется для вывода на экран пустой строки, что может быть необходимо при отделении одной части программы от другой.

В курсовом проекте выходными для вывода дробных чисел использовался формат с фиксированной точкой R : p : q, где R - дробное число, p - ширина поля вывода (число символов), q - количество знаков после десятичной точки.

модель оптимизация трубопроводный система

3. Проектирование и алгоритмизация

Алгоритм программы:

Размещено на http://www.allbest.ru/

3.1 Формирование матрицы А

Размещено на http://www.allbest.ru/

Получаем матрицу размерностью 3х6, имеющую соответственно 3 строки и 6 столбцов.

3.2 Транспонирование матрицы А

Размещено на http://www.allbest.ru/

Матрица Ат или Аl называется транспонированной по отношению к матрице А, если выполняется условие Аijт = Аji, то есть в транспонированной матрице строки заменяются столбцами исходной матрицы, а столбцы строками.

Полученная матрица имеет размерность 6х3.

3.3 Формирование матрицы R.

Размещено на http://www.allbest.ru/

Вектор C[i] - вектор стоимостей перевозок по ветвям. Обозначен в разделе описаний как константа.

3.4 Нахождение обратной матрицы R

Размещено на http://www.allbest.ru/

Квадратная матрица называется вырожденной, если ее определитель - число, получаемое из элементов матрицы по определенному закону в зависимости от ее размера, равен нулю. Если матрица не вырожденная, то существует, и причем единственная матрица А-1, такая, что А*А-1=Е - единичная матрица. Матрица А-1 - есть обратная матрица исходной матрицы А.

3.5 Нахождение вектора U

3.5.1 Вычисление произведения R-1*Al

Операция произведения матриц вводится только для согласованных матриц. Матрица А называется согласованной с матрицей В, если число столбцов матрицы А равно числу строк матрицы В.

В новой матрице С элемент, стоящий на пересечении i-ой строки и j-го столбца равен произведению элементов i-ой строки матрицы А и j-го столбца матрицы В:

Размещено на http://www.allbest.ru/

Полученная в результате произведения матрица Rat имеет размерность 6х3.

3.5.2 Вычисление произведения А*R-1*Al

Размещено на http://www.allbest.ru/

Результат произведения - матрица Rata размерностью 3х3.

Таким образом, получим линейное уравнение Rata*U=Q, где

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Пусть Rata - произвольная матрица А, U - матрица-столбец Х, Q - матрица-столбец свободных коэффициентов. Нашу систему уравнений можно записать в матричном виде: А*Х=В.

Пусть матрица А не вырожденная, тогда у нее есть обратная матрица, умножив которую на данную систему уравнений получим: А-1*А*Х= А-1*В откуда ЕХ= А-1*В. Поскольку произведение единичной матрицы на матрицу-столбец Х даст тот же столбец Х, можно записать матричное решение нашей системы уравнений: Х= А-1*В. Таким образом, чтобы вычислить искомый вектор U необходимо взять обратную матрицу Rata и умножить ее на вектор Q.

3.5.3 Вычисление определителя

Размещено на http://www.allbest.ru/

Определитель, или детерминант, определяется методом Крамера путем разности сумм произведений элементов матрицы в одном порядке и разностей произведений элементов в обратном порядке по следующей схеме (1):

Схема 1. Вычисление определителя

3.5.4 Нахождение обратной матрицы Rata.

Вычисляем алгебраические дополнения для каждого элемента матрицы Rata и строим из этих элементов матрицу pRata.

Размещено на http://www.allbest.ru/

Минором Mij данного элемента определителя 3-го порядка называется определитель 2-го порядка, который получится, если в исходном определителе вычеркнуть строку и столбец, содержащий этот элемент (схема 2).

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Схема 2. Вычисление минора

Алгебраическим дополнением данного элемента называется его минор, умноженный на (-1)i+j, где i, j - номер строки и столбца, на пересечении которых находится данный элемент.

Затем транспонируем pRata и получаем матрицу ptRata, называемую присоединенной к матрице Rata.

Размещено на http://www.allbest.ru/

Полученная матрица необходима при вычислении вектора Лагранжа в ходе решения системы уравнений методом обратной матрицы, а в дальнейшем и расчета вектора транспортных потоков.

3.5.5 Вычисление матрицы-столбца Х

Размещено на http://www.allbest.ru/

3.5.6 Вычисление вектора P

Размещено на http://www.allbest.ru/

4. Кодирование алгоритма

В листинге программы были использованы восемь двумерных массива:

At:array [1..6,1..3] of shortint;

R:array [1..6,1..6] of shortint;

Ro:array [1..6,1..6] of real;

Rat:array [1..6,1..3] of real;

Rata,pRata,ptRata:array [1..3,1..3] of real;

A:array [1..3,1..6] of shortint;

В квадратных скобках соответственно указаны размерности массивов (число строк и столбцов, разделенные запятой). После скобок указан тип переменных, к которым относятся элементы массивов.

Shortint - целочисленный тип переменных с диапазоном значений -128 .. 127;

Real - вещественный тип переменных с плавающей точкой, принимает диапазон значений от -2,9е-39 до 1,7е38 (е=10);

Byte - целочисленный тип переменных с диапазоном значений от 0 до 255 символов;

Integer - целочисленный тип переменных, имеет диапазоном -216 .. 216-1.

Массив А - матрица инциденций (см. Таблица 1) размерностью 3х6 типа shortint. Массив At - транспонированная матрица А размерностью 6х3 типа shortint. Массив R - диагональная матрица стоимостей размерностью 6х6 типа shortint. Ro - матрица размерностью 6х6 обратная матрице R, тип переменных real, поскольку результат вычислений - дробное число. Rat - матрица размерностью 6х3, полученная в результате произведения матрицы Ro на матрицу At. Элементы массива Rat типа real. Rata - матрица размерностью 3х3, полученная в результате произведения A*RoAt. Элементы данной матрицы типа real. Массивы pRata (матрица, составленная из алгебраических дополнений матрицы Rata) и ptRata (транспонированная матрица pRata) размерностью 3х3 были получены в результате преобразований матрицы Rata и имеют тип real.

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

Prov:array [1..3] of real;

Q1:array [1..3] of real;

X:array [1..3] of real;

P:array [1..6] of real;

const Q:array [1..3] of integer=(120,-80,-100);

C:array [1..6] of byte=(2,4,3,4,5,6);

Вектор Prov размерностью 3х3 использовался для формирования столбца проверочных данных с переменными вещественного типа. Вектор Q -объемы производства в узлах, в разделе описаний объявлен в качестве константы с типом переменных integer. Вектор Q1 - результат произведения матрицы ptRata и вектора Q, типа real. Вектор Х - применялся для вычисления вектора Лагранжа, то есть решения системы уравнений матричным методом. Тип переменных - real. Вектор P - вектор потоков с типом переменных real.

Переменные i, j использовались в качестве счетчиков в операциях с матрицами обозначающие соответственно i-е строки и j столбцы. Переменная k использовалась в качестве дополнительного счетчика при перемножении матриц. Переменные i, j, k типа integer.

Переменная sum использовалась в качестве счетчика при перемножении матриц и произведении матриц на вектора. X1, X2, X3 - элементы вектора U, имеющие значения корней уравнения А*Х=В, решенного методом обратной матрицы. Переменная D - определитель матрицы Rata, необходимый при вычислении элементов вектора Х. Summ, x1, x2, x3 ,D - переменные типа real.

Nr - переменная типа byte использовалась в процедуре переключателя номеров пунктов меню.

5. Руководство пользователя

5.1 Пуск

Запуск из среды TurboPascal производится нажатием клавиш Ctrl+F9, а из Norton Commander нажатием клавиши Enter на файле TransOptim.exe.

5.2 Ввод данных

Ввод данных осуществляется с клавиатуры цифрами от 1 до 10.

5.3 Просмотр результатов

После ввода цифры (пункта меню) выводятся результаты вычислений. Нажатием клавиши Enter осуществляется возврат в содержательное меню.

5.4 Выход из программы.

Выход из программы в среде Turbo Pascal и после запуска TransOptim.exe файла производится 10-ым пунктом меню.

6. Результаты расчета

Исходные данные для расчета схемы

Таблица 3

Узлы

1

2

3

Объемы производства

120

-80

-100

На основании расчетов по исходным данным для заданной схемы (см. рис. 1) были получены величины транспортных потоков а так же соответствующие объемы производства для данной схемы по заданным направлениям. Результаты вычислений отражены в таблицах 4 и 5.

Таблица 4

Транспортные потоки

P1

P2

P3

P4

P5

P6

Их величина в у.е.

-55,4

27,7

36,9

44,4

-35,6

100

Таблица 5

Узлы

1

2

3

Объемы производства

-120

80

100

Спроектируем обозначения транспортных потоков из таблицы 4 и их направления на схему транспортной сети.

Рис. 3. Схема расположения транспортных потоков

Здесь каждому потоку P соответствует определенная инциденция ветвей в узлах (см. табл.1). Составим таблицу 6, которая обобщает начальные данные для решения поставленной задачи с результатами вычислений:

Таблица 6

Ветви

1-0

1-2

1-3

2-0

2-3

3-0

Инциденции

1

-1

-1

1

-1

1

Транспортные потоки, у.е.

P1

P2

P3

P4

P5

P6

-55,4

27,7

36,9

44,4

-35,6

100

Отрицательная величина транспортного потока, полученная расчетным путем, при положительной величине инциденции и наоборот свидетельствует о неправильном направлении транспортного потока, то есть соответствующая ветвь должна поменять направление на обратно-противоположное. Получим реальное направление потоков (рис. 4).

Размещено на http://www.allbest.ru/

Рис. 4. Схема реальных направлений транспортных потоков

В соответствии с уравнением 3 баланса потоков по узлам

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

исходя из полученных данных (см. табл. 5) можно сделать вывод, что задача в направлении оптимизации транспортных потоков по ветвям решена верно, поскольку.

Список использованных источников

1. Воеводин В.В., Кузнецов В.В. Матрицы и вычисления. - М.: Наука, 1984 год.

2. Демидович Б.П., Мааров И.А. Основы вычислительной математики. - М.: Наука, 1966 год.

3. Зеув Е.А. Программирование на языке Turbo Pascal 6.0, 7.0. РАДИО И СВЯЗЬ, Веста, Москва 1993 год.

4. Мануйлов В.Г. Разработка программного обеспечения на ПАСКАЛЕ. - М.: Приор, 1996 год.

5. Фаронов В.В. Программирование на персональных ЭВМ в среде Turbo Pascal. Издательство МГТУ 1992 год.

Приложение

листинг программы Program Kursovik;

Uses CRT;

var

At:array [1..6,1..3] of shortint;

R:array [1..6,1..6] of shortint;

Ro:array [1..6,1..6] of real;

Rat:array [1..6,1..3] of real;

Rata,pRata,ptRata:array [1..3,1..3] of real;

A:array [1..3,1..6] of shortint;

X:array [1..3] of real;

P:array [1..6] of real;

Prov:array [1..3] of real;

Q1:array [1..3] of real;

i,j,k:integer; sum,D,x1,x2,x3:real; Nr:byte;

const Q:array [1..3] of integer=(120,-80,-100);

C:array [1..6] of byte=(2,4,3,4,5,6);

Procedure Titul;

Begin clrscr;

window(1,1,80,25);

TextBackGround(green);

TextColor(yellow); clrscr;

GotoXY(24,7); write(#201);

For i:=8 to 18 do

begin GotoXY(24,i); write(#186); GotoXY(24,19); write(#200);

begin GotoXY(60,i); write(#186); GotoXY(60,7); write(#187) end end;

For j:=25 to 59 do

begin GotoXY(j,7); write(#205); begin GotoXY(j,19); write(#205) end end;

GotoXY(60,19); write(#188);

GotoXY(28,9); write('Кавминводский Институт Сервиса');

GotoXY(28,11); write('Курсовая работа по информатике');

GotoXY(31,13); write('Анализ транспортной сети');

GotoXY(27,15); write('студента 2-го курса группы ИС-03');

GotoXY(35,17); write(Дузенко Антона);

GotoXY(80,25);

readln

end;

Procedure VivodQ; (* Объемы перевозок в узлах *)

Begin clrscr;

writeln(' Столбец свободных коэффициентов ');

for i:=1 to 3 do begin writeln; writeln(Q[i]:8) end;

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure VivodA;

Begin clrscr;

write(' Матрица A '); (* Матрица соединений ветвей в узлах *)

for i:=1 to 3 do begin writeln; writeln;

for j:=1 to 6 do write(A[i,j]:3) end;

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure VivodAt;

Begin clrscr;

write(' Транспонированная Матрица A ');

for i:=1 to 6 do begin writeln; writeln;

for j:=1 to 3 do write(At[i,j]:3) end;

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure VivodR;

Begin clrscr;

write(' Матрица R ');(* Стоимости перевозок по ветвям *)

for i:=1 to 6 do begin writeln; writeln;

for j:=1 to 6 do write(R[i,j]:3) end;

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure VivodRo;

Begin clrscr;

writeln(' Обратная Матрица R ');

for i:=1 to 6 do begin writeln; writeln;

for j:=1 to 6 do write(' ',Ro[i,j]:3:1) end;

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure VivodRat;

Begin clrscr;

writeln(' Произведение Ro*At ');

for i:=1 to 6 do begin writeln; writeln;

for j:=1 to 3 do write(Rat[i,j]:5:1) end;

GotoXY(28,17);write('Press <Enter>') end;

Procedure VivodRata;

Begin clrscr;

writeln(' Произведение A*RoAt ');

for i:=1 to 3 do begin writeln; writeln;

for j:=1 to 3 do write(Rata[i,j]:5:1) end;

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure VivodU;

Begin clrscr;

writeln(' Вектор U ');

for i:=1 to 3 do begin writeln; writeln(x[i]:8:1) end;

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure det;

Begin

D:=Rata[1,1]*Rata[2,2]*Rata[3,3]+Rata[2,1]*Rata[3,2]*Rata[1,3]+

Rata[1,2]*Rata[2,3]*Rata[3,1]-Rata[1,3]*Rata[2,2]*Rata[3,1]-

Rata[1,2]*Rata[2,1]*Rata[3,3]-Rata[2,3]*Rata[3,2]*Rata[1,1] end;

Procedure VivodP;

Begin clrscr;

writeln(' Вектор потоков - P ');

for i:=1 to 6 do begin writeln; writeln(P[i]:8:1) end;

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure Proverka;

Begin writeln(' Prov=AP',' AP=-Q'); writeln;

for i:=1 to 3 do begin sum:=0;

for j:=1 to 6 do sum:=sum+A[i,j]*P[j]; Prov[i]:=sum end;

for i:= 1 to 3 do writeln(' Prov = ',Prov[i]:3:0);

GotoXY(28,17);write('Нажмите <Enter>') end;

Procedure Menu;

Begin clrscr;

GotoXY(28,3); write('1. Матрица A');

GotoXY(28,5); write('2. Транспонированная Матрица A');

GotoXY(28,7); write('3. Матрица R');

GotoXY(28,9); write('4. Обратная Матрица R');

GotoXY(28,11); write('5. Произведение A*Ro*At');

GotoXY(28,13); write('6. Вектор Q');

GotoXY(28,15); write('7. Вектор U');

GotoXY(28,17); write('8. Вектор P');

GotoXY(28,19); write('9. Проверка');

GotoXY(28,21); write('10. Выход');

GotoXY(28,24); write('Введите номер пункта меню:'); GotoXY(55,24);

readln(Nr); Clrscr;

case Nr of 1:VivodA;

2:VivodAt;

3:VivodR;

4:VivodRo;

5:VivodRata;

6:VivodQ;

7:VivodU;

8:VivodP;

9:Proverka;

10:Halt;

else gotoXY(27,12); writeln('Неправильный номер пункта!') end end;

Procedure Proizved;

Begin clrscr;

for i:=1 to 6 do

for j:=1 to 3 do begin sum:=0;

for k:=1 to 6 do sum:=sum+Ro[i,k]*At[k,j]; Rat[i,j]:=sum end end;

Procedure Proizved2;

Begin clrscr;

for i:=1 to 3 do

for j:=1 to 3 do begin sum:=0;

for k:=1 to 6 do sum:=sum+A[i,k]*Rat[k,j]; Rata[i,j]:=sum end end;

Procedure mA;

Begin

A[1,1]:=1; A[1,2]:=-1; A[1,3]:=-1; A[1,4]:=0; A[1,5]:=0; A[1,6]:=0;

A[2,1]:=0; A[2,2]:=0; A[2,3]:=0; A[2,4]:=1; A[2,5]:=-1; A[2,6]:=0;

A[3,1]:=0; A[3,2]:=0; A[3,3]:=0; A[3,4]:=0; A[3,5]:=0; A[3,6]:=1 end;

Procedure mAt;

Begin

for i:=1 to 3 do

for j:=1 to 6 do At[j,i]:=A[i,j] end;

Procedure mR;

Begin

for i:=1 to 6 do

for j:=1 to 6 do if i=j then R[i,j]:=C[i] else R[i,j]:=0 end;

Procedure mRo;

Begin

for i:=1 to 6 do

for j:=1 to 6 do if i=j then Ro[i,j]:=1/R[i,j] else Ro[i,j]:=0 end;

BEGIN

Titul; mA; mAt; mR; mRo; Proizved; Proizved2; det;

(* Присоединенная к матрице Rata матрица pRata *);

pRata[1,1]:=Rata[2,2]*Rata[3,3]-Rata[3,2]*Rata[2,3];

pRata[1,2]:=-(Rata[2,1]*Rata[3,3]-Rata[2,3]*Rata[3,1]);

pRata[1,3]:=Rata[2,1]*Rata[3,2]-Rata[3,1]*Rata[2,2];

pRata[2,1]:=-(Rata[1,2]*Rata[3,3]-Rata[3,2]*Rata[1,3]);

pRata[2,2]:=Rata[1,1]*Rata[3,3]-Rata[3,1]*Rata[1,3];

pRata[2,3]:=-(Rata[1,1]*Rata[3,2]-Rata[3,1]*Rata[1,2]);

pRata[3,1]:=Rata[1,2]*Rata[2,3]-Rata[2,2]*Rata[1,3];

pRata[3,2]:=-(Rata[1,1]*Rata[2,3]-Rata[2,1]*Rata[1,3]);

pRata[3,3]:=Rata[1,1]*Rata[2,2]-Rata[2,1]*Rata[1,2];

(* Транспонированная матрица pRata *);

for i:=1 to 3 do

for j:=1 to 3 do begin ptRata[j,i]:=pRata[i,j]

end;

(* Произведение ptRata*Q *);

for i:=1 to 3 do begin sum:=0; writeln; writeln;

for k:=1 to 3 do sum:=sum+ptRata[i,k]*Q[k]; Q1[k]:=sum; x[i]:=Q1[k]/d;

end;

(* Вычисление P=-Ro*At*U *)

for i:=1 to 6 do begin sum:=0;

for k:=1 to 3 do sum:=sum-Rat[i,k]*x[k]; P[i]:=sum end;

for i:=1 to 10 do begin Menu; readln end;

END

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.