Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
01.05.2014
Размер:
4.27 Кб
Скачать

#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