Математические методы / ДЗ / ДЗ №1 Ришко
.docxМіністерство освіти і науки України
Національний авіаційний університет
Інститут комп’ютерних інформаційних технологій
Домашнє завдання з дисципліни : “Математичні методи дослідження операцій”
Студентки гр ТП-213
Рішко Анастасії
Київ 2017
Разработать линейную модель двумерной функции, которая задана в виде таблицы чисел, методами линейного программирования.
В процессе выполнения домашнего задания необходимо:
- построить графики для заданного массива чисел;
- минимизировать количество кусочно-линейных участков исходной двумерной поверхности, обеспечивающих допустимую погрешность аппроксимации равную 1% от максимального значения исходной функции;
- рассчитать значение коэффициентов системы линейных уравнений, описывающих двумерную поверхность;
- свести коэффициенты линейных уравнений в таблицу;
- разработать алгоритм вычислительного процесса для определения численного значения функции по любому промежуточному значению ее аргументов;
- написать и отладить программу на любом алгоритмическом языке программирования высокого уровня;
- выполнить контрольные расчеты, подтверждающие правильность работы программы;
- оформить отчет по выполнению домашнего задания №1.
Вариант №22
Таблиця .Сх = f (Сy, M)
cy
M |
0 |
0,2 |
0,4 |
0,6 |
0,8 |
0,9 |
.1,2 |
0,4 |
0,022 |
0,023 |
0,028 |
0,038 |
0,052 |
0,04 |
0,03 |
0,6 |
0,023 |
0,024 |
0,03 |
0,044 |
0,057 |
0,045 |
0,04 |
0,8 |
0,024 |
0,026 |
0,032 |
0,05 |
0,04 |
0,039 |
0,03 |
0,9 |
0,027 |
0,029 |
0,042 |
0,012 |
0,011 |
0,009 |
0,007 |
1.Побудуємо графіки функцій:
2.Апроксимуємо функції:
M/Cy |
0 |
0,4 |
0,6 |
1,2 |
0,4 |
0,022 |
0,028 |
0,052 |
0,03 |
0,6 |
0,023 |
0,03 |
0,057 |
0,04 |
0,8 |
0,024 |
0,032 |
0,05 |
0,03 |
0,9 |
0,027 |
0,042 |
0,012 |
0,007 |
Формула для рівняння лінеаризації функції:
Ci=Ci0+Ki*(M-Mi)+Q*(H-Hi)
Ki=Mi-Mi0
Qj=Hj-Hj0
Cy |
K1 |
K2 |
K3 |
K4 |
0 |
0,006 |
0,024 |
-0,022 |
0,03 |
0,4
|
0,007 |
0,027 |
-0,017 |
0,04 |
0,6 |
0,008 |
0,018 |
-0,02 |
0,03 |
1,2 |
-0,015 |
-0,03 |
-0,005 |
0,007 |
M |
0,4 |
0,6 |
0,8 |
0,9 |
Q1 |
0,001 |
0,002 |
0,005 |
0,01 |
Q2 |
0,001 |
0,002 |
-0,007 |
-0,01 |
Q3 |
0,003 |
0,01 |
-0,038 |
-0,023 |
Q4 |
0,027 |
0,042 |
0,012 |
0,007 |
Рівняння лінеаризації
1)M=0,4
H=0,022+0,006*(M-0,4)+0,001(H-0)
H=0,028+0,007*(M-0,4)+0,001(H-0,4)
H=0,038+0,008*(M-0,4)+0,003(H-0,6)
H=0,03-0,015*(M-0,4)+0,027(H-1,2)
2)M=0,6
H=0,023+0,024*(M-0,6)+0,002(H-0)
H=0,03+0,027*(M-0,6)+0,002(H-0,4)
H=0,044+0,018*(M-0,6)+0,01(H-0,6)
H=0,04-0,03*(M-0,6)+0,042(H-1,2)
3)M=0,8
H=0,024-0,022*(M-0,8)+0,005(H-0)
H=0,032-0,017*(M-0,8)-0,007(H-0,4)
H=0,05-0,02*(M-0,8)-0,038(H-0,6)
H=0,03-0,005*(M-0,8)+0,012(H-1,2)
4)M=0,9
H=0,027+0,03*(M-0,9)+0,01(H-0)
H=0,042+0,04*(M-0,9)-0,01(H-0,4)
H=0,012+0,03*(M-0,9)-0,023(H-0,6)
H=0,007-0,007*(M-0,9)+0,007(H-1,2)
Текст програми:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MMDO_DOM
{
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 <= 0.4)
{
if (H <= 0)
{
f = 0.022 + 0.006 * (M - 0.4) + 0.001 * (H - 0);
}
else
{
if (H>0 && H <= 0.4)
{
f = 0.028 + 0.007 * (M - 0.4) + 0.003 * (H - 0.4);
}
else
{
if (H>0.4&& H <= 0.6)
{
f = 0.038 + 0.008 * (M - 0.4) + 0.003 * (H - 0.6);
}
else
{
if (H>0.6&& H <= 1.2)
{
f = 0.03 - 0.015 * (M - 0.4) + 0.027 * (H - 1.2);
}
}
}
}
}
if (M > 0.4 && M <= 0.6)
{
if (H <= 0)
{
f = 0.023 + 0.024 * (M - 0.6) + 0.002 * (H - 0);
}
else
{
if (H > 0 && H <= 0.4)
{
f = 0.03 + 0.027 * (M - 0.6) + 0.002 * (H - 0.4);
}
else
{
if (H > 0.4 && H <= 0.6)
{
f = 0.044 + 0.018 * (M - 0.6) + 0.01 * (H - 0.6);
}
else
{
if (H > 0.6 && H <= 1.2)
{
f = 0.04 - 0.03 * (M - 0.6) + 0.042 * (H - 1.2);
}
}
}
}
}
if (M > 0.6 && M <= 0.8)
{
if (H <= 0)
{
f = 0.024 - 0.022 * (M - 0.8) + 0.005 * (H - 0);
}
else
{
if (H > 0 && H <= 0.4)
{
f = 0.032 - 0.017 * (M - 0.8) - 0.007 * (H - 0.4);
}
else
{
if (H > 0.4 && H <= 0.6)
{
f = 0.05 - 0.02 * (M - 0.8) - 0.038 * (H - 0.6);
}
else
{
if (H > 0.6 && H <= 1.2)
{
f = 0.03 - 0.005 * (M - 0.8) + 0.012 * (H - 1.2);
}
}
}
}
}
else
{
if (H <= 0)
{
f = 0.027 + 0.03 * (M - 0.9) + 0.01 * (H - 0);
}
else
{
if (H > 0 && H <= 0.4)
{
f = 0.042 + 0.04 * (M - 0.9) - 0.01 * (H - 0.4);
}
else
{
if (H > 0.4 && H <= 0.6)
{
f = 0.012 + 0.03 * (M - 0.9) - 0.023 * (H - 0.6);
}
else
{
if (H > 0.6 && H <= 1.2)
{
f = 0.007 - 0.007 * (M - 0.9) + 0.007 * (H - 1.2);
}
}
}
}
}
Console.WriteLine("Ответ: " + f);
Console.ReadKey();
}
}
}
Блок-схема