Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sanchoflat
4 / 6 / 1
Регистрация: 05.11.2011
Сообщений: 97
#1

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

09.04.2013, 19:07. Просмотров 953. Ответов 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++):

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

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

Приближение функций сплайнами - C++
Разработка программы приближения функций с возможностью работы с файлами (запись и считывания функций) и результатов решения. Очень нужна...

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

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

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

2
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
09.04.2013, 20:48 #2
Если не ошибаюсь для применения интерполяционного многочлена Лагранжа необходимо, чтобы функция имела непрерывные производные на отрезке [a, b].
Или смените отрезок интерполирования или саму функцию.
0
sanchoflat
4 / 6 / 1
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Приближение функции многочленом с точностью до o(x^5) - Математический анализ
Приблизить функцию y =1/7arctg (2/5х) многочленом с точностью до o(x5) при x → 0

Найти приближение функции, заданной в точках, многочленом, значения которого совпадают со значениями функции - Maple
1. Нужно чтобы на графике этой функции plot(5*x^2+2*x-4). На оси х были корни через которые проходит парабола. 2. Лабораторная работа...

Интерполяция функции двух переменных многочленом Лагранжа - MathCAD
Задача интерполяции функции двух переменных. Теория взята отсюда Расчет полинома на рис.3 В заданных точках решение верное (рис.4...


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

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

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