Математические методы / Лабораторные / Лабораторная №1 Вариант №3
.docxМіністерство освіти і науки, молоді та спорту України
Національний авіаційний університет
Кафедра комп’ютерних та інформаційних технологій
Лабораторна робота №1
З дисципліни: «Математичні методи дослідження операцій»
За темою : «Лінеаризація нелінійної цільової функції »
Варіант 3
Виконав:
Студент ТП-213 ІКІТ
Односумов М.С.
Київ 2017
Домашнее задание №1
по дисциплине “Математические методы исследования операций”.
Разработать линейную модель двумерной функции, которая задана в виде таблицы чисел, методами линейного программирования.
В процессе выполнения домашнего задания необходимо:
- построить графики для заданного массива чисел;
- минимизировать количество кусочно-линейных участков исходной двумерной поверхности, обеспечивающих допустимую погрешность аппроксимации равную 1% от максимального значения исходной функции;
- рассчитать значение коэффициентов системы линейных уравнений, описывающих двумерную поверхность;
- свести коэффициенты линейных уравнений в таблицу;
- разработать алгоритм вычислительного процесса для определения численного значения функции по любому промежуточному значению ее аргументов;
- написать и отладить программу на любом алгоритмическом языке программирования высокого уровня;
- выполнить контрольные расчеты, подтверждающие правильность работы программы;
- оформить отчет по выполнению домашнего задания №1.
Вариант №3
Таблица R = fR (H, M)
МН, км |
0 |
0,125 |
0,25 |
0,375 |
0,5 |
0,625 |
0,75 |
0,875 |
1,0 |
1.25 |
0 |
12000 |
10800 |
9800 |
8850 |
8000 |
7100 |
6250 |
5300 |
4400 |
4000 |
2 |
10050 |
9500 |
8970 |
8500 |
8200 |
7900 |
7630 |
7350 |
7100 |
6500 |
4 |
7600 |
7450 |
7320 |
7180 |
7050 |
6950 |
6900 |
6850 |
6800 |
6000 |
6 |
6000 |
5920 |
5850 |
5800 |
5720 |
5770 |
5870 |
5970 |
6100 |
5500 |
8 |
3950 |
4070 |
4220 |
4350 |
4500 |
4650 |
4800 |
5000 |
5250 |
4500 |
10 |
2800 |
2950 |
3120 |
3300 |
3450 |
3650 |
3820 |
4050 |
4250 |
3800 |
12 |
2080 |
2200 |
2320 |
2450 |
2580 |
2700 |
2840 |
3020 |
3250 |
2900 |
Завдання
Таблица R = fR (H, M)
МН, км |
0 |
0,125 |
0,25 |
0,375 |
0,5 |
0,625 |
0,75 |
0,875 |
1,0 |
1,2 |
4 |
7600 |
7450 |
7320 |
7180 |
7050 |
6950 |
6900 |
6850 |
6800 |
6000 |
Встановлюємо межі для лінеаризації:
6000*0.05 = 300.
Розіб’ємо функцію на щонайменше проміжків, враховуючи похибку 5%.
Отримали три проміжки, рівняння яких наступні:
C1 = x*(6750-7900)/(0,625) + 7900
C2 = (x-0,625)*(7100-6750)/(1-0,625) + 6750;
C3 = (x-1)*(5700-7100)/(1,2-1) +7100;
Напишемо програму, яка б розраховувала значення Y(x) для нашої функції, при аргументі, що постійно змінюється.
Код програми:
Java
package math_methods;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Created by nifan on 15.02.2017.
*/
public class lab1 {
public static void main(String[] args) throws IOException {
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
String input = "";
while (!(input.equalsIgnoreCase("выход"))) {
System.out.println("Введите x.\n\"Выход\" для выхода.");
input = read.readLine();
try {
float x = Float.parseFloat(input);
if (x >= 0 && x <= 0.5) {
System.out.println("C1 для данного х равняется " + (x * (6750 - 7900) / (0.625) + 7900));
} else if (x > 0.5 && x <= 1) {
System.out.println("C2 для данного х равняется " + ((x - 0.625) * (7100 - 6750) / (1 - 0.625) + 6750));
} else if (x > 1 && x <= 1.2) {
System.out.println("C3 для данного х равняется " + ((x - 1) * (5700 - 7100) / (1.2 - 1) + 7100));
} else System.out.println("x не попал в границы.");
} catch (NumberFormatException e) {
System.out.println("Caught NumberFormatException. More Info: " + e.getLocalizedMessage());
}
}
}
}
Результат роботи:
Схема алгоритму
Висновки: Я розробив лінійну модель двухмірної функції, яка задана у вигляді таблиці, мотодами лінійного програмування. Збудував графіки заданого масиву чисел. Розробив алгоритм обчислювального процесу для визначення чисельного значення функції.