Метод отсекающих плоскостей

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

Рубрика Экономико-математическое моделирование
Вид курсовая работа
Язык русский
Дата добавления 08.04.2014
Размер файла 69,7 K

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

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

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

Государственное образовательное учреждение

среднее профессиональное образование

«Нижегородский экономико-правовой колледж»

Цикловая комиссия спецдисциплины программирования

МЕТОД ОТСЕКАЮЩИХ ПЛОСКОСТЕЙ

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

по дисциплине «Математические методы»

Студентка Е.С.Ковалева 26.05.2005

Специальность, группа: 2203, 32-П

Допущена к защите

преподаватель

О.В. Волкова

Нижний Новгород 2005

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ПОСТАНОВКА ЗАДАЧИ

2. ОПИСАНИЕ ПРОЦЕССА ПОСТРОЕНИЯ МАТЕМАТИЧЕСКОЙ МОДЕЛИ ЗАДАЧИ

3. ОБОСНОВАНИЕ ВЫБОРА МЕТОДА РЕАЛИЗАЦИИ МОДЕЛИ

4. РАЗРАБОТКА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ

5. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

6. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ ПО РАБОТЕ С ПРОГРАММОЙ

ЛИТЕРАТУРА

ПРИЛОЖЕНИЕ

ВВЕДЕНИЕ

В планировании часто встречаются задачи, требующие отыскания целочисленного решения. Округление не целочисленного решения в ряде случаев оказывается чрезмерно грубым и ведет к большим погрешностям. Такая ситуация встречается, если продукция изготавливается малыми сериями, а нормы затрат на нее достаточно велики. В этом случае округление может привести к недопустимым нарушениям ограничений по произведенным возможностям предприятия.

Задача целочисленного линейного программирования состоит в том, чтобы найти оптимальное целочисленное решение.

Моделирование в научных исследованиях стало применяться еще в глубокой древности и постепенно захватывало все новые области научных знаний: техническое конструирование, строительство и архитектуру, астрономию, физику, химию, биологию и, наконец, общественные науки. Большие успехи и признание практически во всех отраслях современной науки принес методу XX век. Однако методология моделирования долгое время развивалась независимо отдельными науками. Отсутствовала единая система понятий, единая терминология. Лишь постепенно стала осознаваться роль моделирования как универсального метода научного познания.

Термин «модель» широко используется в различных сферах человеческой деятельности и имеет множество смысловых значений.

Модель-это система способная замещать реальный объект таким образом, чтобы давать новую информацию о нем.

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

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

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

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

математический моделирование программный пользователь

1. ПОСТАНОВКА ЗАДАЧИ

Предприятие приобретает оборудование для нового производственного участка. Для этого ему выделено 36000 рублей. Площадь для размещения оборудования должна быть не менее 6 м2 .

Можно купить оборудование двух видов:

- станки типа А стоимостью 3000 рублей, требующие производственную площадь 1 м2 и производящие 3000 единиц продукции за смену;

- станки типа Б стоимостью 2000 рублей, требующие производственную площадь 3 м2 и производящие 3000 единиц продукции за смену;

Нужно рассчитать оптимальный вариант приобретения оборудования, обеспечивающий при данных ограничениях максимум общей производительности участка за смену. Решить задачу по методу Гомори (отсекающих плоскостей).

Условие: машин типа Б может быть произведено не больше 13 штук.

2. ОПИСАНИЕ ПРОЦЕССА ПОСТРОЕНИЯ МАТЕМАТИЧЕСКОЙ МОДЕЛИ ЗАДАЧИ

Определение оптимального целочисленного решения методом Гомори начинают с отыскания оптимального плана поставленной задачи без учета ограничений на целочисленность неизвестных. Это решение легко определяется с помощью одного из вариантов симплекс-метода. Затем найденный план анализируется на целочисленнсть. Если все переменные приняли целые значения, то оптимальный план задачи линейного целочисленного программирования найден; если хотя бы одна компонента плана имеет дробную часть, к исходной системе ограничений добавляется неравенство

Математическая модель -это описание на языке математических соотношений, основных черт и свойств объекта, которое отображая и воспроизводя объект исследования дает новую информацию об объекте.

Она составляется для того, чтобы:

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

управлять реально существующими объектами и процессами.

Прогнозировать поведение развитие тех или иных объектов и процессов.

Для решения данной задачи нам дано:

F=3X1+3X2->max

3X1+2X2<=36

X1+3X2>=6

X2<=13

X1,X2>=0-целые

Из исходной математической модели переходим к канонической задаче минимизации(КМЗ):

F'=-(3X1+3X2)->min

3X1+2X2+X3=36

X1+3X2-X4=6

X2+X5=13

X1,X2,X3,X4,X5-целые

3. ОБОСНОВАНИЕ ВЫБОРА МЕТОДА РЕАЛИЗАЦИИ МОДЕЛИ

Одним из методов решения задач является метод отсекающих плоскостей, который опирается на использование симплекс-метода (Метод Гомори). Этот метод используется для решения поставленной задачи.

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

Если среди значений переменных в оптимальном плане есть дробные, то составляется дополнительное ограничение, как бы «отсекающее» дробную часть решения, но оставляющее в силе все прочие условия, которым должен удовлетворять оптимальный план. Дополнительное ограничение присоединяется к исходным ограничениям задачи и к расширенной системе вновь применяется симплексная процедура.

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

Этот алгоритм позволяет за конечное число шагов прийти к оптимальному целочисленному решению, если оно существует.

