Задача нелінійного програмування. Математична модель задачі нелінійного програмування

Досить детально розглянута в розділах, присв'ячених лінійному програмуваню, задача пошуку оптимальних обсягів виробництва грунтується на припущеннях про лінійність зв'язку між витратами ресурсів і обсягами виготовленої продукції; між ціною, рекламою та попитом тощо. Якщо такі зв'язки є нелінійними, то більш адекватні математичні моделі доцільно формулювати в термінах нелінійного програмування.

Нехай для деякої виробничої системи необхідно визначити план випуску продукції, за умови найкращого способу використання ресурсів системи. Відомі загальні запаси кожного ресурсу, норми витрат кожного ресурсу на одиницю продукції та ціна реалізації одиниці виготовленої продукції. Критерії оптимальності можуть бути різноманітними, наприклад максимізація виручки від реалізації продукції. Така умова подається лінійною залежністю загальної виручки від обсягів проданого товару та ціни одиниці продукції.

Однак, загально відомим є факт, що за умов ринкової конкуренції питання реалізації продукції є досить складним. Обсяг збуту кінцевої продукції визначається перш за все її ціною, отже в якості цільової функції доцільно розглядати максимізацію не всієї виготовленої, а лише реалізованої продукції. Тоді необхідно визначити також і оптимальне значення ціни одиниці продукції, при якій обсяг збуту буде максимальним. Для цього, її потрібно ввести в задачу як невідому величину, при цьому обмеження задачі мають враховувати зв'язки між ціною, рекламою та обсягами збутої продукції. Цільова функція міститиме добуток двох невідомих величин (оптимальна ціна одиниці продукції та оптимальна кількість відповідного виду продукції), а отже є нелінійною. Таким чином приходимо до задачі нелінійного програмування.

Читати повністю

Розв'язок нелінійних рівнянь шляхом видалення вже знайдених коренів в середовищі програмування delphi

Delphi-програма знаходить всі корені нелінійного алгебраїчного рівняння на заданому інтервалі з заданою точністю і використовує для цього алгоритм, який полягає у видалені вже знайдених коренів (теоретична частина по даному методі міститься за посиланням Відшукання всіх дійсних коренів алгебраїчного рівняння шляхом видалення вже знайдених коренів). Візуально, головна форма розглядуваного delphi-проекту не відрізняється від проектів, які реалізують інші чисельні методи рішення даної проблеми, тобто ділиться на дві частини:

  1. Панель інструментів: містить чотири поля типу TEdit, два з яких відповідають за значення кінців проміжоку на якому відшукуються корені рівняння і два що залишилось, відповідають за точність обчислювального процесу та функцію, що міститься в лівій частині розв'язуваного рівняння; дві кнопки типу TButton одна з яких безпосередньо реалізує алгоритми знаходження коренів та друга — видаляє всі введені користувачем значення і готує проект до нового прикладу; один компонент типу TMemo, головним призначенням якого є вивід результату роботи програми.
  2. Область графічного представлення: містить компонент типу TChart, який відображає графік розв'язуваного рівняння і з допомогою якого можна провірити правельність роботи програми.

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

Читати повністю

Знаходження всіх дійсних коренів алгебраїчного рівняння шляхом видалення вже знайдених коренів

Один із недоліків методу половинного ділення чи будь-якого з ітераційних методів розв'язку нелінійних алгебраїчних рівнянь є той факт, що процес збігається невідомо до якого кореня. Сьогодні розглянемо один із способів уникнути даної проблеми, який полягає у видалені вже знайденого кореня.

Отже, нехай задано рівняння , для якого на заданому відрізку необхідно знайти всі дійсні корені (відмітимо що функція на даному відрізку є неперервною). Далі припустимо, що є простий корінь рівняння (1), тоді допоміжна функція буде також неперервною на даному інтвалі, причому всі нулі функцій  та співпадають за винятком , тобто . Якщо  кратний корінь рівняння (1), то він буде нулем і для  кратності на одиницю менше. Решта нулів обох функцій як і раніше будуть однакові. Тому знайдений корінь можна видалити, тобто перейти до функції . Тоді знаходження інших нулів  зведеться до знаходження нулів .

Далі, припустимо, що на другому кроці ми знайшли деякий корінь функції . Цей корінь теж мжна видалити, ввівши нову допоміжну функцію . Відзначимо, що таким чином можна послідовно знайти всі корені заданого рівняння (1).

Читати повністю