Скачиваний:
6
Добавлен:
01.05.2014
Размер:
119.3 Кб
Скачать

Цель работы

Исследование прямых методов многомерной минимизации и разработка программы, удовлетворяющей требованиям лабораторной работы 5.

Начальные данные

В программе используется метод Пауэлла-1;

Функция f(x)

Начальная точка x1

Значение минимума x*

(x2 – x12)2 + (1 – x1)2

(1.5; 2)

(0; 0)

(–1.2; 1)

(1; 1)

x13 + x22 – 3x1 – 2x2 + 2

(0; 0)

(–1; –1)

(1; 1)

Краткое описание метода

начальный этап:

1)установить значение счетчика к=1;

2)задать точность вычислений е=10-4 – 10-7

3)задать начальную точку x0;

основной этап:

шаг 1: построить направление поиска:

где

шаг 2: найти αk, по направлению pk, как результат одномерной минимизации.

шаг 3: положить к=к+1 и перейти в новую точку xk+1= xk+ αk * pk

шаг 4: проверить критерий окончания поиска ||||<e

если он выполнился, то минимум найден xмин= xk, иначе перейти на шаг 1.

Спецификация программы

Глобальные переменные:

int z=0;//выбор функции

Int dlin;//число переменных

Классы:

class vect //класс вектор

{

public:

unsigned short n; //длина вектора

double * x;

vect()//конструктор по умолчанию

vect(unsigned short dlin) {n=dlin;if(n!=0) x=new double [n];else x=0;} //создание вектора длины n без инициализации

vect (vect &a) //конструктор копирования

vect operator = (vect &a) //конструктор копирования

vect mult(double c) //метод класса, для умножения вектора на число

vect sum(vect a) //метод класса, для подсчета суммы векторов

vect razn(vect a) //метод класса, для подсчета разности векторов

double pr_ch(vect b)// метод для перемножения векторов

double norm()//подсчет нормы вектора

}

class matr//класс матрица

