Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Метод оценивания точки минимума внутри найденного отрезка локализации минимума






 

(Программа должна обеспечить на каждой итерации метода вывод на экран:

§ номера итерации,

§ границ текущего отрезка [a, b],

§ внутренних точек и значений функции в них, а затем

§ финальной оценки x* точки минимума функции f(x)

§ соответствующего точке x* значения функции f(x*)).

3. С помощью программы решить следующие задачи одномерной оптимизации

§ f(x) = x2 – 12x. Начальные точки: 1, 3, 0, 10. ∆ = 1, 10

§ f(x) = 2x2+(16/x) Начальные точки: 1, 6, 2, 1, 0.1, 10. ∆ = 1, 2

§ f(x) = (127/4)x2-(61/4)x+2. Начальные точки: 0, 1, 2, -10, 10. ∆ = 0, 5, 1

4.Составить отчет, содержащий:

§ Титульный лист с указанием учебной дисциплины, номера и названия задания, ФИО выполнившего работу студента;

§ Полностью текст задания, приведенный несколькими строками выше;

§ Определение унимодальности;

§ Алгоритмы;

§ Текст программы на С++;

§ Подробное решение одной из предложенных задач – то, что выводит программа при ее решении на каждой итерации;

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


Задание№1

 

Программно реализовать на языке C++ метод Свенна

(Программа должна обеспечить вывод на экран

§ начальной точки и шага на каждой итерации метода:

§ номера итерации,

§ генерируемой методом новой точки x и значения функции в ней; а на последней итерации отрезка [a, b] локализации минимума функции f(x) и его длины, а также числа итераций.

С помощью программы решить следующие задачи одномерной оптимизации

§ f(x) = x2 – 12x. Начальные точки: 1, 3, 0, 10. ∆ = 1, 10

§ f(x) = 2x2+(16/x) Начальные точки: 1, 6, 2, 1, 0.1, 10. ∆ = 1, 2

§ f(x) = (127/4)x2-(61/4)x+2. Начальные точки: 0, 1, 2, -10, 10. ∆ = 0, 5, 1

Текст программы на С++

 

#include < iostream.h>

#include < conio.h>

#include < math.h>

#include < iomanip.h>

using namespace std;

double f(double);

int _tmain(int argc, _TCHAR* argv[])

{

double t, ll, e, l, xk, yk, a, b;

double x, delta, xp, x1, x2, k=0, y;

int p=0;

cout< < " enter x* ";

cin> > x;

cout< < " enter t ";

cin> > t;

x1=x-t;

x2=x+t;

if ((f(x-t) > =f(x)) & & (f(x+t) > =f(x)))

{

a=x-t;

b=x+t;

p=1;

};

if ((f(x-t) < =f(x)) & & (f(x+t) < =f(x)))

{

p=1;

};

xp=x;

if ((f(x-t) > f(x)) & & (f(x) > f(x+t)))

{

delta=t;

a=x;

x=x+t;

}

if ((f(x-t) < f(x)) & & (f(x) < f(x+t)))

{

delta=-t;

b=x;

x=x-t;

}

while ((p! =1))

{

if ((f(x)< f(xp)) & & (delta*t > 0))

a=xp;

if ((f(x)< f(xp)) & & (delta*t < 0))

b=xp;

if ((f(x)> f(xp)) & & (delta*t > 0))

{

b=x;

p=1;

};

if ((f(x)> f(xp)) & & (delta*t< 0))

{

a=x;

p=1;

};

k++;

cout< < " Номер итерации " < < k< < endl;

cout< < " Ганицы отрезка a=" < < a< < " b=" < < b< < endl;

xp=x;

x=xp+pow(2.0, k-1)*delta;

}

cout < < " a= " < < a< < " b= " < < b< < endl; cout< < " Количество итераций= " < < k< < endl;

system(" pause");

return 0;

}

double f(double x)

{

double y;

y=x*x-12*x;

return (y);

}







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.