0 / 0 / 0
Регистрация: 17.09.2017
Сообщений: 2
1

Интерполяционный полином Лагранжа

17.09.2017, 12:39. Показов 3603. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана функция f(x) = xln(x) + 2xcos(x)
a = 1; b = 2;
Вычислить значение полинома Лагранжа.
P.s. x(i) ∈ [a,b]
x(i) = a + i*h;
h = (b - a)/n
i = 0, 1, 2,......,n
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2017, 12:39
Ответы с готовыми решениями:

Интерполяционный полином Лагранжа
Привет всем! ;)Такой вопрос, имею лабораториум по програмированию и получил несколько заданий, это...

Интерполяционный полином Лагранжа
Помогите пожалуйста есть программа когда нужно по заданному х=4 найти у Теперь мне нужно сделать...

Вычислить интерполяционный полином Лагранжа
Здравствуйте! Помогите исправить ошибку в коде. Необходимо для индивидуальной функции вычислить...

Пользуясь интерполяционный полином Лагранжа, вычислить приближенное значение функции
Здравствуйте! Помогите с заданием: Функция y=f(x) задана таблицей. Пользуясь интерполяционный...

4
671 / 474 / 215
Регистрация: 06.09.2013
Сообщений: 1,304
18.09.2017, 06:50 2
Я только изучаю C++, поэтому может что-то и коряво, но полином Лаагранжа считает верно, это я могу гарантировать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <array>
#include <algorithm>
 
template <size_t degree>
class LagrangeInterpolation {
    std::array<double, degree + 1> _x;
    std::array<double, degree + 1> _y;
    std::array<double, degree + 1> _denominators;
    double get_product(int index, double x);
public:
    LagrangeInterpolation(double a, double b);
    double operator()(double t);
};
 
template<size_t degree>
double LagrangeInterpolation<degree>::get_product(int index, double x) {
    int i = 0;
    return std::accumulate(_x.begin(), _x.end(), 1.0, [&](double prev, double xi) {
                           return i++ != index ? prev * (xi - x) : prev;
                           });
}
 
template <size_t degree>
LagrangeInterpolation<degree>::LagrangeInterpolation(double a, double b) {
    double h = std::abs(b - a) / degree;
    int i = 0;
    std::generate(_x.begin(), _x.end(), [&](){ return a + h * i++; });
    std::transform(_x.begin(), _x.end(), _y.begin(), [](double x) { return x * (std::log(x) + 2.0 * std::cos(x)); });
    i = 0;
    std::generate(_denominators.begin(), _denominators.end(), [&]()
                  {
                      double x = _x[i];
                      return get_product(i++, x);
                  });
}
 
template <size_t degree>
double LagrangeInterpolation<degree>::operator()(double t) {
   int i = 0;
   return std::accumulate(_y.begin(), _y.end(), 0.0, [&](double prev, double y) {
                            double d = _denominators[i];
                            return prev + y * get_product(i++, t) / d;
                          });
}
 
int main()
{
    LagrangeInterpolation<5> lagrange(1.0, 2.0);
    double x = 0.0;
    std::cout << "Введите x: " << std::endl;
    std::cin >> x;
    std::cout << "Значение интерполяционного полинома Лагранжа: " << lagrange(x) << std::endl;
}
0
0 / 0 / 0
Регистрация: 17.09.2017
Сообщений: 2
25.09.2017, 10:12  [ТС] 3
Выдает такие ошибки
Миниатюры
Интерполяционный полином Лагранжа  
0
671 / 474 / 215
Регистрация: 06.09.2013
Сообщений: 1,304
25.09.2017, 10:47 4
Morgenstern88, да в любом случае это была шутка, может попозже нормально напишу, если другие не ответят.
0
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
25.09.2017, 12:03 5
Нужно включить библиотеку #include <numeric> и компилятор должен поддерживать стандарт не ниже C++11 включительно.
0
25.09.2017, 12:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2017, 12:03
Помогаю со студенческими работами здесь

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

Интерполяционный многочлен Лагранжа
не поможете построить график интерполяционного многочлена Лагранжа для функции f(x)=sin(pi x) при...

Интерполяционный многочлен Лагранжа
Здравствуйте, уважаемые, обшарил форум, но решения проблемы не нашел. Потратил часа 2, но так и не...

Интерполяционный многочлен Лагранжа
Уважаемый форум...помогите пожалуйста полином Лагранжа задан 10 точками...как его вывести в форме...

полином Лагранжа
Доброго времени суток! Нужно проинтегрировать полином Лагранжа. есть код на паскале, нужно...

Полином Лагранжа и Чебышева
Неправильно выводит погрешность #include &quot;iostream&quot; #include &quot;math.h&quot; using namespace std; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru