Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Контрольная работа по "Математике"

Автор:   •  Май 22, 2018  •  Контрольная работа  •  7,690 Слов (31 Страниц)  •  426 Просмотры

Страница 1 из 31

Задание 1

Найти точку минимума функции методами дихотомии, золотого сечения, Фибоначчи. Сравнить скорости сходимости методов.

Вариант 8 – f(x) = ex−x3 +4

Метод дихотомии

Данный метод применяется для нахождения значений действительно-значной функции, определяемых по какому-либо критерию (это может быть сравнение на минимум, максимум или конкретное число).

Разобьём заданный отрезок пополам и возьмём две симметричные относительно центра точки x1 и x2 так, что:

[pic 1]

где δ — некоторое число в интервале (0, (b-a)/2)

Вычислим два значения функции f(x) в двух новых точках. Сравнением определим в какой из двух новых точек значение функции f(x) максимально. Отбросим тот из концов изначального отрезка, к которому точка с максимальным значением функции оказалась ближе, то есть:

  • Если f(x1) > f(x2)то берётся отрезок (x1,b), а отрезок (a,x1) отбрасывается.
  • Иначе берётся зеркальный относительно середины отрезок (a,x2), а отбрасывается (x2,b).

Процедура повторяется, пока не будет достигнута заданная точность.

Код программы:

public class Opr {

    int count = 0;

       //функция для минимизации

        static double f(double x) {

            double a1=Math.exp(1);

            double a2=x;

                return Math.pow(a1,a2) - x * x * x + 4;

        }

        double dich(double a, double b, double delta, double eps) {

                double x1, x2;

                if ((b - a) > eps) {

                        x1 = a + (b - a) / 2 - delta;

                        x2 = a + (b - a) / 2 + delta;

                        if (f(x1) > f(x2)) {

                                count++;

                                return dich(x1, b, delta / 2, eps);

                        } else {

                                count++;

                                return dich(a, x2, delta / 2, eps);

                        }

                } else {

                        count++;

                        return a;

                }

        }

    public static void main(String[] args) {

         Opr d = new Opr();

        double x = d.dich(0, 20, 0.05, 0.0001);

        System.out.println("Iterations= " + d.count + " x = " + x + " f(x) = " + f(x));

    }

[pic 2]

Рисунок 1 – Результат выполнения метода дихотомии

Метод золотого сечения

Золотое сечение — это деление какой-либо величины в отношении 62% и 38%; деление отрезка АВ точкой С на две части (меньший отрезок АС и больший отрезок ВС), чтобы для длин отрезков было верно AC/BC = BC/AВ.

Для того, чтобы найти неопределённое значение этой функции на заданном отрезке, отвечающее критерию поиска, рассматриваемый отрезок делится в пропорции золотого сечения в обоих направлениях, то есть выбираются две точки x1 и x2 такие, что:

[pic 3]

То есть точка x1 делит отрезок (a,x2) в отношении золотого сечения. Аналогично x2 делит отрезок (x1,b) в той же пропорции.

Далее рассчитывают значения целевой функции в этих точках f(x1) и f(x2).

  • Если f(x1) > f(x2), то a = x1;
  • Иначе b = x2.

Если |b – a| < ε(точность), то x = (a+b)/2  и остановка поиска, иначе возвращаемся к рассчитыванию точек деления x1 и x2.

Код программы:

public class crossSection {

 

    final static double PHI = (1 + Math.sqrt(5)) / 2;

        int count;

        

//функция для минимизации

static double f(double x) {

            double a1=Math.exp(1);

            double a2=x;

                return Math.pow(a1,a2) - x * x * x + 4;

                 

        }

        double gold(double a, double b, double x, double y, double n, double eps) {

                double x1, x2, f1, f2;

                if ((b - a) > eps) {

                        if (n == 1) {

                                x1 = 2 * (a + (b - a) / 2) - x;

                                x2 = x;

                                f1 = f(x1);

                                f2 = y;

                        } else {

...

Скачать:   txt (24.6 Kb)   pdf (1.2 Mb)   docx (702.3 Kb)  
Продолжить читать еще 30 страниц(ы) »
Доступно только на Essays.club