{

public:

unsigned short n;//размерность

double * x;

matr(unsigned short dlin=0)

matr (matr &a) // метод для копирования матриц

matr operator = (matr &a)// метод для копирования матриц

double & e(unsigned short i,unsigned short j )// метод для определения элемента матрицы

matr multm(matr &a, matr &res)// метод для перемножения матриц

matr sum(matr a, matr b)// метод для сложения матриц

matr mult(double c)// метод для перемножения матрицы на число

vect mult(vect &a)// метод для перемножения матрицы на столбец

vect mult(vect &a)// метод для перемножения матрицы на столбец

Спецификация функций

Имя функции

Назначение

Входные параметры

Возвращаемое значение

main

главная функция

-

-

у

вычисляет значение текущей функции в данной точке

vect &v

double

next

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

double a, vect &x0, vect &p

double

dy

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

double a, vect &x0, vect & p

double

grad

вычисляет градиент в заданой точке

vect & point

vect

Swann4

находит начальный интервал методом Свенна4

double a0,vect &x0, vect & p, double &x1, double &x2

-

Davidon

находит минимум по заданному направлению методом Давидона

vect &x0, vect & p, double *al

-

step

осуществляет шаг метода Коши

vect &x0

vec

Dikson

Находит минимум функции методом Диксона

vect &x0

-

Результаты тестирования программы

Функция:

f(x)= 8x12 + 4x1x2 + 5x22

Погрешность: e=10-4

Начальная точка х1=(0, 0)

Изменение точки x:

-1.245283, 2.128302,

0.143840, 0.143840,

-0.017912, 0.030614,

0.002069, 0.002069,

-0.000258, 0.000440,

0.000030, 0.000030,

-0.000004, 0.000006,

ITER=8, Min:-0.000004, 0.000006,

Функция:

f(x)= [1.5 – x1(1 – x2)]2 + [2.25 – x1(1 – x22)]2 + + [2.625 – x1(1 – x23)]2

Погрешность: e=10-4

Начальная точка х1=(3,0.5)

Изменение точки x:

2.125000, 0.000000,

2.125000, 0.214965,

2.363116, 0.214965,

2.363116, 0.301556,

2.498121, 0.301556,

2.498121, 0.349412,

2.589063, 0.349412,

2.589063, 0.380329,

2.655878, 0.380329,

2.655878, 0.402146,

2.707538, 0.402146,

2.707538, 0.418426,

2.748823, 0.418424,

2.748824, 0.431045,

2.782600, 0.431044,

2.782600, 0.441103,

2.810706, 0.441103,

2.810706, 0.449287,

2.834396, 0.449287,

2.834397, 0.456053,

2.854567, 0.456053,

2.854567, 0.461719,

2.871879, 0.461719,

2.871879, 0.466512,

2.886835, 0.466512,

2.886835, 0.470601,

2.899825, 0.470601,

2.899825, 0.474113,

2.911158, 0.474113,

2.911158, 0.477148,

2.921083, 0.477148,

2.921083, 0.479784,

2.929803, 0.479784,

2.929803, 0.482082,

2.937486, 0.482082,

2.937486, 0.484093,

2.944270, 0.484093,

2.944270, 0.485859,

2.950273, 0.485859,

2.950273, 0.487413,

2.955594, 0.487413,

2.955594, 0.488785,

2.960318, 0.488785,

2.960318, 0.489997,

2.964517, 0.489997,

2.964517, 0.491071,

2.968255, 0.491071,

2.968255, 0.492024,

2.971586, 0.492024,

2.971586, 0.492871,

2.974557, 0.492871,

2.974557, 0.493624,

2.977208, 0.493624,

2.977208, 0.494295,

2.979576, 0.494295,

2.979576, 0.494893,

2.981692, 0.494892,

2.981692, 0.495426,

2.983585, 0.495426,

2.983585, 0.495902,

2.985279, 0.495902,

2.985279, 0.496327,

2.986795, 0.496327,

2.986795, 0.496708,

2.988153, 0.496708,

2.988153, 0.497048,

2.989370, 0.497048,

2.989370, 0.497353,

2.990460, 0.497352,

2.990460, 0.497625,

2.991437, 0.497625,

2.991437, 0.497869,

2.992314, 0.497869,

2.992314, 0.498088,

2.993099, 0.498088,

2.993099, 0.498284,

2.993804, 0.498284,

2.993804, 0.498460,

2.994436, 0.498460,

2.994436, 0.498617,

2.995004, 0.498617,

2.995004, 0.498758,

2.995513, 0.498758,

2.995513, 0.498885,

2.995970, 0.498885,

2.995970, 0.498999,

2.996380, 0.498999,

2.996380, 0.499101,

2.996748, 0.499101,

2.996748, 0.499193,

2.997079, 0.499193,

2.997079, 0.499275,

2.997376, 0.499275,

2.997376, 0.499349,

2.997643, 0.499349,

2.997643, 0.499415,

2.997883, 0.499415,

2.997883, 0.499475,

2.998098, 0.499475,

2.998098, 0.499528,

2.998291, 0.499528,

2.998291, 0.499576,

2.998465, 0.499576,

2.998465, 0.499619,

2.998621, 0.499619,

2.998621, 0.499658,

2.998761, 0.499658,

2.998761, 0.499692,

2.998886, 0.499692,

2.998886, 0.499724,

2.998999, 0.499724,

2.998999, 0.499752,

2.999101, 0.499752,

2.999101, 0.499777,

2.999191, 0.499777,

2.999192, 0.499799,

2.999273, 0.499799,

2.999273, 0.499820,

2.999346, 0.499820,

2.999346, 0.499838,

2.999412, 0.499838,

2.999412, 0.499854,

2.999472, 0.499854,

2.999472, 0.499869,

2.999525, 0.499869,

2.999525, 0.499882,

2.999572, 0.499882,

2.999572, 0.499894,

2.999615, 0.499894,

2.999615, 0.499905,

2.999654, 0.499905,

2.999654, 0.499914,

2.999688, 0.499914,

2.999688, 0.499923,

ITER=135, Min:2.999688, 0.499923,

Соседние файлы в папке Лабораторная работа №9
  • #
    01.05.20143.39 Кб4itog1.dsp
  • #
    01.05.2014535 б4itog1.dsw
  • #
    01.05.201433.79 Кб4itog1.ncb
  • #
    01.05.201448.64 Кб4itog1.opt
  • #
    01.05.20141.35 Кб4itog1.plg
  • #
    01.05.2014119.3 Кб6otch9.doc
  • #
    01.05.2014105.47 Кб6OTCH9a.DOC
  • #
    01.05.2014293 б5StdAfx.cpp
  • #
    01.05.2014667 б5StdAfx.h