Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
sanchoflat
4 / 6 / 3
Регистрация: 05.11.2011
Сообщений: 97
#1

Приближение функции многочленом Лагранжа - C++

09.04.2013, 19:07. Просмотров 1100. Ответов 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
const int n = 2;
double A[n+1][n+1] = {0};
double a = -2, b = 2;
const double h = (b - a)/n;
 
 
double pr(double x, int i)
{
    double temp =1;
    for ( int j = 0; j<=n; j++)
    {
        if ( j != i )
            temp *= (x - (a+j*h)) / ((a+i*h) - (a+j*h));
    }
    return temp;
 
}
double lag(double x)
{
    double temp = 0;
    for ( int i = 0; i<n+1; i++)
        temp += A[0][i] * pr(x,i); 
    return temp;
}
double func(double x)
{
    return abs(x*x+x);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int k = 0;
    for ( double i = 0; i<n+1; i++)   //заполнили первый столбец
        {
            A[k][0] = func(a+i*h);
            k++;    
        }
    int l = n+1;
for ( int j = 1; j<n+1; j++)   // создали треугольную матрицу
        {
            for ( int i = 0; i<l-1; i++)
            {
                A[i][j] = A[i+1][j-1] - A[i][j-1];
            }
            l--;
        }
1. Создаю треугольную матрицу, потом беру первую строку матрицы и использую её в качестве y0...yn
2. Сама функция pr - она считает произведение частных разностей отрезка.
Проверил все на бумаге для n = 2, по идеи все сходится, но ответ отличается очень сильно между func(x) и lag(x) и на погрешность списать нельзя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 19:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Приближение функции многочленом Лагранжа (C++):

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

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

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

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

Приближение к современным технологиям программирования
Доброго времени суток форумчане. Немного истории: не так давно мой одногруппник...

Интерполяция Лагранжа
Добрый день! Помогите пожалуйста найти ошибку в программе, битый день делаю, я...

2
softmob
1249 / 699 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
09.04.2013, 20:48 #2
Если не ошибаюсь для применения интерполяционного многочлена Лагранжа необходимо, чтобы функция имела непрерывные производные на отрезке [a, b].
Или смените отрезок интерполирования или саму функцию.
0
sanchoflat
4 / 6 / 3
Регистрация: 05.11.2011
Сообщений: 97
10.04.2013, 12:16  [ТС] #3
хм, саму функцию и отрезок не я выбирал, такое задание. По хорошему они должны отличаться совсем ненамного , чтобы построить график погрешности по нормальному, но при значении 2, к примеру, func(2) = 6, lag(2) = 8. Хоть многочлен 2 степени, но врятли такая погрешность.

Добавлено через 15 часов 17 минут
В общем разобрался в чем проблема, однако возникает вопрос.
Беру матрицу 11х11 - многочлен 10 степени.
Вывожу значения func(x) и lag(x) - и выходит, что значения абсолютно одинаковые ( нету погрешности ). И как с этим быть?
Потому что надо строить график погрешностей, а её и нету
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2013, 12:16
Привет! Вот еще темы с решениями:

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

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

Интерполяция полиномом Лагранжа
Добрый день Я все пытаюсь разобраться с полиномом Лагранжа и столкнулся с...

Метод множителей Лагранжа
Всем привет. Можете помочь составить программу на методы множителей Лагранжа....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru