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

Математические методы / Лабораторные / Лабораторная №1 Вариант №7

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

Міністерство освіти і науки, молоді та спорту України

Національний авіаційний університет

Кафедра комп’ютерних та інформаційних технологій

Лабораторна робота №1

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

За темою : «Лінеаризація нелінійної цільової функції »

Варіант 7

Виконав:

Студент ТП-213 ІКІТ

Дергачов Ярослав

Київ 2017

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

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

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

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

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

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

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

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

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

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

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

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

Вариант №7

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

м

Н, км

0

0,125

0,25

0,375

0,5

0,625

0,75

0,875

1,0

1.4

0

900

625

400

180

0

-150

-270

-380

-500

-600

2

1120

830

600

390

200

60

-70

-190

-310

-400

4

1310

1030

800

590

410

265

130

0

-130

-200

6

1510

1210

990

800

620

470

3350

210

80

70

8

1720

1380

1210

1060

910

735

565

425

310

250

10

1840

1560

1370

1200

1060

930

810

660

490

400

12

2010

1750

1535

1335

1200

1085

975

850

720

6500

Завдання

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

М

Н, км

0

0,125

0,25

0,375

0,5

0,625

0,75

0,875

1,0

1.4

2

1120

830

600

390

200

60

-70

-190

-310

-400

Встановлюємо межі для лінеаризації:

400*0.05 = 20.

Розіб’ємо функцію на щонайменше проміжків, враховуючи похибку 5%.

Отримали 5 проміжки, рівняння яких:

H1 = (x-0)/(0.125-0) *(810-1140) + 1140

H2 = (x-0.125)/(0.375-0.125)*(410-810) + 810

H3 = (x-0.375)/(0.625-0.375)*(40 - 410) + 410

H4 = (x-0.625)/(1 -0.625)*(-290-40) + 40

H5 = (x-1)/(1.4 -1)*(-420+290) - 290

Напишемо програму, яка б розраховувала значення Y(x) для нашої функції, при аргументі, що постійно змінюється.

Код програми:

Java

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

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); /** * H1 = (x-0)/(0.125-0) *(810-1140) + 1140 * H2 = (x-0.125)/(0.375-0.125)*(410-810) + 810 * H3 = (x-0.375)/(0.625-0.375)*(40 -410) + 410 * H4 = (x-0.625)/(1 -0.625)*(-290-40) – 40 * H5 = (x-1)/(1.4 -1)*(-420+290) + 290 */ if (x >= 0 && x <= 0.125) { System.out.println("H1 для данного х равняется " + ((x - 0) / (0.125 - 0) * (810 - 1140) + 1140)); } else if (x > 0.125 && x <= 0.375) { System.out.println("H2 для данного х равняется " + ((x - 0.125) / (0.375 - 0.125) * (410 - 810) + 810)); } else if (x > 0.375 && x <= 0.625) { System.out.println("H3 для данного х равняется " + ((x - 0.375) / (0.625 - 0.375) * (40 - 410) + 410)); } else if (x > 0.625 && x <= 1) { System.out.println("H4 для данного х равняется " + ((x - 0.625) / (1 - 0.625) * (-290 - 40) + 40)); } else if (x > 1 && x <= 1.4) { System.out.println("H5 для данного х равняется " + ((x - 1) / (1.4 - 1) * (-420 + 290) - 290)); } else System.out.println("Значение х не попало в границы."); } catch (NumberFormatException e) { System.out.println("Caught NumberFormatException. More Info: " + e.getLocalizedMessage()); } } } }

Результат роботи:

Схема алгоритму

Висновки: Я розробив лінійну модель двухмірної функції, яка задана у вигляді таблиці, мотодами лінійного програмування. Збудував графіки заданого масиву чисел. Розробив алгоритм обчислювального процесу для визначення чисельного значення функції.

Соседние файлы в папке Лабораторные