Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
3 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 276

Полином Лагранжа и Чебышева

29.10.2019, 20:58. Показов 2892. Ответов 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include "iostream" 
#include "math.h" 
 
using namespace std;
 
 
float fun(float x)
{
    float F = exp(abs(x)) - x;
    return F;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    float h, epsR, epsC;
        int n;
    cout << "Количество точек: "; cin >> n;
    h = 2 / (n - 1);                                                                           //шаг 
 
 
    float **ravn = new float*[n];
    for (int i = 0; i < n; i++) ravn[i] = new float[3];
    float **cheb = new float*[n];
    for (int i = 0; i < n; i++) cheb[i] = new float[3];
 
    for (int i = 0; i<n; i++)                                                              //вычисление Х
    {
        ravn[i][0] = -1 + i*h;
        ravn[i][1] = fun(ravn[i][0]);
        cheb[i][0] = cos((2 * i + 1)*3.141598 / 2 / n);
        cheb[i][1] = fun(cheb[i][0]);
    }
 
    for (int i = 0; i<n; i++)                                                                   //вычисление y/лямбду (3 столбец)
    {
        float P = 1;
        for (int j = 0; j<n; j++) { if (i != j) { P *= (ravn[i][0] - ravn[j][0]); } }
        ravn[i][2] = ravn[i][1] / P;
        P = 1;
        for (int j = 0; j<n; j++) { if (i != j) { P *= (cheb[i][0] - cheb[j][0]); } }
        cheb[i][2] = cheb[i][1] / P;
    }
 
    cout << "\n\n P1(x) = ";                                                             //вывод полиномов
    for (int i = 0; i<n; i++)
    {
        if (ravn[i][2] > 0) cout << "+";
        cout << ravn[i][2] << "*";
        for (int j = 0; j<n; j++) { if (i != j) { cout << "(x-" << ravn[j][0] << ")"; } }
    }
    cout << "\n\n\n P2(x) = ";
    for (int i = 0; i<n; i++)
    {
        cout << cheb[i][2] << "*";
        for (int j = 0; j<n; j++) { if (i != j) { cout << "(x-" << cheb[j][0] << ")"; } }
    }
 
    for (float i = -1; i<1.1; i += 0.1)                                                                   //погрешность
    {
        float P = 0, C = 0, Q;
        for (int j = 0; j<n; j++)
        {
            Q = 1;
            for (int k = 0; k<n; k++) { if (k != j) { Q *= (i - ravn[j][0]); } }
            P += ravn[j][2] * Q;
            Q = 1;
            for (int k = 0; k<n; k++) { if (k != j) { Q *= (i - cheb[j][0]); } }
            C += cheb[j][2] * Q;
        }
        if (i == -1)
        {
            epsR = abs(fun(i) - P);
            epsC = abs(fun(i) - C);
        }
        else
        {
            if (epsR<abs(fun(i) - P)) epsR = abs(fun(i) - P);
            if (epsC<abs(fun(i) - C)) epsC = abs(fun(i) - C);
        }
    }
    cout << "\n\nПогрешность на равномерной сетке: " << epsR;
    cout << "\nПогрешность на Чебышевской сетке: " << epsC;
 
    system("pause");
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.10.2019, 20:58
Ответы с готовыми решениями:

Полином Чебышева
Как найти полином чебышева? Есть программа в Mathcad, нужно перенести в C++.

Посчитать полином Чебышева используя ограниченную память
Подскажите, пожалуйста, как рекурсивно посчитать полином Чебышева используя ограниченную память? Вот сам полином: {T}_{0}(x)=1;...

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

2
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
29.10.2019, 21:41
Цитата Сообщение от plktre Посмотреть сообщение
Неправильно выводит погрешность
Цитата Сообщение от plktre Посмотреть сообщение
if (i == -1)
* * * * {
* * * * * * epsR = abs(fun(i) - P);
* * * * * * epsC = abs(fun(i) - C);
* * * * }
* * * * else
* * * * {
* * * * * * if (epsR<abs(fun(i) - P)) epsR = abs(fun(i) - P);
* * * * * * if (epsC<abs(fun(i) - C)) epsC = abs(fun(i) - C);
* * * * }
Попробуй здесь использовать fabs вместо abs
0
3 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 276
30.10.2019, 09:59  [ТС]
К сожалению, не помогло
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2019, 09:59
Помогаю со студенческими работами здесь

Интерполяционный полином Лагранжа
Дана функция f(x) = xln(x) + 2xcos(x) a = 1; b = 2; Вычислить значение полинома Лагранжа. P.s. x(i) ∈ x(i) = a + i*h; ...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru