Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/96: Рейтинг темы: голосов - 96, средняя оценка - 4.63
..:::BesT:::..
 Аватар для Best-pm07
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195

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

07.10.2009, 16:24. Показов 18413. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
У меня такая просьба, можно ли упростить данную программу?
Т. е. сделать меньше строк в программе, убрать ненужные действия и так чтобы она не была похожа по написанию на эту

(Вычислить значение функции при заданных значениях аргумента, используя интерполяционную формулу Ньютона для неравноудаленных узлов)

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
#include <iostream.h>
 
/*** Разделённые разности ***/
double divided_differences(const double* x, const double* y, const int xstart, const int xend)
{
    double dn = x[xend] - x[xstart];
    if (dn == 0) return 0;
    if(xend - xstart == 1)
    {
        return (y[xend] - y[xstart]) / dn;
    } else if(xend - xstart > 1) {
        return (divided_differences(x, y, xstart + 1, xend) - divided_differences(x, y, xstart, xend - 1)) / dn;
    } else {
        return 0;
    }
}
 
/*** Многочлен Ньютона ***/
double newtone_polynomial(const double* x, const double* y, const double xk, const int degree)
{
    if (degree < 1) return 0;
    int i, k; double P = 0;
    for(i = 1; i <= degree; i++)
    {
        double t = 1;
        for (k = 0; k < i; k++) t *= xk - x[k];
        P += divided_differences(x, y, 0, i) * t;
    }
    return y[0] + P;
}
 
int main(int argc, char* argv[])
{
    cout << "Введите количество узлов: "; int n; cin >> n; int i;
    double* y = new double[n]; double* x = new double[n];
    cout << "Введите " << n << " узлов интерполяции\n";
    for(i = 0; i < n; i++) cin >> x[i];
    cout << "Введите " << n << " значений функции\n";
    for(i = 0; i < n; i++) cin >> y[i];
 
    cout << "\nВведите x: "; double xr; cin >> xr;
 
    cout << newtone_polynomial(x, y, xr, n - 1) << endl;
    delete []x; delete []y;
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2009, 16:24
Ответы с готовыми решениями:

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

Обратная интерполяция Лагранжа
Помогите пожалуйста нужно найти все значения х по заданному у=1.5 float x = {1,2,3,4,5}; float y = {1.35,-4,0.97,-2,7.2};

Интерполяция полиномом Лагранжа
Функция у = f(x) задана в табличной форме: x=0; y=1.763; x=0.2; y=1.917; x=0.4; y=2.143; а) cоставить алгоритм и программу...

4
07.10.2009, 16:32

Не по теме:

если нужно избавиться от количества строчек, то можно все в одну строчку загнать. Компилятору все равно.

0
..:::BesT:::..
 Аватар для Best-pm07
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
07.10.2009, 21:51  [ТС]
это проходили уже
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.10.2009, 22:23
Best-pm07, а какой смысл?
0
..:::BesT:::..
 Аватар для Best-pm07
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
07.10.2009, 23:05  [ТС]
чтобы прога не была похожей, идея осталась, но функции по другому сделать, например
C++
1
int main(int argc, char* argv[])
можно заменить

C++
1
void main (){}
и вообще может легче/короче можно сделать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2009, 23:05
Помогаю со студенческими работами здесь

Интерполяция методом Лагранжа
Не могу исправить ошибку в программе вычисляющей интерполяцию методом Лагранжа ошибка в 25,26 строках #include &lt;iostream&gt; ...

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

Интерполяция методом Ньютона и Лагранжа
Задано табличное представление функции: x y 3 4 7 10 11 22 15 26 19 23 Сравнить методы интерполяции Лагранжа и Ньютона...

Оцените программу: Интерполяция через полином Лагранжа и через сокращённую формулу Ньютона
Выкладываю программу интерполяции: -интерполирование через полином Лагранжа; -интерполирование через сокращённую формулу Ньютона. ...

Интерполяция заданной функции второй формулой Ньютона (обратная интерполяция)
Программа накапливает ошибку, да и первые значения совсем уже &quot;приближённые&quot;. Явно что-то упустил. Посмотрите со стороны. #include...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru