Методы первого порядка безусловной многомерной минимизации (градиентные методы). Метод Гаусса-Зейделя

Задание:

Создать приложение для нахождения минимума функции f(x,у) методом Гаусса-Зейделя. Определить сколько итераций потребуется для достижения точности l=10-3, 10-5 , 10-7 при одних и тех же начальных приближениях.

Методы первого порядка безусловной многомерной минимизации (градиентные методы). Метод Гаусса-Зейделя - student2.ru

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

#include "stdafx.h"

#include <conio.h>

#include <math.h>

#include <stdlib.h>

#include <windows.h>

#include <locale.h>

using namespace std;

#define N 2

int i;

float f(float x[N+1]);

void graddirection(void);

void scanforonedim(void);

void pausa();

void outputresult(void);

float absgrad,e1,h,h1,z,s[3],x[3];

float K = 2;

float f(float x[N+1])

{

float y;

y = x[1]*x[1]+4*x[1]*x[1]*x[2]+pow(x[2],1/5);

return y;

}

void graddirection(void)

{

float gradx,grady;

gradx =2*x[1]+8*x[1]*x[2];

grady = 4*x[1]*x[1]+0.2/x[2];

absgrad = sqrt(gradx*gradx+grady*grady);

if(absgrad!=0)

{

s[1] = gradx/absgrad;

s[2]=grady/absgrad;

};

}

void scanforonedim(void)

{

short a;

float d1,z1;

z=f(x);

graddirection();

do{

d1=fabs(h1);

for(i = 1; i<=N; i++) x[i]=h1*s[i];

z1=f(x); a = (z1<z);

if(!a) h1 /= -K;

z=z1;

}

while (a || d1 >=e1);

}

void pausa()

{

printf("\nНажимите любую кнопку для продолжения...\n");

_getch();

};

void outputresult(void)

{

printf("Вектор приближения (x1,x2) на данном шаге ");

printf("вычислений ");

printf("x1=%f x2=%f\n",x[1],x[2]);

printf("f(x1,x2) = %f\n", f(x));

pausa();

};

void main()

{

setlocale(LC_ALL,"Rus");

float d,e;

char finish;

printf("Введите координаты начального ");

printf("вектора (x1,x2)\n");

for(i = 1;i<=N;i++) scanf_s("%f",&x[i]);

graddirection();

if(!absgrad)

{

printf("Стационарнаяточка x1 = %f", x[1]);

printf("x2=%f",x[2]);

};

e = 0.0001;

outputresult();

h=0.2;

e1=e/K;

do{

d=fabs(h);

h1=h;

scanforonedim();

outputresult();

h /=K;

}while(d>=e);

pausa();

}

Результат:

Методы первого порядка безусловной многомерной минимизации (градиентные методы). Метод Гаусса-Зейделя - student2.ru

Методы первого порядка безусловной многомерной минимизации (градиентные методы). Метод Гаусса-Зейделя - student2.ru

Лабораторная работа № 5

Решение задач линейного программирования с помощью ПОИСКА РЕШЕНИЙ в среде EXCEL

Цель работы:

1) Научиться составлять математические модели линейных задач.

2) Ознакомиться с технологией решения задач линейного программирования с помощью ПОИСКА РЕШЕНИЙ в среде EXCEL.

Задание:

Решить задачи, используя надстройку Excel Поиск решений

Три типа самолетов следует распределить между двумя авиалиниями. В таблице заданы количество самолетов каждого типа, месячный объём перевозок каждым самолетом на каждой авиалинии и соответствующие эксплутационные расходы. Требуется распределить самолёты по авиалиниям так, чтобы при минимальных суммарных эксплуатационных расходах перевезти по каждой из них соответственно не менее 300 и 200 ед. груза.

Методы первого порядка безусловной многомерной минимизации (градиентные методы). Метод Гаусса-Зейделя - student2.ru

Математическая модель задачи:

x1 ,x2, x3 – количество самолётов, необходимых для перелёта

(x1*15) + (x2*30) + (x3*25) ≥ 300

(50-x1)*10 + (20-x2)*25 + (30-x3)*50 ≥ 200

(x1*15) +(x2*70) + (x3*40) + (50-x1)*20 + (20-x2)*28 + (30-x3)*70 -> min

xj≥ 0

Результаты решения задач с помощью ПОИСКА РЕШЕНИЙ в среде EXCEL

Методы первого порядка безусловной многомерной минимизации (градиентные методы). Метод Гаусса-Зейделя - student2.ru

Выводы по работе

В ходе выполнения работы была составлена математическая модель задачи; получено решение через сервис поиск решения. По результатам проверки был сделан вывод о том, что сервис правильно подобрал решение.

Лабораторная работа № 6.

Векторная оптимизация (метод линейной комбинации частных критериев, метод ведущего критерия, метод последовательных уступок, метод равных и наименьших отклонений).

Цель работы:

1) ознакомиться с теорией векторной оптимизации;

Наши рекомендации