Главная страница
Навигация по странице:

  • Отчёт по контрольной работе № 2 по дисциплине «Вычислительная математика» Томск – 2021 Оглавление

  • Решение уравнений с одной переменной

  • Вариант 7: Теоретический материал (метод золотого сечения)

  • Результаты работы программы

  • Входные данные Выходные данные

  • Приложение А. Листинг программы

  • Отчёт КР2. 1. Решение уравнений с одной переменной 3


    Скачать 33.07 Kb.
    Название1. Решение уравнений с одной переменной 3
    Дата14.05.2023
    Размер33.07 Kb.
    Формат файлаdocx
    Имя файлаОтчёт КР2.docx
    ТипРешение
    #1128751

    Министерство науки и высшего образования Российской Федерации

    Федеральное государственное бюджетное образовательное учреждение

    высшего образования

    ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

    СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ

    (ТУСУР)

    Кафедра компьютерных систем в управлении и проектировании
    (КСУП)

    Отчёт по контрольной работе № 2

    по дисциплине

    «Вычислительная математика»

    Томск – 2021

    Оглавление




    1.Решение уравнений с одной переменной 3

    1.1.Задание 3

    1.2.Теоретический материал (метод золотого сечения) 4

    1.3.Алгоритм решения 4

    1.4.Результаты работы программы 5

    Выводы 6

    Список использованных источников 7

    Приложение А. Листинг программы 8


    1. Решение уравнений с одной переменной



      1. Задание



    Написать программу отделения корней и их уточнения одним из нижеперечисленных методов:

    1. методом дихотомии;

    2. методом хорд;

    3. методом золотого сечения;

    4. методом Ньютона;

    5. методом итераций;

    6. комбинированным методом


    Входные данные:

    • функция f(x) и её первая и вторая производные (для метода Ньютона, итераций и комбинированного метода);

    • интервал [a, b];

    • точность по аргументу и по функции ε1, ε2.


    Выходные данные:

    • корни ξi, точность;

    • значения f(ξi);

    • количество итераций n;

    • количество вычислений функции f(x);

    • время счета;

    • параметр сходимости , где n – порядок сходимости.


    Вариант 7:


      1. Теоретический материал (метод золотого сечения)



    Метод золотого сечения относится к интервальным методам (или методам исключения интервалов).

    Точки деления интервала выбираются таким образом, чтобы выполнялось соотношение между интервалами:



    где – золотое сечение, Δk = bkak – длина отрезка.

      1. Алгоритм решения



    Представим алгоритм поиска нулей в форме последовательного выполнения итераций.

    Задаём точки a1 = a, b1 = b, номер итерации k = 1.

    Шаг 1. Определяем координаты золотого сечения:





    Вычисляем точку

    Шаг 2. Вычисляем значения функции f(ak), f(ck), f(dk), f(bk) и проверяем условия:

    а) если f(ak) ·f(dk) ≤ 0, то ak+1 = ak; bk+1 =dk;

    б) иначе если f(ck) ·f(bk) ≤ 0, то ak+1 = ck; bk+1 =bk;

    Вычисляем новое приближение корня . Если , то конец, иначе k = k + 1 и переход на шаг 1.

    Скорость сходимости линейная с коэффициентом α = γ – 1.

      1. Результаты работы программы




    Входные данные

    Выходные данные

    a = 0

    Корень уравнения = 1.11383

    b = 2

    Точность по аргументу: 0.000733137

    eps = 0.001

    Точность по функции: 0.000733137




    Количество итераций: 15




    Количество вычислений функции f(x): 45




    Время счёта (мс): 0.00758757




    Параметр сходимости: 0.618034



    Входные данные

    Выходные данные

    a = 2

    Корень уравнения = 2.77262

    b = 6

    Точность по аргументу: 8.17127e-005

    eps = 0.0001

    Точность по функции: 2.67915e-005




    Количество итераций: 21




    Количество вычислений функции f(x): 63




    Время счёта (мс): 0.00937288




    Параметр сходимости: 0.618034




    Входные данные

    Выходные данные

    a = 4

    Корень уравнения = 6.43912

    b = 8

    Точность по аргументу: 4.10606e-007

    eps = 0.00001

    Точность по функции: 4.81611e-007




    Количество итераций: 32




    Количество вычислений функции f(x): 96




    Время счёта (мс): 0.0107119




    Параметр сходимости: 0.618034



    Входные данные

    Выходные данные

    a = 8

    Корень уравнения = 9.31724

    b = 12

    Точность по аргументу: 2.71445e-011

    eps = 1e-10

    Точность по функции: 8.23648e-011




    Количество итераций: 52




    Количество вычислений функции f(x): 156




    Время счёта (мс): 0.0160678




    Параметр сходимости: 0.618034

    Выводы



    В ходе выполнения данной контрольной работы были изучены методы решения уравнений одной переменной, написана реализация алгоритма решения задачи методом золотого сечения на языке программирования C++.

    Список использованных источников




    1. Бахвалов, Н. С. Численные методы : учеб. Пособие для вузов / Н. С. Бахвалов, Н.П. Жидков, Г. М. Кобельков. – М. : БИНОМ. Лаборатория знаний, 2011. – 637 с.

    2. Мицель, А. А. Вычислительные методы : учеб. Пособие / А. А. Мицель. – Томск : В-Спектр, 2010. – 264 с.

    3. Мицель, А. А. Практикум по численным методам / А. А. Мицель. – Томск : ТУСУР, 2004. – 196 с.

    4. Романенко, В. В. Вычислительная математика. Лабораторные работы / В. В. Романенко. – Томск : ТУСУР, 2006. – 114 с.

    5. Самарский, А. А. Задачи и упражнения по численным методам / А. А. Самарский, П. Н. Вабишевич, Е. А. Самарская. – М. : Эдиториал УРСС, 2009. – 208 с.

    6. Образовательный стандарт вуза ОС ТУСУР 01–2013. Работы студенческие по направлениям подготовки и специальностям технического профиля. Общие требования и правила оформления [Электронный ресурс] / А. А. Чернышев. – Томск : ТУСУР, 2013. – 57 с. – Режим доступа: https://regulations.tusur.ru/documents/70 (дата обращения: 20.04.2021).


    Приложение А. Листинг программы


    #include

    #include

    #include

    #include
    using namespace std;
    // функция f(x), вариант 7

    int fc = 0;

    double f(double x)

    {

    fc ++;

    return x * sin(x) - 1;

    }
    // вычисление корня уравнения методом золотого сечения

    void GoldenSection(double a0, double b0, double eps1, double eps2)

    {

    // значение отношения золотого сечения

    const double gama = (sqrt(5) + 1) / 2;

    double a = a0, b = b0, c, d, delta;

    double x = (a + b) / 2;

    bool f1, f2;

    int k = 0;

    // засекаем время начала вычислений

    __int64 freq, start, stop;

    QueryPerformanceFrequency((LARGE_INTEGER *)&freq);

    QueryPerformanceCounter((LARGE_INTEGER *)&start);

    // алгоритм нахождения корня

    do {

    // шаг 1

    delta = b - a;

    d = a + delta / gama;

    c = a + delta / pow(gama, 2);

    // шаг 2

    if (f(a) * f(d) <= 0)

    b = d;

    else

    a = c;

    x = (a + b) / 2;

    // проверяем условия достижения точности

    f1 = ((b - a) / 2 < eps1); // по аргументу

    f2 = (fabs(f(x)) < eps2); // по значению функции

    k ++;

    } while (!(f1 && f2));

    // засекаем вреия завершения вычислений

    QueryPerformanceCounter((LARGE_INTEGER *)&stop);

    double t = ((double)(stop - start) / freq) * 1000;

    // вывод результатов

    cout << "Корень уравнения: " << x << endl;

    cout << "Точность по аргументу: " << (b - a) / 2 << endl;

    cout << "Точность по функции: " << fabs(f(x)) << endl;

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

    cout << "Количество вычислений функции f(x): " << fc - 1 << endl;

    cout << "Время счёта (мс): " << t << endl;

    cout << "Параметр сходимости: " << gama - 1 << endl;

    }
    int main(int argc, char** argv)

    {

    setlocale(LC_ALL, "Russian");

    double a, b, eps;

    cout << "a = "; cin >> a;

    cout << "b = "; cin >> b;

    cout << "eps = "; cin >> eps;

    GoldenSection(a, b, eps, eps);

    return 0;

    }


    написать администратору сайта