Математические методы / ДЗ / ДЗ №1 Павлючук
.docxМІНІСТРЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ АВІЦІЙНИЙ УНИВЕРСИТЕТ
ІНСТИТУТ КОМ'ЮТЕРНИХ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Домашнє завдання №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 |
Загальні рівняння:
-
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)
-
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();
}
}
}
Скріншоти
Висновок:В цій домашній роботі я навчилася лінеаризувати функції, знаходити коефіцієнти для лінійної функції та написала програму, яка рахує значення функції в залежності від значення аргументу.