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

  • ОТЧЁТ по лабораторной работе № 1 « Метод исчисления корней »

  • ЦЕЛЬ РАБОТЫ

  • ХОД РАБОТЫ

  • ТЕСТИРОВАНИЕ

  • Отчёт по лабораторной работе 1 Метод исчисления корней


    Скачать 127.37 Kb.
    НазваниеОтчёт по лабораторной работе 1 Метод исчисления корней
    Дата03.05.2023
    Размер127.37 Kb.
    Формат файлаdocx
    Имя файлаlaba1.docx
    ТипДокументы
    #1106341

    МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

    ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

    ВЫСШЕГО ОБРАЗОВАНИЯ

    «НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»



    ОТЧЁТ

    по лабораторной работе № 1

    «Метод исчисления корней»

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

    «Программирование»


    Выполнил(а):

    Буркова К.М.

    Группа АТ-24

    Проверил:
    Кухто А.В.


    Новосибирск

    2023

    ЦЕЛЬ РАБОТЫ:

    Определить корни на заданном отрезке. Вычислить таблицу значений функции на интервале [X_min, X_max] с шагом h, а также программно определить отрезки, на концах которых функция меняет знак с точностью до eps при помощи различных методов для каждого отрезка.

    ХОД РАБОТЫ:

    Находим значения, а затем при помощи методов половинного деления и хорд определяем корни.

    ЛИСТИНГ:

    //13 вариант

    #include

    #include

    #include
    float uravnenie(float x);

    float proizvodna(float x);

    int znak(float a);

    float polovinnoe_delenie(float a, float b);

    float metod_hord(float a, float b);

    float metod_kasatelnih(float b);

    int main()

    {

    printf("znachenia: ");

    for (float i = -2.2; i <= 1.0; i = i + 0.05) {

    printf(" x = %f, y= %f \n ", i, uravnenie(i));

    }

    printf("\n korni:\n");

    for (float i = -2.2; i < 1.0; i = i + 0.05) {

    printf(" x = %f, y= %f \n ", i, uravnenie(i));

    if (uravnenie(i) == 0.0) {

    printf(" %f,", i);

    }

    else if (znak(uravnenie(i)) != znak(uravnenie(i + 0.05))) {

    printf("otresok [%f, %f]\n", i, i + 0.05);

    printf(" polovinnoe delenie \n");

    printf(" koren %f\n", polovinnoe_delenie(i, i + 0.05));

    printf(" metod hord \n");

    printf(" koren %f\n", metod_hord(i, i + 0.05));

    }

    }

    }
    float uravnenie(float x) {

    x = 3*x*x*x*x+8*x*x*x+6*x*x-10;

    return x;

    }
    float proizvodna(float x) {

    x = 12*x*x*x+24*x*x+12*x;

    return x;

    }
    int znak(float a) {

    if (a > 0) {

    return 0;

    };

    if (a < 0) { return 1; };

    }
    float polovinnoe_delenie(float a, float b) {

    int n = 0;

    while (fabs(uravnenie((a + b) / 2)) >= 0.001) {

    if (znak(uravnenie(a)) != znak(uravnenie((b + a) / 2))) {

    b = (b + a) / 2;

    }

    else { a = (b + a) / 2; }

    n++;

    }

    printf(" kolichestvo iterazi : %d\n", n);

    return (a + b) / 2;

    }
    float metod_hord(float a, float b) {

    float x = (a * uravnenie(b) - b * uravnenie(a)) / (uravnenie(b) - uravnenie(a));

    int n = 0;

    while (fabs(uravnenie(x)) >= 0.001) {

    n++;

    if (znak(uravnenie(a)) != znak(uravnenie(x))) {

    b = x;

    }

    else { a = x; }

    x = (a * uravnenie(b) - b * uravnenie(a)) / (uravnenie(b) - uravnenie(a));

    }

    printf(" kolichestvo iterazi : %d\n", n);

    return x;

    }

    ТЕСТИРОВАНИЕ:



    БЛОК СХЕМЫ:

    1. Метод касательных



    1. Метод итераций



    1. Метод половинного деления



    1. Метод хорд



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