p align="left">Сводная таблица результатов №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> double function (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 | | |
Страницы: 1, 2
|