Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИДЗ / МО_ИДЗ.pdf
Скачиваний:
0
Добавлен:
27.06.2025
Размер:
1.36 Mб
Скачать

Заключение

Было выполнено индивидуальное домашнее задание написаны коды для заданий и построены графики. Так же заполнены таблицы согласно

заданию.

15

Приложение А

using System;

using System.Collections.Generic;

class GoldenSectionMethod

{

public static double F1(double x) => 5 - 3 * Math.Exp(-Math.Pow((x - 5) / 3, 2)); public static double F2(double x) => 3 * (x - 4) * (x - 3) * (x - 1);

public static double F3(double x) => (x / 2) + 5 * Math.Sin(5 * Math.PI * x + 4);

public static (double minX, double minVal, int iterCount, List<double> xSequence)

FindMinimum(Func<double, double> f, double a, double b, double epsilon)

{

double phi = (1 + Math.Sqrt(5)) / 2; // Golden ratio double resphi = 2 - phi;

double x1 = a + resphi * (b - a); double x2 = b - resphi * (b - a); double f1 = f(x1);

double f2 = f(x2); int iterations = 0;

List<double> xSequence = new List<double>() { x1, x2 };

while (Math.Abs(b - a) > epsilon)

{

iterations++; if (f1 < f2)

{

16

b = x2; x2 = x1; f2 = f1;

x1 = a + resphi * (b - a);

f1 = f(x1); xSequence.Add(x1);

}

else

{

a = x1; x1 = x2; f1 = f2;

x2 = b - resphi * (b - a);

f2 = f(x2); xSequence.Add(x2);

}

}

double minimum = (a + b) / 2;

return (minimum, f(minimum), iterations, xSequence);

}

public static void Main(string[] args)

{

Func<double, double>[] functions = { F1, F2, F3 }; string[] functionNames = { "f1", "f2", "f3" };

(double, double)[] intervals = { (0, 10), (-2, 8), (-5, 5) };

17

for (int i = 0; i < functions.Length; i++)

{

Console.WriteLine($"Функция {functionNames[i]}:");

(double minX, double minVal, int iterCount, List<double> xSequence) = FindMinimum(functions[i], intervals[i].Item1, intervals[i].Item2, 1e-6);

Console.WriteLine($" Метод золотого сечения:");

Console.WriteLine($" Начальный отрезок: [{intervals[i].Item1}, {intervals[i].Item2}]");

Console.WriteLine($" Число итераций: {iterCount}");

Console.WriteLine($" Найденный минимум: x = {Math.Round(minX, 2)}, f(x) = {Math.Round(minVal, 2)}");

Console.WriteLine($" Последовательность точек: {string.Join("; ", xSequence.ConvertAll(x => Math.Round(x, 2)))}");

Console.WriteLine();

}

}

}

18

Соседние файлы в папке ИДЗ