Рассмотрим суть метода на примере задачи курсового проекта.

Во втором разделе я составили математическую модель рассматриваемой задачи дискретного программирования:

F=3X1+3X2->max

3X1+2X2<=36

X1+3X2>=6

X2<=13

X1,X2>=0-целые

Для решения задачу приводим к канонической задаче минимизации. Заменим функции F на F', где F'=-F.

Тогда F'= - (3X1+3X2)->min

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

В данной задаче имеется 3 ограничения, требующие приведения к равенству. Добавим в первое ограничение переменную X3, во втором вычтем переменную X4, в третье ограничение добавим переменную X5.

Имеем:

3X1+2X2+X3=36

X1+3X2-X4=6

X2+X5=13

Получаем:

F'=-(3X1+3X2)->min

3X1+2X2+X3=36

X1+3X2-X4=6

X2+X5=13

X1,X2,X3,X4,X5-целые

Математическая модель задачи является канонической задачей минимизации.

F' = - (3X1 + 3X2) -> min

3X1 + 2X2 + X3 = 36

- X1 - 3X2 + X4 = 6

X2 + X5 = 13

X1,X2,X3,X4,X5-целые

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

1 Симплекс - таблица

X1

X2

X3

X4

X5

В

3

2

1

0

0

36

-1

-3

0

1

0

-6

0

1

0

0

1

13

3

3

0

0

0

0

Промежуточные значения определяются по методу Гаусса. По данной таблице они будут следующие:

x1 = 0, x2 = 0, x3 = 36, x4 = 6, x5 = 13

F' = 0; F = 0

2 Симплекс - таблица

X1

X2

X3

X4

X5

В

1

2/3

1/3

0

0

12

0

-7/3

1/3

1

0

6

0

1

0

0

1

13

0

1

-1

0

0

-36

Промежуточные значения:

x1 = 12, x2 = 0, x3 = 0, x4 = 6, x5 = 13

F' = -36; F = 36

3 Симплекс - таблица

X1

X2

X3

X4

X5

В

1

0

1/3

0

-2/3

10/3

0

0

1/3

1

7/3

25/3

0

1

0

0

1

13

0

0

-1

0

-1

-49

Итак, в оптимальном плане для целочисленной задачи:

x1 = 10/3, x2 = 13, x3 = 0, x4 = 25/3, x5 = 0, а максимум целевой функции F = 49

Но x1 = 10/3 и x4 = 25/3являются нецелыми числами, поэтому составляется дополнительное ограничение к исходным.

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

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

Таким образом, дополнительное неравенство имеет вид:

A(i,j)* · X(j)>= B*(i),

Где i - номер строки, для которой составляется дополнительное ограничение;

A(i,j) и B(i) - величины, взятые из строки в последней симплекс-таблице;

A(i,j)* и B*(i) - дробные части чисел A(i,j) и B(i)

Для рассматриваемой задачи:

(1 -[1])X1 + (0 - [0])X2 +(1/3 - [1/3])X3 + (0 - [0])X4 + (-2/3 - [-2/3])X5 >= (10/3 - 3)

или получаем:

