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

  • Цель работы.

  • Основные теоретические сведения.

  • Экспериментальные данные 7 вариант

  • Обработка результатов Задание № 1

  • вв. Отчет по лабораторной работе 3 по дисциплине Конструирование программ Тема Интерполирование и экстраполирование данных. Интерполяционный многочлен Ньютона


    Скачать 71.73 Kb.
    НазваниеОтчет по лабораторной работе 3 по дисциплине Конструирование программ Тема Интерполирование и экстраполирование данных. Интерполяционный многочлен Ньютона
    Дата31.10.2019
    Размер71.73 Kb.
    Формат файлаdocx
    Имя файла3_labka_6_variant (2).docx
    ТипОтчет
    #92941

    МИНОБРНАУКИ РОССИИ

    Санкт-Петербургский государственный

    электротехнический университет

    «ЛЭТИ» им. В.И. Ульянова (Ленина)

    Кафедра Информационные системы


    отчет

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

    по дисциплине «Конструирование программ»

    Тема: Интерполирование и экстраполирование данных. Интерполяционный многочлен Ньютона.




    Студента гр. 7375




    Кручинин М.А.

    Преподаватель




    Копыльцов А.В.

    Санкт-Петербург

    2019

    Цель работы.

    Научиться находить приближенное значение функции при данном значении аргумента с помощью интерполяционного многочлена Ньютона.

    Основные теоретические сведения.

    Интерполяционный многочлен Ньютона является другой формой записи единого интерполяционного многочлена. Применение многочлена Ньютона имеет практические преимущества по сравнению с формулой Лагранжа и в случае неравноотстоящих, и особенно в случае равноотстоящих узлов.

    Интерполяционные многочлены Ньютона нужных степеней строятся по формулам (2.7.1) или (2.10.1) и (2.10.2).

    Если интерполируемая функция задана на таблице с постоянным шагом , то можно использовать связь между конечными и разделенными разностями: В этом случае многочлен Ньютона можно записать несколько в ином виде:

    Пусть



    Преобразуем разделенные разности в конечные: тогда





    и так далее.

    Тогда многочлен Ньютона можно переписать в следующем виде:

    (2.10.1)

    Эту формулу называют интерполяционным многочленом Ньютона с конечными разностями для интерполяции вперед. В ней используются только конечные разности, расположенные в верхней косой строке таблицы конечных разностей. Если использовать разности нижней косой строки, то аналогично получим многочлен Ньютона с конечными разностями для интерполяции назад:

    (2.10.2)

    Экспериментальные данные 7 вариант:


    Обработка результатов

    Задание № 1

    Построить интерполяционный многочлен Ньютона по не равноотстоящий сетке узлов и найти приближенное значение интерполируемой функции при значении аргумента.

    № варианта







    2

    0.015

    0.01

    9.9182

    7

    0.195

    0.11

    9.5194

    12

    0.137

    0.16

    9.1365

    17

    0.245

    0.23

    8.8769

    22

    0.385

    0.28

    8.4164

    27

    0.478

    0.39

    8.0779







    0.46

    7.7530







    0.50

    7.4412


    Задание № 2

    Вычислить приближенное значение функции по интерполяционной формуле Нью-тона для интерполяции вперед или назад

    № варианта







    2

    1.210

    1.15

    66.1659

    7

    4.680

    1.55

    63.9989

    12

    2.000

    1.95

    61.9658

    17

    3.870

    2.35

    60.0551

    22

    2.411

    2.75

    58.2558

    27

    3.275

    3.15

    56.5583







    3.55

    54.6807







    3.95

    52.7220







    4.35

    50.5229







    4.75

    48.1091



    Вывод:

    Программа была выполнена C++. В данной лабортаорной работе были получены навыки по работе с Интерполяционным многочленом Ньютона и его приближенным значением в точке интерполяцией вперед.
    Приложение 1

    Листнинг

    #include "pch.h"

    #include
    using namespace std;

    const int n = 10;

    const int n1 = 8;
    double Newton_f(double t, double x[n], double y[n]) {

    double res = y[0], F, den;

    int i, j, k;

    for (i = 1; i
    F = 0;

    for (j = 0; j <= i; j++) {//следующее слагаемое полинома

    den = 1;

    //считаем знаменатель разделенной разности

    for (k = 0; k <= i; k++) {

    if (k != j) den *= (x[j] - x[k]);

    }

    //считаем разделенную разность

    F += y[j] / den;

    }

    //домножаем разделенную разность на скобки (x-x[0])...(x-x[i-1])

    for (k = 0; k
    res += F;//полином

    }

    return res;

    }
    double Newton_f1(double t, double x[n1], double y[n1]);

    int main()

    {

    setlocale(0, "");

    double X = 1.369;

    double w[10];

    w[0] = 1.360;

    w[1] = 1.350;

    w[2] = 1.355;

    w[3] = 1.365;

    w[4] = 1.370;

    w[5] = 1.375;

    w[6] = 1.380;

    w[7] = 1.385;

    w[8] = 1.390;

    w[9] = 1.395;

    double o[10];

    o[0] = 4.4552;

    o[1] = 4.2556;

    o[2] = 4.3533;

    o[3] = 4.5618;

    o[4] = 4.6734;

    o[5] = 4.7904;

    o[6] = 4.9131;

    o[7] = 5.0419;

    o[8] = 5.1778;

    o[9] = 5.3202;

    double res;

    res = Newton_f(X, w, o);

    cout << round(res * 1000) / 1000;

    system("pause");

    X = 4.110;

    double w1[8];

    w1[0] = 5.60;

    w1[1] = 3.50;

    w1[2] = 4.55;

    w1[3] = 6.20;

    w1[4] = 7.75;

    w1[5] = 8.80;

    w1[6] = 9.45;

    w1[7] = 10.95;

    double o1[8];

    o1[0] = 36.5982;

    o1[1] = 33.1154;

    o1[2] = 34.8133;

    o1[3] = 38.4747;

    o1[4] = 40.4473;

    o1[5] = 42.5211;

    o1[6] = 44.7012;

    o1[7] = 46.9931;

    res = Newton_f1(X, w1, o1);

    cout << round(res * 1000) / 1000;

    system("pause");

    return 0;

    }
    double Newton_f1(double t, double x[n1], double y[n1]) {

    double res = y[0], F, den;

    int i, j, k;

    for (i = 1; i
    F = 0;

    for (j = 0; j <= i; j++) {

    den = 1;

    for (k = 0; k <= i; k++) {

    if (k != j) den *= (x[j] - x[k]);

    }

    F += y[j] / den;

    }

    for (k = 0; k
    res += F;

    }

    return res;

    }


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