Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Оптимизация в САПР / Malgin_kurs / METODI
.h
#if !defined(AFX_METODI_H__52BB5084_FDB8_4F9D_85FA_C69A07EC8C4F__INCLUDED_)
#define AFX_METODI_H__52BB5084_FDB8_4F9D_85FA_C69A07EC8C4F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Matrix.h"
#include "EnterFunction.h"
class CMETODI
{
public:
CMatrix MASSIV; // массив для хранения промежуточных значений х при пошаговой оптимизации
CMETODI(CString str); // конструктор класса
virtual ~CMETODI(); // деструктор класса
//////////////////////////////////////////////////////////////////////
// Вспомогательные методы и функции класса
//////////////////////////////////////////////////////////////////////
double f (CMatrix &x); // метод, возвращающий значение функции в точке х
double dfp (CMatrix x, CMatrix p); // производная по направлению р в точке х
double d2f (CMatrix &x,int i, int j); // вторая производная в точке х
double norma (CMatrix &x); // норма вектора
double Fib (double x); // получение числа Фибоначчи
CMatrix df (CMatrix &x); // производная (градиент) в точке х
CMatrix hesse (CMatrix &x); // матрица Гессе
CMatrix inverseGJ (CMatrix &cs); // обратная матрица по методу Гаусса-Жордана
friend CString Int_To_String (int value); // конвертирование int в CString
friend CString Double_To_String (double value); // конвертирование double в CString
//////////////////////////////////////////////////////////////////////
// Методы одномерной оптимизации
//////////////////////////////////////////////////////////////////////
int FindAlpha (CMatrix &x, CMatrix &p, double &e, int &n); // выбор метода одномерной оптимизации
int Swann (CMatrix &x, CMatrix &p); // метод Свенна
/*
СПИСОК ПАРАМЕТРОВ ФУНКЦИЙ:
CMatrix &x - начальная точка
CMatrix &p - направление поиска
double e - погрешность поиска
int max_step - максимальное количество итераций
*/
int Bolcano (CMatrix &, CMatrix &, double &, int &); // метод Больцано
int ZS_1 (CMatrix &, CMatrix &, double &, int &); // метод золотого сечения - 1
int ZS_2 (CMatrix &, CMatrix &, double &, int &); // метод золотого сечения - 2
int Pauell_Odn (CMatrix &, CMatrix &, double &, int &); // метод Пауэлла
int Davidon (CMatrix &, CMatrix &, double &, int &); // метод Давидона
int Fibonachchi_1 (CMatrix &, CMatrix &, double &, int &); // метод Фибоначчи - 1
int Fibonachchi_2 (CMatrix &, CMatrix &, double &, int &); // метод Фибоначчи - 2
int ExIn (CMatrix &, CMatrix &, double &, int &); // метод Экстраполяции - Интерполяции
//////////////////////////////////////////////////////////////////////
// Методы многомерной оптимизации
//////////////////////////////////////////////////////////////////////
/*
СПИСОК ПАРАМЕТРОВ ФУНКЦИЙ:
CMatrix x - начальная точка
double e - погрешность поиска
int* max_step - максимальное количество итераций
(сюда же возвращается количество проделанных итераций)
int i1Min - метод одномерного поиска
*/
CMatrix Koshi (CMatrix, double, int*, int); // метод Коши
CMatrix CPS (CMatrix, double, int*, int); // метод Циклического Покоординатного Спуска
CMatrix GaussZeydel (CMatrix, double, int*, int); // метод Гаусса-Зейделя
CMatrix ParallelKasat (CMatrix, double, int*, int); // метод Параллельных касательных
CMatrix HookJeeves (CMatrix, double, int*); // метод Хука-Дживса
CMatrix Newton_Ob (CMatrix, double, int*, int); // обобщённый метод Ньютона
CMatrix Sangvil (CMatrix, double, int*); // метод Зангвила
CMatrix FletcherReeves (CMatrix, double, int*, int); // метод Флетчера-Ривса
CMatrix Pauell_1 (CMatrix, double, int*, int); // метод Пауэлла-1
CMatrix Pauell_2 (CMatrix, double, int*, int); // метод Пауэлла-2
CMatrix ComplexBox (CMatrix, int num); // метод Бокса
private:
double alpha; // коэффициент удлинения вектора (результат одномерной минимизации)
double a;
double b;
CString sFormula; // формула для распознавания
CEnterFunction EnterFunction; // объект класса распознавания формул CEnterFunction
};
#endif // !defined(AFX_METODI_H__52BB5084_FDB8_4F9D_85FA_C69A07EC8C4F__INCLUDED_)
Соседние файлы в папке Malgin_kurs