1.3X3 +1/3X5 >= 1/3 /*3

иначе:

X3 + X5 >= 1 (*)

Теперь неравенство (*) добавляется в последнюю ММ и снова решается задача симплекс-методом:

ММ:

F=3X1+3X2->max

3X1+2X2<=36

X1+3X2>=6

X2<=13

X3 + X5 >= 1

X1,X2,X3,X4,X5>=0

КЗМ

F'=-(3X1+3X2)->min

3X1+2X2+X3=36

- X1 - 3X2+X4= - 6

X2+X5=13

- X3 - X5 + X6 = - 1

X1,X2,X3,X4,X5,X6>=0

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

В симплекс-таблицах:

1 Симплекс - таблица

X1

X2

X3

X4

X5

X6

В

3

2

1

0

0

0

36

-1

-3

0

1

0

0

-6

0

1

0

0

1

0

13

0

0

- 1

0

- 1

1

- 1

3

3

0

0

0

0

0

Промежуточные значения:

x1 = 0, x2 = 0, x3 = 0, x4 = - 6, x5 = 0, x6 = = 1

F' = 0; F = 0

2 Симплекс - таблица

X1

X2

X3

X4

X5

X6

В

3

2

1

0

0

0

36

-1

-3

0

1

0

0

-6

0

1

0

0

1

0

13

0

0

- 1

0

0

1

12

3

3

0

0

0

0

0

Промежуточные значения:

x1 = 0, x2 = 0, x3 = 0, x4 = - 6, x5 = 13, x6 = 12

F' = 0; F = 0

3 Симплекс - таблица

X1

X2

X3

X4

X5

X6

В

3

2

1

0

0

0

36

-1

-3

0

1

0

0

-6

0

1

0

0

1

0

13

3

3

0

0

0

1

48

3

3

0

0

0

0

0

Промежуточные значения:

x1 = 0, x2 = 0, x3 = 36, x4 = - 6, x5 = 13, x6 = 48

F' = 0; F = 0

4 Симплекс - таблица

X1

X2

X3

X4

X5

X6

В

1

2/3

1/3

0

0

0

12

0

-7/3

1/3

1

0

0

6

0

1

0

0

1

0

13

0

1

- 1

0

0

1

12

0

1

- 1

0

0

0

- 36

Промежуточные значения:

x1 = 12, x2 = 0, x3 = 0, x4 = 6, x5 = 13, x6 = 12

F' = - 36; F = 36

5 Симплекс - таблица

X1

X2

X3

X4

X5

X6

В

1

0

1

0

0

- 2/3

4

0

0

- 2

1

0

7/3

34

0

0

1

0

1

- 1

1

0

1

- 1

0

0

1

12

0

0

0

0

0

- 1

- 48

Таким образом, повторив процесс решения симплексным методом применительно к расширенной системе ограничений, получим новый оптимальный план, в котором значения переменных, входящих в базис, равны:

x1 = 4, x2 = 12, x3 = 0, x4 = 34, x5 = 1, x6 = 0

Максимум целевой функции: F' = - 48; F = 48

Решение исходной математической модели вторым способом аналогично.

4. РАЗРАБОТКА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ

5. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Visual Basic (VB)- это легкий способ разработки собственных программ для Windows, передовая и высокоэффективная система разработки приложений Windows, требующая минимум средств и усилий. Созданные на VB приложения и компоненты можно компилировать с помощью оптимизирующего компилятора, ядро которого идентично применяемому в языке программирования Microsoft C.

VB предоставляет команды для создания и управления необходимыми элементами программы в Windows: диалогами, окнами, линейками меню, раскрывающимися списками, командными списками, панелями инструментов и так далее.

В частности VB включает необходимые команды для использования Object Linking and Embedding (OLE) и Dynamic Data Exchange (DDE) для связи или совместного использования данных с другими приложениями Windows. VB является существенно новым языком программирования для Windows со своими корнями в Basic.

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

Простота и мощность языка VB позволит сделать его встроенным языком для приложений Microsoft Office, т.е. он работает с пакетом Microsoft Office и ресурсами Internet. Многие усовершенствованные средства VB поддерживают загрузку и развертывание по сети, а также все возможности ActiveX-документов с применением технологий Internet Explorer 4.

6. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ ПО РАБОТЕ С ПРОГРАММОЙ

Для работы данной программы необходимо как минимум процессор Pentium II , приложение Visual Basic и операционную систему Windows 95

После запуска файла Kursovik.exe загрузится окно Меню, в котором вы сможете работать с программой. Перед вами будет отображено следующие кнопки. Следует начать работу с кнопки «Постановка задачи и ввод переменных».После нажатия этой кнопки в этом же окне будет отображена постановка задачи и вам будет предложено ввести функции затрат на производство и хранение продукции. Одновременно с появлением нового окна кнопка меню «Постановка задачи и ввод переменных» заменяется на кнопку «Очистить», т.е. если ввели не те значения, то можно очистить поля при помощи этой кнопки.

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

Если вы хотите просмотреть, отредактировать или ввести новые значения затрат, то вам необходимо нажать снова на кнопку «Постановка задачи и ввод переменных».

Также можно просмотреть информацию об авторе при помощи кнопки «Об авторе». А если вы захотите завершить работу с программой, то нажмите на кнопку «Выход».

ЛИТЕРАТУРА

1. А.В. Горстко “Познакомьтесь с математическим моделированием”. - Москва, Знания, 1991 год

2. И.А.Калихман “Сборник задач по математическому программированию”. - Москва, Высшая школа, 1975 год

3. А.И.Карасев, И.Ш.Крамер, Т.И.Савельева ”Математические методы и модели в планировании”. - Москва, Экономика, 1987 год

4. Ларионов А.И., Юрченко Т.И., Новоселов А.А. “Экономико-математические методы в планировании”Москва 1991г.

5. Малик Г.С. “Основы экономики и математические методы в планировании” Москва 1988г.

ПРИЛОЖЕНИЕ

Option Base 1

Option Explicit

Dim I(7), II(7), III(7), IV(7), V(7) As Single 'Массивы для считывания значений из матрицы по строкам

Dim max, min, rasel, St(2), Delen(5) As Single

Dim k, ct, ctr, ext, slct As Integer

Dim ochist As Boolean

Private Sub CommandButton1_Click()

Dim TxtBx As Object

Dim pstr As String

Dim w, q, j As Integer

w = 0

For Each TxtBx In frmNach.Controls

w = w + 1

If w > 7 And w < 22 Then

pstr = CStr(TxtBx.Text)

q = Len(pstr)

For j = 1 To q

If Mid(pstr, j, 1) = "." Then

Mid(pstr, j, 1) = ","

End If

Next j

TxtBx.Text = pstr

End If

Next TxtBx

If IsNumeric(TextBox1) = False Or IsNumeric(TextBox2) = False _

Or IsNumeric(TextBox3) = False Or IsNumeric(TextBox4) = False _

Or IsNumeric(TextBox5) = False Or IsNumeric(TextBox6) = False _

Or IsNumeric(TextBox7) = False Or IsNumeric(TextBox8) = False _

Or IsNumeric(TextBox9) = False Or IsNumeric(TextBox10) = False _

Or IsNumeric(TextBox11) = False Or IsNumeric(TextBox12) = False _

Or IsNumeric(TextBox13) = False Or IsNumeric(TextBox14) = False _

Then

MsgBox "Не введены или неверно введены данные" _

, vbOKOnly, "ВВедите данные"

Else

Решение

End If

End Sub

Private Sub ПерваяТаблица()

Dim j, l As Integer

'Заполнение 1-ой симплекс таблицы

For j = 1 To 7

Cells(4, j) = I(j)

Cells(5, j) = II(j)

Cells(6, j) = III(j)

Cells(7, j) = IV(j)

Cells(8, j) = V(j)

Next j

For l = 1 To 2

For j = 1 To 4

If Cells(3 + j, l) = 1 Then

St(l) = Cells(3 + j, 7)

ElseIf Cells(3 + j, l) <> 0 Then

St(l) = 0

Exit For

End If

Next j

Next l

For j = 1 To 7

If V(j) > 0 Then

Exit For

End If

If j = 7 Then

Ответ "A9", V(7), St(1), St(2)

ext = 1

End If

Next j

End Sub

Private Sub ВтораяТаблица()

Всю строку с разрешающим элементом делим на разрешающий элемент и заносим полученные значения во вторую симплекс-таблицу

Dim j, l As Integer

Модуль1.Копирование "A10:G16"

Cells(10, 1) = "Вторая симплекс-таблица"

For j = 1 To 7

If ctr = 1 Then

I(j) = I(j) / rasel

End If

If ctr = 2 Then

II(j) = II(j) / rasel

End If

If ctr = 3 Then

III(j) = III(j) / rasel

End If

If ctr = 4 Then

IV(j) = IV(j) / rasel

End If

Next j

Вычитаем из остальных строк разрешающую строку, так чтобы получить в столбце, выбранном главным в 1-ой симплекс таблице, нулевые значения.

For j = 1 To 7

If ctr = 1 Then

Cells(12, j) = I(j)

II(j) = II(j) - Delen(2) * I(j)

Cells(13, j) = II(j)

III(j) = III(j) - Delen(3) * I(j)

Cells(14, j) = III(j)

IV(j) = IV(j) - Delen(4) * I(j)

Cells(15, j) = IV(j)

V(j) = V(j) - Delen(5) * I(j)

Cells(16, j) = V(j)

End If

If ctr = 2 Then

I(j) = I(j) - Delen(1) * II(j)

Cells(12, j) = I(j)

Cells(13, j) = II(j)

III(j) = III(j) - Delen(3) * II(j)

Cells(14, j) = III(j)

IV(j) = IV(j) - Delen(4) * II(j)

Cells(15, j) = IV(j)

V(j) = V(j) - Delen(5) * II(j)

Cells(16, j) = V(j)

End If

If ctr = 3 Then

I(j) = I(j) - Delen(1) * III(j)

Cells(12, j) = I(j)

II(j) = II(j) - Delen(2) * III(j)

Cells(13, j) = II(j)

Cells(14, j) = III(j)

IV(j) = IV(j) - Delen(4) * IV(j)

Cells(15, j) = IV(j)

V(j) = V(j) - Delen(5) * III(j)

Cells(16, j) = V(j)

End If

If ctr = 4 Then

I(j) = I(j) - Delen(1) * IV(j)

Cells(12, j) = I(j)

II(j) = II(j) - Delen(2) * IV(j)

Cells(13, j) = II(j)

III(j) = III(j) - Delen(3) * IV(j)

Cells(14, j) = III(j)

Cells(15, j) = IV(j)

V(j) = V(j) - Delen(5) * IV(j)

Cells(16, j) = V(j)

End If

Next j

For l = 1 To 2

For j = 1 To 4

If Cells(11 + j, l) = 1 Then

St(l) = Cells(11 + j, 7)

ElseIf Cells(11 + j, l) <> 0 Then

St(l) = 0

Exit For

End If

Next j

Next l

For j = 1 To 7

If V(j) > 0 Then

Exit For

End If

If j = 7 Then

Ответ "A17", V(7), St(1), St(2)

ext = 1

End If

Next j

End Sub

Private Sub ТретьяТаблица()

Всю строку с разрешающим элементом делим на разрешающий элемент и заносим полученные значения во вторую симплекс-таблицу

Dim j, l As Integer

Модуль1.Копирование "A18:G24"

Cells(18, 1) = "Третья симплекс-таблица"

For j = 1 To 7

If ctr = 1 Then

I(j) = I(j) / rasel

End If

If ctr = 2 Then

II(j) = II(j) / rasel

End If

If ctr = 3 Then

III(j) = III(j) / rasel

End If

If ctr = 4 Then

IV(j) = IV(j) / rasel

End If

Next j

Вычитаем из остальных строк разрешающую строку, так чтобы получить в столбце, выбранном главным в 1-ой симплекс таблице, нулевые значения.

For j = 1 To 7

If ctr = 1 Then

Cells(20, j) = I(j)

II(j) = II(j) - Delen(2) * I(j)

Cells(21, j) = II(j)

III(j) = III(j) - Delen(3) * I(j)

Cells(22, j) = III(j)

IV(j) = IV(j) - Delen(4) * I(j)

Cells(23, j) = IV(j)

V(j) = V(j) - Delen(5) * I(j)

Cells(24, j) = V(j)

End If

If ctr = 2 Then

I(j) = I(j) - Delen(1) * II(j)

Cells(20, j) = I(j)

Cells(21, j) = II(j)

III(j) = III(j) - Delen(3) * II(j)

Cells(22, j) = III(j)

IV(j) = IV(j) - Delen(4) * II(j)

Cells(23, j) = IV(j)

V(j) = V(j) - Delen(5) * II(j)

Cells(24, j) = V(j)

End If

If ctr = 3 Then

I(j) = I(j) - Delen(1) * III(j)

Cells(20, j) = I(j)

II(j) = II(j) - Delen(2) * III(j)

Cells(21, j) = II(j)

Cells(22, j) = III(j)

IV(j) = IV(j) - Delen(4) * IV(j)

Cells(23, j) = IV(j)

V(j) = V(j) - Delen(5) * III(j)

Cells(24, j) = V(j)

End If

If ctr = 4 Then

I(j) = I(j) - Delen(1) * IV(j)

Cells(20, j) = I(j)

II(j) = II(j) - Delen(2) * IV(j)

Cells(21, j) = II(j)

III(j) = III(j) - Delen(3) * IV(j)

Cells(22, j) = III(j)

Cells(23, j) = IV(j)

V(j) = V(j) - Delen(5) * IV(j)

Cells(24, j) = V(j)

End If

Next j

For l = 1 To 2

For j = 1 To 4

If Cells(19 + j, l) = 1 Then

St(l) = Cells(19 + j, 7)

ElseIf Cells(19 + j, l) <> 0 Then

St(l) = 0

Exit For

End If

Next j

Next l

For j = 1 To 7

If V(j) > 0 Then

Exit For

End If

If j = 7 Then

Ответ "A25", V(7), St(1), St(2)

Next = 1

End If

Next j

End Sub

Private Sub ЧетвертаяТаблица()

Всю строку с разрешающим элементом делим на разрешающий элемент и заносим полученные значения во вторую симплекс-таблицу

Dim j, l As Integer

Модуль1.Копирование "A26:G32"

Cells(26, 1) = "Четвертая симплекс таблица"

For j = 1 To 7

If ctr = 1 Then

I(j) = I(j) / rasel

End If

If ctr = 2 Then

II(j) = II(j) / rasel

End If

If ctr = 3 Then

III(j) = III(j) / rasel

End If

If ctr = 4 Then

IV(j) = IV(j) / rasel

End If

Next j

Вычитаем из остальных строк разрешающую строку, так чтобы получить в столбце, выбранном главным в 1-ой симплекс таблице, нулевые значения.

For j = 1 To 7

If ctr = 1 Then

Cells(28, j) = I(j)

II(j) = II(j) - Delen(2) * I(j)

Cells(29, j) = II(j)

III(j) = III(j) - Delen(3) * I(j)

Cells(30, j) = III(j)

IV(j) = IV(j) - Delen(4) * I(j)

Cells(31, j) = IV(j)

V(j) = V(j) - Delen(5) * I(j)

Cells(32, j) = V(j)

End If

If ctr = 2 Then

I(j) = I(j) - Delen(1) * II(j)

Cells(28, j) = I(j)

Cells(29, j) = II(j)

III(j) = III(j) - Delen(3) * II(j)

Cells(30, j) = III(j)

IV(j) = IV(j) - Delen(4) * II(j)

Cells(31, j) = IV(j)

V(j) = V(j) - Delen(5) * II(j)

Cells(32, j) = V(j)

End If

If ctr = 3 Then

I(j) = I(j) - Delen(1) * III(j)

Cells(28, j) = I(j)

II(j) = II(j) - Delen(2) * III(j)

Cells(29, j) = II(j)

Cells(30, j) = III(j)

IV(j) = IV(j) - Delen(4) * IV(j)

Cells(31, j) = IV(j)

V(j) = V(j) - Delen(5) * III(j)

Cells(32, j) = V(j)

End If

If ctr = 4 Then

I(j) = I(j) - Delen(1) * IV(j)

Cells(28, j) = I(j)

II(j) = II(j) - Delen(2) * IV(j)

Cells(29, j) = II(j)

III(j) = III(j) - Delen(3) * IV(j)

Cells(30, j) = III(j)

Cells(31, j) = IV(j)

V(j) = V(j) - Delen(5) * IV(j)

Cells(32, j) = V(j)

End If

Next j

For l = 1 To 2

For j = 1 To 4

If Cells(27 + j, l) = 1 Then

St(l) = Cells(27 + j, 7)

ElseIf Cells(27 + j, l) <> 0 Then

St(l) = 0

Exit For

End If

Next j

Next l

For j = 1 To 7

If V(j) > 0 Then

Exit For

End If

If j = 7 Then

Ответ "A33", V(7), St(1), St(2)

ext = 1

End If

Next j

End Sub

Private Sub ПятаяТаблица()

Всю строку с разрешающим элементом делим на разрешающий элемент и заносим полученные значения во вторую симплекс-таблицу

Dim j, l As Integer

Модуль1.Копирование "A34:G40"

Cells(34, 1) = "Пятая симплекс-таблица"

For j = 1 To 7

If ctr = 1 Then

I(j) = I(j) / rasel

End If

If ctr = 2 Then

II(j) = II(j) / rasel

End If

If ctr = 3 Then

III(j) = III(j) / rasel

End If

If ctr = 4 Then

IV(j) = IV(j) / rasel

End If

Next j

Вычитаем из остальных строк разрешающую строку, так чтобы получить в столбце, выбранном главным в 1-ой симплекс таблице, нулевые значения.

For j = 1 To 7

If ctr = 1 Then

Cells(36, j) = I(j)

II(j) = II(j) - Delen(2) * I(j)

Cells(37, j) = II(j)

III(j) = III(j) - Delen(3) * I(j)

Cells(38, j) = III(j)

IV(j) = IV(j) - Delen(4) * I(j)

Cells(39, j) = IV(j)

V(j) = V(j) - Delen(5) * I(j)

Cells(40, j) = V(j)

End If

If ctr = 2 Then

I(j) = I(j) - Delen(1) * II(j)

Cells(36, j) = I(j)

Cells(37, j) = II(j)

III(j) = III(j) - Delen(3) * II(j)

Cells(38, j) = III(j)

IV(j) = IV(j) - Delen(4) * II(j)

Cells(39, j) = IV(j)

V(j) = V(j) - Delen(5) * II(j)

Cells(40, j) = V(j)

End If

If ctr = 3 Then

I(j) = I(j) - Delen(1) * III(j)

Cells(36, j) = I(j)

II(j) = II(j) - Delen(2) * III(j)

Cells(37, j) = II(j)

Cells(38, j) = III(j)

IV(j) = IV(j) - Delen(4) * IV(j)

Cells(39, j) = IV(j)

V(j) = V(j) - Delen(5) * III(j)

Cells(40, j) = V(j)

End If

If ctr = 4 Then

I(j) = I(j) - Delen(1) * IV(j)

Cells(36, j) = I(j)

II(j) = II(j) - Delen(2) * IV(j)

Cells(37, j) = II(j)

III(j) = III(j) - Delen(3) * IV(j)

Cells(38, j) = III(j)

Cells(39, j) = IV(j)

V(j) = V(j) - Delen(5) * IV(j)

Cells(40, j) = V(j)

End If

Next j

For l = 1 To 2

For j = 1 To 4

If Cells(36 + j, l) = 1 Then

St(l) = Cells(36 + j, 7)

ElseIf Cells(36 + j, l) <> 0 Then

St(l) = 0

Exit For

End If

Next j

Next l

For j = 1 To 7

If V(j) > 0 Then

Exit For

End If

If j = 7 Then

Ответ "H40", V(7), St(1), St(2)

ext = 1

End If

Next j

End Sub

Private Sub ШестаяТаблица()

Всю строку с разрешающим элементом делим на разрешающий элемент и заносим полученные значения во вторую симплекс-таблицу

Dim j, l As Integer

Модуль1.Копирование "A42:G48"

Cells(42, 1) = "Шестая симплекс-таблица"

For j = 1 To 7

If ctr = 1 Then

I(j) = I(j) / rasel

End If

If ctr = 2 Then

II(j) = II(j) / rasel

End If

If ctr = 3 Then

III(j) = III(j) / rasel

End If

If ctr = 4 Then

IV(j) = IV(j) / rasel

End If

Next j

Вычитаем из остальных строк разрешающую строку, так чтобы получитьmв столбце, выбранном главным в 1-ой симплекс таблице, нулевые значения.

For j = 1 To 7

If ctr = 1 Then

Cells(44, j) = I(j)

II(j) = II(j) - Delen(2) * I(j)

Cells(45, j) = II(j)

III(j) = III(j) - Delen(3) * I(j)

Cells(46, j) = III(j)

IV(j) = IV(j) - Delen(4) * I(j)

Cells(47, j) = IV(j)

V(j) = V(j) - Delen(5) * I(j)

Cells(48, j) = V(j)

End If

If ctr = 2 Then

I(j) = I(j) - Delen(1) * II(j)

Cells(44, j) = I(j)

Cells(45, j) = II(j)

III(j) = III(j) - Delen(3) * II(j)

Cells(46, j) = III(j)

IV(j) = IV(j) - Delen(4) * II(j)

Cells(47, j) = IV(j)

V(j) = V(j) - Delen(5) * II(j)

Cells(48, j) = V(j)

End If

If ctr = 3 Then

I(j) = I(j) - Delen(1) * III(j)

Cells(44, j) = I(j)

II(j) = II(j) - Delen(2) * III(j)

Cells(45, j) = II(j)

Cells(46, j) = III(j)

IV(j) = IV(j) - Delen(4) * IV(j)

Cells(47, j) = IV(j)

V(j) = V(j) - Delen(5) * III(j)

Cells(48, j) = V(j)

End If

If ctr = 4 Then

I(j) = I(j) - Delen(1) * IV(j)

Cells(44, j) = I(j)

II(j) = II(j) - Delen(2) * IV(j)

Cells(45, j) = II(j)

III(j) = III(j) - Delen(3) * IV(j)

Cells(46, j) = III(j)

Cells(47, j) = IV(j)

V(j) = V(j) - Delen(5) * IV(j)

Cells(48, j) = V(j)

End If

Next j

For l = 1 To 2

For j = 1 To 4

If Cells(43 + j, l) = 1 Then

St(l) = Cells(43 + j, 7)

ElseIf Cells(43 + j, l) <> 0 Then

St(l) = 0

Exit For

End If

Next j

Next l

For j = 1 To 7

If V(j) > 0 Then

Exit For

End If

If j = 7 Then

Ответ "H48", V(7), St(1), St(2)

ext = 1

End If

Next j

End Sub

Private Sub Решение()

Worksheets("Решение").Activate

Модуль1.Очистка

frmNach.Hide

ПервыйШаг

End Sub

Private Sub ПервыйШаг()

Передаем начальные значения в массивы, которые соответствуют строкам таблицы. I - первая строка, II - вторая строка и т.д.

ext = 0

I(1) = CSng(TextBox5.Text)

I(2) = CSng(TextBox9.Text)

I(3) = 1

I(4) = 0

I(5) = 0

I(6) = 0

I(7) = CSng(TextBox1.Text)

II(1) = CSng(TextBox6.Text)

II(2) = CSng(TextBox10.Text)

II(3) = 0

II(4) = 1

II(5) = 0

II(6) = 0

II(7) = CSng(TextBox2.Text)

III(1) = CSng(TextBox7.Text)

III(2) = CSng(TextBox11.Text)

III(3) = 0

III(4) = 0

III(5) = 1

III(6) = 0

III(7) = CSng(TextBox3.Text)

IV(1) = CSng(TextBox8.Text)

IV(2) = CSng(TextBox12.Text)

IV(3) = 0

IV(4) = 0

IV(5) = 0

IV(6) = 0

IV(7) = CSng(TextBox4.Text)

V(1) = CSng(TextBox13.Text)

V(2) = CSng(TextBox14.Text)

V(3) = 0

V(4) = 0

V(5) = 0

V(6) = 0

V(7) = 0

ПерваяТаблица

Модуль1.Ixes 3

If ext = 1 Then

Exit Sub

End If

slct = 3

Расчеты

ВтораяТаблица

Модуль1.Ixes 11

If ext = 1 Then

Exit Sub

End If

slct = 11

Расчеты

ТретьяТаблица

Модуль1.Ixes 19

If ext = 1 Then

Exit Sub

End If

slct = 19

Расчеты

ЧетвертаяТаблица

Модуль1.Ixes 27

If ext = 1 Then

Exit Sub

End If

'Расчеты

'ПятаяТаблица

'If ext = 1 Then

' Exit Sub

'End If

'Расчеты

'ШестаяТаблица

'Loop While ext <> 1

End Sub

Private Sub Расчеты()

Обнуление масива преобразованных столбцов

For k = 1 To 2

St(k) = 0

Next k

Нахождение главного столбца

max = 0

For k = 1 To 6

If V(k) > max Then max = V(k): ct = k

Next k

Переменная ct является номером главного столбца

Нахождение разрешающей строки

min = 100000

If I(ct) > 0 Then min = I(7) / I(ct): ctr = 1

If II(ct) > 0 Then If min > II(7) / II(ct) Then min = II(7) / II(ct): ctr = 2

If III(ct) > 0 Then If III(7) / III(ct) < min Then min = III(7) / III(ct): ctr = 3

If IV(ct) > 0 Then If IV(7) / IV(ct) < min Then min = IV(7) / IV(ct): ctr = 4

Переменная ctr является номером разрешающей строки

Нахождение разрешающего элемента

If ctr = 1 Then rasel = I(ct)

If ctr = 2 Then rasel = II(ct)

If ctr = 3 Then rasel = III(ct)

If ctr = 4 Then rasel = IV(ct)

Delen(1) = I(ct)

Delen(2) = II(ct)

Delen(3) = III(ct)

Delen(4) = IV(ct)

Delen(5) = V(ct)

Модуль1.Borders slct + 1, ct, slct + 5, ct

Модуль1.Borders slct + ctr, ct, slct + ctr, 7

Cells(slct + ctr, ct).Select

Selection.Interior.ColorIndex = 22

End Sub

Private Sub CommandButton2_Click()

TextBox1 = ""

TextBox2 = ""

TextBox3 = ""

TextBox4 = ""

TextBox5 = ""

TextBox6 = ""

TextBox7 = ""

TextBox8 = ""

TextBox9 = ""

TextBox10 = ""

TextBox11 = ""

TextBox12 = ""

TextBox13 = ""

TextBox14 = ""

End Sub

Private Sub CommandButton3_Click()

frmNach.Hide

frmStart.Show

End Sub

Private Sub CommandButton4_Click()

TextBox1 = ""

TextBox2 = ""

TextBox3 = ""

TextBox4 = ""

TextBox5 = ""

TextBox6 = ""

TextBox7 = ""

TextBox8 = ""

TextBox9 = ""

TextBox10 = ""

TextBox11 = ""

TextBox12 = ""

TextBox13 = ""

TextBox14 = ""

End Sub

Private Sub TextBox1_Change()

End Sub

Private Sub UserForm_Activate()

Top = 0

Left = 0

'Height = screen

'Width = screen

End Sub

Private Sub UserForm_Initialize()

TextBox1 = ""

TextBox2 = ""

TextBox3 = ""

TextBox4 = ""

TextBox5 = ""

TextBox6 = ""

TextBox7 = ""

TextBox8 = ""

TextBox9 = ""

TextBox10 = ""

TextBox11 = ""

TextBox12 = ""

TextBox13 = ""

TextBox14 = ""

End Sub

Private Sub CommandButton1_Click()

Me.Hide

frmNach.Show

End Sub

Private Sub CommandButton2_Click()

Me.Hide

frmZadacha.Show

End Sub

Private Sub CommandButton3_Click()

MsgBox "Программу составила Ковалева Елена" _

, vbOKOnly, "Об авторе"

End Sub

Private Sub CommandButton4_Click()

Me.Hide

Worksheets("Старт").CommandButton1.Visible = True

End Sub

Sub Макрос1()

Макрос1 Макрос

Макрос записан 08.03.2004 (HaV)

Cells.Select

With Selection.Interior

ColorIndex = 15

.Pattern = xlSolid

End With

Selection.Interior.ColorIndex = 15

Range("D4").Select

Sheets("Решение").Select

End Sub

Sub ФорматЯч()

ФорматЯч Макрос

Макрос записан 08.03.2004 (HaV)

Range("A4:G8").Select

Selection.NumberFormat = "0.00"

End Sub

Sub Макрос3()

Макрос3 Макрос

Макрос записан 08.03.2004 (HaV)

Application.CutCopyMode = False

Range("A2:G8").Select

Selection.Copy

Range("C12").Select

Application.CutCopyMode = False

End Sub

Sub Border()

Border Макрос

Макрос записан 21.03.2004 (HaV)

Range("A12:A16").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Range("A12:G12").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

Selection.Borders(xlInsideVertical).LineStyle = xlNone

Range("K10").Select

End Sub

Sub Bordr()

Bordr Макрос

Макрос записан 21.03.2004 (HaV)

Range("D20:D24").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

Range("D21:G21").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = 19

End With

Range("D21").Select

With Selection.Interior

.ColorIndex = 22

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

End With

Range("J24").Select

End Sub

Option Explicit

Sub Очистка()

Worksheets("Решение").Cells.Select

Selection.Clear

Selection.Interior.ColorIndex = 15

Worksheets("СимплТабл").Range("A2:G8").Copy

Worksheets("Решение").Range("A2:G8").Insert

Application.CutCopyMode = False

Range("A1").Select

End Sub

Sub Копирование(ByVal rng As String)

Worksheets("СимплТабл").Range("A2:G8").Copy

Range(rng).Insert

Application.CutCopyMode = False

End Sub

Sub Ответ(ByVal rng As String, ByVal rez, ByVal Ix1, ByVal Ix2 As Single)

Dim fopt, x1, x2 As String

fopt = CStr(Abs(rez))

x1 = CStr(Ix1)

x2 = CStr(Ix2)

fopt = Mid(fopt, 1, 5)

x1 = Mid(x1, 1, 5)

x2 = Mid(x2, 1, 5)

Range(rng) = "Ответ:" + " Fопт.=" + fopt + " X1=" + x1 + " X2=" + x2

With frmNach

.Label9.Caption = x1 * CSng(.TextBox13.Text)

.Label10.Caption = x2 * CSng(.TextBox14.Text)

End With

End Sub

Public Sub Ixes(ByVal stroka As Integer)

Dim p, j As Integer

Dim vspom, str As Integer

Dim znach, ixs, fs As String

For p = 1 To 6

vspom = 0

For j = 1 To 4

If Worksheets("Решение").Cells(stroka + j, p).Value <> 0 Then

vspom = vspom + 1

If Worksheets("Решение").Cells(stroka + j, p).Value = 1 Then

str = j

End If

End If

Next j

If vspom = 1 Then

ixs = CStr(Worksheets("Решение").Cells(stroka + str, 7).Value)

ixs = Mid(ixs, 1, 5)

znach = "x" + CStr(p) + "=" + ixs

Worksheets("Решение").Cells(stroka + (p - 2), 9).Value = znach

Else

Worksheets("Решение").Cells(stroka + (p - 2), 9).Value = "x" + CStr(p) + "=" + CStr(0)

End If

Next p

fs = CStr(Worksheets("Решение").Cells(stroka + 5, 7).Value)

fs = Mid(fs, 1, 5)

Worksheets("Решение").Cells(stroka + 5, 9).Value = "F'=" + fs

End Sub

Public Sub Borders(ByVal strk1 As Integer, ByVal Stlb1 As Integer, ByVal strk2 As Integer, ByVal Stlb2 As Integer)

Range(Cells(strk1, Stlb1), Cells(strk2, Stlb2)).Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

' .LineStyle = xlContinuous

' .Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeTop)

' .LineStyle = xlContinuous

' .Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeBottom)

'.LineStyle = xlContinuous

'.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlEdgeRight)

'.LineStyle = xlContinuous

'.Weight = xlThick

.ColorIndex = 19

End With

With Selection.Borders(xlInsideHorizontal)

' .LineStyle = xlContinuous

' .Weight = xlThin

' .ColorIndex = xlAutomatic

End With

End Sub

Private Sub Workbook_Open()

Worksheets("Старт").Activate

End Sub

Private Sub CommandButton1_Click()

CommandButton1.Visible = False

frmStart.Show

End Sub

Private Sub CommandButton1_Click()

Worksheets("Старт").Activate

frmNach.Show

End Sub

Первая симплекс таблица

x1=0

X1

X2

X3

X4

X5

X6

B

x2=0

3,00

2,00

1,00

0,00

0,00

0,00

36,00

x3=36

-1,00

-3,00

0,00

1,00

0,00

0,00

-6,00

x4=-6

0,00

1,00

0,00

0,00

1,00

0,00

13,00

x5=13

3,00

3,00

0,00

0,00

0,00

0,00

0,00

F'=0

Вторая симплекс-таблица

x1=12

X1

X2

X3

X4

X5

X6

B

x2=0

1,00

0,67

0,33

0,00

0,00

0,00

12,00

x3=0

0,00

-2,33

0,33

1,00

0,00

0,00

6,00

x4=6

0,00

1,00

0,00

0,00

1,00

0,00

13,00

x5=13

0,00

1,00

-1,00

0,00

0,00

0,00

-36,00

F'=-36

Третья симплекс-таблица

x1=3,333

X1

X2

X3

X4

X5

X6

B

x2=13

1,00

0,00

0,33

0,00

-0,67

0,00

3,33

x3=0

0,00

0,00

0,33

1,00

2,33

0,00

36,33

x4=36,33

0,00

1,00

0,00

0,00

1,00

0,00

13,00

x5=0

0,00

0,00

-1,00

0,00

-1,00

0,00

-49,00

F'=-49

Ответ: Fопт.=49 X1=3,333 X2=13

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


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

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