Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Звіт
до лабораторної роботи № 1-2
з дисципліни: "Математичні методи дослідження операцій"
Лабораторна робота №1- 2
Постановка задачі лінійного програмування та її розв’язання графічним методом з використанням засобів Еxcel і MathCAD
Мета роботи: набуття навиків побудови математичної моделі задачі лінійного програмування (ЛП), вивчення графічного методу для знаходження розв’язку, вивчення можливостей та оволодіння навичками побудови таблиць і діаграм в Еxcel, використання формульного, графічного та текстового редакторів MathCAD для знаходження розв’язку задачі лінійного програмування графічним методом.
Теоретичні відомості
Коротка характеристика програмних засобів MathCAD
MathCAD – це могутнє і в той же час просте універсальне середовище для розв’язку задач у різних галузях науки та техніки, фінансів і економіки, фізики і астрономії, математики і статистики, організації виробництва і управління тощо. На сьогодні MathCAD – одна із найпопулярніших математичних систем.
У MathCAD вбудовані добре організовані формульний, графічний та текстовий редактори.
Точність обчислень визначається системними змінними TOL та CTOL. Змінити їх можна на вкладці Build-in Variables вікна Math Options, яке викликається вибором пункту меню Options => Math. Водночас при збільшенні точності збільшується час обрахунку. За замовчуванням TOL=0,001 та CTOL=0,001.
Приклад використання засобів MathCAD
Записуємо умову:
Умова:
Перетворення:
Графіки обмежуючих прямих:
Визначаємо точки перетину прямих:
Обчислюємо значення цільової функції в крайніх точках:
Отже, мінімальне значення цільова функція досягає в точці
з координатами (0;2), а максимальне – в точці (1,6; 0,6)
2. Порядок роботи:
1. Записати математичну модель задачі оптимального планування виробництва відповідно до заданого варіанту.
Використовуючи засоби Еxcel
2.1 Використовуючи засоби роботи з прогресією Еxcel (AutoFill), заповнити таблицю, що відповідає обмеженням задачі лінійного програмування.
2.2 Використовуючи засоби створення діаграм Еxcel, намалювати відповідну таблиці діаграму.
2.3 Знайти максимальне та мінімальне значення цільової функції на побудованій діаграмі.
Використовуючи засоби MathCAD
Побудувати графіки обмежуючих прямих:
записати рівняння кожної прямої у вигляді
в одній системі координат побудувати графіки обмежуючих прямих
визначити точки перетину прямих у першому квадранті системи координат
Визначити множину допустимих розв’язків.
Обчислити значення цільової функції в крайніх точках.
Вказати мінімальне та максимальне значення цільової функції
Проінтерпретувати отримані результати для вихідної задачі.
Оформити звіт для захисту лабораторної роботи за зразком
назва роботи
мета роботи
порядок роботи
короткі теоретичні відомості
алгоритм розв’язку задачі
малюнки відповідних таблиць та діаграм
аналіз отриманих результатів та висновки
Виконання роботи
Результат роботи в Excel:
Результат роботи в MathCad:
A=
B=
R=
C=
D=
S=
Код програми:
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;
int N; // kilkist rivnan
double arrayKof[10][3];
double perVisX[10];
double perVisY[10];
double linper[20][2];
void FunPerXY(void)
{
//tocku peretunu z osamu
for(int i=0;i<N;i++)
{
// z vissu ox
perVisX[i]=arrayKof[i][2]/arrayKof[i][0];
// z vissu oy
perVisY[i]=arrayKof[i][2]/arrayKof[i][1];
}
}
void PerLin(void)
{
int j=0,i=0;
double a,b;
for(i=0;i<N;i++)
{
j=i+1;
a=(arrayKof[j][2])/(arrayKof[j][1])-(arrayKof[i][2])/(arrayKof[i][1]);
b=((arrayKof[j][0])/(arrayKof[j][1])-(arrayKof[i][0])/(arrayKof[i][1]));
linper[i][0]=a/b;
a=((arrayKof[j][2])/(arrayKof[j][0])-(arrayKof[i][2])/(arrayKof[i][0]));
b=((arrayKof[j][1])/(arrayKof[j][0])-(arrayKof[i][1])/(arrayKof[i][0]));
linper[i][1]=a/b;
}
a=(arrayKof[i-1][2])/(arrayKof[i-1][1])-(arrayKof[0][2])/(arrayKof[0][1]);
b=((arrayKof[i-1][0])/(arrayKof[i-1][1])-(arrayKof[0][0])/(arrayKof[0][1]));
linper[i-1][0]=a/b;
a=((arrayKof[i-1][2])/(arrayKof[i-1][0])-(arrayKof[0][2])/(arrayKof[0][0]));
b=((arrayKof[i-1][1])/(arrayKof[i-1][0])-(arrayKof[0][1])/(arrayKof[0][0]));
linper[i-1][1]=a/b;
}
int main (void)
{
cout<<"Vvedit kilkist rivnyan:";
cin>>N;
cout<<"Vvedit koeficienty cherez probil:"<<endl;
for(int i=0;i<N;i++)
for(int j=0;j<3;j++)
{
cin>>arrayKof[i][j];
}
FunPerXY();
PerLin();
for(int i=0;i<N;i++)
{
cout<<"------"<<i+1<<"tochka-----"<<endl;
cout<<"x: "<<linper[i][0]<<" y: "<<linper[i][1]<<endl;
//z vissu ox
cout<<"Peretun priamoi z vissu Ox: "<<perVisX[i]<<endl;
// z vissu oy
cout<<"Peretun priamoi z vissu Oy: "<<perVisY[i]<<endl;
cout<<"\n\n";
}
return 0;
}
Висновок: на даній лабораторній роботі я навчився розвязувати задачі лінійного типу. Використовував середовища Excel і MathCad, як було поставлено у завданні. Зробив програмну реалізацію задачі.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!