Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Математические методы / ДЗ / ДЗ №1 Павлючук

.docx
Скачиваний:
35
Добавлен:
25.05.2017
Размер:
95.46 Кб
Скачать

МІНІСТРЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ АВІЦІЙНИЙ УНИВЕРСИТЕТ

ІНСТИТУТ КОМ'ЮТЕРНИХ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ

Домашнє завдання №1

з дисципліни: «Математичні методи дослідження операцій»

Виконав

Студент групи ТП-213

Павлючук О.

Прийняв:

Моржов В.І.

Київ 2017

Домашнее задание №1

по дисциплине “Математические методы исследования операций”.

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

В процессе выполнения домашнего задания необходимо:

- построить графики для заданного массива чисел;

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

- рассчитать значение коэффициентов системы линейных уравнений, описывающих двумерную поверхность;

- свести коэффициенты линейных уравнений в таблицу;

- разработать алгоритм вычислительного процесса для определения численного значения функции по любому промежуточному значению ее аргументов;

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

- выполнить контрольные расчеты, подтверждающие правильность работы программы;

- оформить отчет по выполнению домашнего задания №1.

Вариант №19

Таблица R = fR (H, M ),

М

Н

0

0,125

0,25

0,375

0,5

0,625

0,75

0,875

1,0

1,3

0

12000

10800

9800

8850

8000

7100

6250

5300

4400

4000

2

10050

9500

8970

8500

8200

7900

7630

7350

7100

6000

4

7600

7450

7320

7180

7050

6950

6900

6850

6800

5000

6

6000

5920

5850

5800

5720

5770

5870

5970

6100

4000

8

3950

4070

4220

4350

4500

4650

4800

5000

5250

4500

10

2800

2950

3120

3300

3450

3650

3820

4050

4250

3500

12

2080

2200

2320

2450

2580

2700

2840

3020

3250

2800

Встановимо границю лінеаризації. Вона дорівнює10%.Розіб’ємо функцію на 2 проміжки.

M

H

0

1.0

1.3

2

10050

7100

6000

4

7600

6800

5000

6

6000

6100

4000

8

3950

5250

4500

10

2800

4250

3500

12

2080

3250

2800

H

M

0

2

4

6

8

10

12

1

4400

7100

6800

6100

5250

4250

3250

1.3

4000

6000

5000

4000

4500

3500

2800

Формула для рівняння лінеаризації функції:

Ri=Ri0+Ki*(M-Mi)+Q*(H-Hi)

Ki= Mi-Mi0

Qj= Hj-Hj0

Знайдемо коефіцієнти :

Ki

H

K1

K2

2

-2950

-1100

4

-800

-1800

6

100

-2100

8

1300

-750

10

1450

-750

12

1170

-450

Q

M

Q1

Q2

Q3

Q4

Q5

Q6

1

2700

-300

-700

-850

-1000

-1000

1.3

2000

-1000

-1000

500

-1000

-700

Загальні рівняння:

  1. M = 1

H = 2 : R = 7100-2950*(M-1)+2700*(H-2)

H = 4 : R = 6800-800*(M-1)-300 *(H-4)

H = 6 : R = 6100+100*(M-1)-700 *(H-6)

H = 8 : R = 5250+1300*(M-1)-850 *(H-8)

H = 10 : R = 4250+1450*(M-1)-1000 *(H-10)

H = 12 : R = 3250+1170*(M-1)-1000 *(H-12)

  1. M = 1.3

H = 2 : R = 7100-1100*(M-1.3)+2000*(H-2)

H = 4 : R = 6800-1800*(M-1.3)-1000 *(H-4)

H = 6 : R = 6100-2100*(M-1.3)-1000*(H-6)

H = 8 : R = 5250-750*(M-1.3)+500 *(H-8)

H = 10 : R = 4250-750*(M-1)-1000 *(H-10)

H = 12 : R = 3250-450*(M-1.3)-700*(H-12)

Блок-схема

Текст програми

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ММДО

{

class Program

{

static void Main(string[] args)

{

double m, h, f=0;

Console.WriteLine("Введите M");

m = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Введите H");

h = Convert.ToDouble(Console.ReadLine());

if (m <= 1)

{

if (h <= 2)

{

f = 7100 - 2950 * (m - 1) + 2700 * (h - 2);

}

else

{

if (h <= 4)

{

f = 6800 - 800 * (m - 1) - 300 * (h - 4);

}

else

{

if (h <= 6)

{

f = 6100 - 100 * (m - 1) - 700 * (h - 6);

}

else

{

if (h <= 8)

{

f = 5250 + 1300 * (m - 1) - 850 * (h - 8);

}

else

{

if (h <= 10)

{

f = 4250 + 1450 * (m - 1) - 1000*(h - 10);

}

else

{

if (h <= 12)

{

f = 3250 + 1170 * (m - 1) - 1000 * (h - 12);

}

}

}

}

}

}

}

else

{

if (h <= 2)

{

f = 7100 - 1100 * (m - 1.3) + 2000 * (h - 2);

}

else

{

if (h <= 4)

{

f = 6800 - 1800 * (m - 1.3) - 100 * (h - 4);

}

else

{

if (h <= 6)

{

f = 6100 - 2100 * (m - 1.3) - 1000 * (h - 6);

}

else

{

if (h <= 8)

{

f = 5250 - 750 * (m - 1.3) + 500 * (h - 8);

}

else

{

if (h <= 10)

{

f = 4250 - 750 * (m - 1.3) - 1000 * (h - 10);

}

else

{

if (h <= 12)

{

f = 3250 -450 * (m - 1) - 700 * (h - 12);

}

}

}

}

}

}

}

Console.WriteLine("Ответ: " + f);

Console.ReadKey();

}

}

}

Скріншоти

Висновок:В цій домашній роботі я навчилася лінеаризувати функції, знаходити коефіцієнти для лінійної функції та написала програму, яка рахує значення функції в залежності від значення аргументу.

Соседние файлы в папке ДЗ