{
double y;
y=x*x-12*x;
return (y);
}
Решение задачи
Функция f(x) = x2-12xнач. точка x0= 1 шаг 1
Номер итерации 1
Начальная точка 1
X1 = a = 1
F(x) = -11
Номер итерации 2
Начальная точка 1
Шаг 1
X2 = a= 2
F(x) = -20
Номер итерации 3
Начальная точка 2
Шаг 2
X3 = a = 4
F(x) = -32
Номер итерации 4
Начальная точка 4
Шаг 4
X4 = b = 8
F(x) = -32
Отрезок [a;b] =[2;8] Число итераций = 4
Сводная таблица результатов№1
f(x) = x2-12x | |||
Начальнаяточка | Шаг | Отрезок | Число итераций |
1 | 1 | [2;8] | 4 |
1 | 10 | [-9;11] | 3 |
3 | 1 | [4;11] | 4 |
3 | 10 | [-7;13] | 3 |
0 | 1 | [2;16] | 5 |
0 | 10 | [0;30] | 3 |
10 | 1 | [2;8] | 4 |
10 | 10 | [0;20] | 3 |
Сводная таблица результатов№2
f(x) = 2x2+(16/x) | |||
Начальнаяточка | Шаг | Отрезок | Число итераций |
1.6 | 1 | [0.6;2.6] | 3 |
1.6 | 2 | [-0.4;3.6] | 3 |
2 | 1 | [1;3] | 3 |
2 | 2 | [0;2] | 3 |
0.1 | 1 | [-0.9;2.1] | 3 |
0.1 | 2 | [-1.9;4.1] | 3 |
10 | 1 | [-5;9] | 4 |
10 | 2 | [-4;8] | 3 |
Сводная таблица результатов№3
f(x) = (127/4)x2-(61/4)x+2 | |||
Начальнаяточка | Шаг | Отрезок | Число итераций |
0 | 0.5 | [-0.5;0.5] | 2 |
0 | 1 | [-1;1] | 2 |
1 | 0.5 | [-1;0.5] | 3 |
1 | 1 | [-1;1] | 2 |
2 | 0.5 | [-2;1] | 4 |
2 | 1 | [-2;1] | 3 |
-10 | 0.5 | [-6;6] | 6 |
-10 | 1 | [-6;6] | 5 |
10 | 0.5 | [-6;6] | 6 |
10 | 1 | [-6;6] | 5 |
Задание№2
Найти точки минимума внутри найденного отрезка локализации минимумаметодом золотого сечения.
(Программа должна обеспечить на каждой итерации метода вывод на экран:
- номера итерации,
- границ текущего отрезка [a, b],
- внутренних точек и значений функции в них,
а затем
- финальной оценки x* точки минимума функции f(x)
- соответствующего точке x* значения функции f(x*)).
Текст программы на С++
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
doublefunction (double); // вычисляет значение функции в данной точке
void main (void)
{
double a, b, E, F1, F2, LM, x = 0, fc, fd, fx, i = 0, c = 0, d = 0; // Определениепеременных
clrscr();
cout << "Введите границы начального отрезка:" << endl << "a0 = ";
cin >> a;
cout << "b0 = ";
cin >> b;
cout << "Введите число Е:" << endl << "E = ";
cin >> E;
clrscr();
cout << "Границы начальнога отрезка:"<< endl <<"а[" << i << "] = " << a << endl;
cout << "b[" << i << "] = " << b << endl;
cout << "Число Е = " << E << endl;
F1 = (3 - sqrt(5))*0.5;
F2 = 1 - F1;
do
{
LM = b - a;
cout << endl << "Номер итерации " << i + 1 << endl;
cout << "Границы текущего отрезка:" << endl << "а[" << i << "] = " << a << endl;
cout << "b[" << i << "] = " << b << endl;
if (LM <= E)
{
x = (a + b)*0.5;
fx = function(x);
cout << "Точка минимума x = " << setprecision(10) << x << endl;
cout << "Значение функции F(x) в точке минимума = " << setprecision(10) << fx << endl;
cout << "Press any key";
getch();
exit(0);
}
else
{
c = a + F1 * LM;
d = a + F2 * LM;
fc = function(c);
fd = function(d);
cout << "Значение внутренней точки с[" << i << "] = " << setprecision(10) << c << endl;
cout << "Значение внутренней точки d[" << i << "] = " << setprecision(10) << d << endl;
cout << "Значение функции F(x) в точке с[" << i << "] = " << setprecision(10) << fc << endl;
cout << "Значение функции F(x) в точке d[" << i << "] = " << setprecision(10) << fd << endl;
}
if (fc == fd)
{
a = c;
b = d;
x = (a + b)*0.5;
fx = function(x);
cout << "Точка минимума x = " << setprecision(10) << x << endl;
cout << "Значение функции F(x) в точке минимума = " << setprecision(10) << fx << endl;
cout << "Press any key";
getch();
exit(0);
}
else
{
if (fc < fd)
{
a = a;
b = d;
i++;
}
else
{
a = c;
b = b;
i++;
}
}
}
while (1);
}
double function (double x)
{
double y;
y = x * x - 12 * x;
return (y);
}
Решение задачи
Функция f(x) = x2-12x
Границы начального отрезка:
а[0] = -9
b[0] = 11
Число Е = 0.1
Номер итерации 1
Границы текущего отрезка:
а[0] = -9
b[0] = 11
Значение внутренней точки с[0] = -1.36
Значение внутренней точки d[0] = 3.36
Значение функции F(x) в точке с[0] = 18.17
Значение функции F(x) в точке d[0] = -29.03
Номер итерации 2
Границы текущего отрезка:
а[1] = -1.36
b[1] = 11
Значение внутренней точки с[1] = 3.36
Значение внутренней точки d[1] = 6.27
Значение функции F(x) в точке с[1] = -29.03
Значение функции F(x) в точке d[1] = -35.92
Номер итерации 3
Границы текущего отрезка:
а[2] = 3.36
b[2] = 11
Значение внутренней точки с[2] = 6.27
Значение внутренней точки d[2] = 8.08
Значение функции F(x) в точке с[2] = -35.92
Значение функции F(x) в точке d[2] = -31.66
Номер итерации 4
Границы текущего отрезка:
а[3] = 3.36
b[3] = 8.08
Значение внутренней точки с[3] = 5.16
Значение внутренней точки d[3] = 6.27
Значение функции F(x) в точке с[3] = -35.3
Значение функции F(x) в точке d[3] = -35.92
Номер итерации 5
Границы текущего отрезка:
а[4] = 5.16
b[4] = 8.08
Значение внутренней точки с[4] = 6.27
Значение внутренней точки d[4] = 6.96
Значение функции F(x) в точке с[4] = -35.92
Значение функции F(x) в точке d[4] = -35.06
Номер итерации 6
Границы текущего отрезка:
а[5] = 5.16
b[5] = 6.96
Значение внутренней точки с[5] = 5.85
Значение внутренней точки d[5] = 6.27
Значение функции F(x) в точке с[5] = -35.97
Значение функции F(x) в точке d[5] = -35.92
Номер итерации 7
Границы текущего отрезка:
а[6] = 5.16
b[6] = 6.27
Значение внутренней точки с[6] = 5.58
Значение внутренней точки d[6] = 5.85
Значение функции F(x) в точке с[6] = -35.83
Значение функции F(x) в точке d[6] = -35.97
Номер итерации 8
Границы текущего отрезка:
а[7] = 5.58
b[7] = 6.27
Значение внутренней точки с[7] = 5.85
Значение внутренней точки d[7] = 6.01
Значение функции F(x) в точке с[7] = -35.97
Значение функции F(x) в точке d[7] = -35.99
Номер итерации 9
Границы текущего отрезка:
а[8] = 5.85
b[8] = 6.27
Значение внутренней точки с[8] = 6.01
Значение внутренней точки d[8] = 6.11
Значение функции F(x) в точке с[8] = -35.999
Значение функции F(x) в точке d[8] = -35.986
Номер итерации 10
Границы текущего отрезка:
а[9] = 5.85
b[9] = 6.11
Значение внутренней точки с[9] = 5.95
Значение внутренней точки d[9] = 6.01
Значение функции F(x) в точке с[9] = -35.997
Значение функции F(x) в точке d[9] = -35.999
Номер итерации 11
Границы текущего отрезка:
а[10] = 5.95
b[10] = 6.11
Значение внутренней точки с[10] = 6.01
Значение внутренней точки d[10] = 6.05
Значение функции F(x) в точке с[10] = -35.999
Значение функции F(x) в точке d[10] = -35.997
Номер итерации 12
Границы текущего отрезка:
а[11] = 5.95
b[11] = 6.05
Значение внутренней точки с[11] = 5.99
Значение внутренней точки d[11] = 6.01
Значение функции F(x) в точке с[11] = -35.999
Значение функции F(x) в точке d[11] = -35.999
Номер итерации 13
Границы текущего отрезка:
а[12] = 5.95
b[12] = 6.01
Точка минимума x = 5.981
Значение функции F(x) в точке минимума = -35.999999
f(x) = x2-12x | ||||
| отрезки | Точка минимума | Значение функции | Число итераций |
0.1 | [2;8] | 6.003 | -35.999999 | 10 |
[-9;11] | 5.981 | -35.999999 | 13 | |
[4;11] | 5.996 | -35.999999 | 10 | |
[-7;13] | 6.018 | -35.999966 | 13 | |
[2;16] | 6.006 | -35.999957 | 12 | |
[0;30] | 6.002 | -35.999997 | 13 | |
[2;8] | 6.003 | -35.999999 | 10 | |
[0;20] | 6.005 | -35.999965 | 13 | |
f(x) = 2x2+(16/x) | ||||
| отрезки | Точка минимума | Значение функции | Число итераций |
0.01 | [0.6;2.6] | 1.5875 | 15.119055 | 13 |
[-0.4;3.6] | 1.5820 | 15.119055 | 15 | |
[1;3] | 1.5861 | 15.119055 | 14 | |
[0;2] | 1.5874 | 15.119052 | 13 | |
[-0.9;2.1] | 1.5880 | 15.119050 | 13 | |
[-1.9;4.1] | 1.5864 | 15.119057 | 15 | |
[-5;9] | 1.5862 | 15.119061 | 17 | |
[-4;8] | 1.5866 | 15.119055 | 16 |
f(x) = (127/4)x2 - (61/4)x+2 | ||||
| Отрезки | Точка минимума | Значение функции | Число итераций |
0.001 | [-0.5;0.5] | 0.2418 | 0.18548 | 16 |
[-1;1] | 0.2418 | 0.18548 | 17 | |
[-1;0.5] | 0.2420 | 0.18548 | 17 | |
[-1;1] | 0.2418 | 0.18548 | 17 | |
[-2;1] | 0.2420 | 0.18548 | 18 | |
[-2;1] | 0.2420 | 0.18548 | 18 | |
[-6;6] | 0.2418 | 0.18548 | 21 | |
[-6;6] | 0.2418 | 0.18548 | 21 | |
[-6;6] | 0.2418 | 0.18548 | 21 | |
[-6;6] | 0.2418 | 0.18548 | 21 |