Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.80
Student009
Сообщений: n/a
24.05.2011, 16:38     Интерполяционный многочлен Лагранжа #1
не поможете построить график интерполяционного многочлена Лагранжа для функции f(x)=sin(pi x) при числе узлов n=3,5,25 узлы равномерно расставлены там на отрезке 0<=x<=1 программа с++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2011, 16:38     Интерполяционный многочлен Лагранжа
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.05.2011, 18:27     Интерполяционный многочлен Лагранжа #2
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
//lagrange.h
#ifndef LAGRANGE_H
#define LAGRANGE_H
 
#include <vector>
 
class LagrangePolynomial {
    static double __fraction(double x, unsigned i, 
                             const std::vector< double > & __x, 
                             const std::vector< double > & __y);
public:
    static double fi(double X, 
                     const std::vector< double > & x, 
                     const std::vector< double > & y);
};
 
double LagrangePolynomial::__fraction(double x, unsigned i, 
                                      const std::vector< double > & __x, 
                                      const std::vector< double > & __y)
{
    double num(1), denum(1);
    for( size_t k = 0; k < __x.size(); k++ )
        if( k != i ) num *= ( x - __x[k] );
 
    for( size_t k = 0; k < __x.size(); k++ )
       if( k != i ) denum *= ( __x[i] - __x[k] );
 
    return num / denum;
}
 
double LagrangePolynomial::fi(double X, 
                              const std::vector< double > & x,
                              const std::vector< double > & y)
{
    double sum(0.0);
    for( size_t i = 0; i < y.size(); i++ )
       sum += y[i] * __fraction(X, i, x, y);
    return sum;
}
#endif // LAGRANGE_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//main.h
#include <cstdio>
#include <math.h>
#include "lagrange.h"
 
#define M_PI 3.14159265358979323846
 
int main()
{
    std::vector< double > x, y;
    //n = 6, полином 5-й степени
    for(int i = 0; i <= 5; i++)
    {
    x.push_back(i * 0.2);
    y.push_back(sin(M_PI * x.back()));
    }
    for(int i = 0; i < 11; i++)
       printf(" x = %lf\tApproximate = %lf\tExexct = %lf\n", 
        i * 0.1, LagrangePolynomial::fi(i * 0.1, x, y), sin(M_PI * i * 0.1));
    std::getchar();
}
Yandex
Объявления
24.05.2011, 18:27     Интерполяционный многочлен Лагранжа
Ответ Создать тему
Опции темы

Текущее время: 11:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru