С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/64: Рейтинг темы: голосов - 64, средняя оценка - 4.95
28 / 28 / 0
Регистрация: 27.03.2011
Сообщений: 156
1

Численная интерполяция полиномом Лагранжа

13.12.2012, 12:52. Показов 12849. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот получил задание, на выполнение интерполяции. Помогите.
Задание

X: 1 2 3 5 6
Y: 2 4 6 10 12
Найти значения Y в точке X=4.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2012, 12:52
Ответы с готовыми решениями:

Интерполяция полиномом Лагранжа
Написал программу для интерполяции функции полиномом Лагранжа. Получается неправильно. Помогите...

Интерполяция полиномом Ньютона
Написал программу для интерполяции полиномом Ньютона, но она хорошо работает только для степенных...

Оценить интерполяционным полиномом Лагранжа
x=; y=; xi=; yi=interp1(x,y,xi,'nearest','extrap') кубическим сплайном помогите, пожалуйста,...

Аппроксимация полиномом Лагранжа таблично заданной функции. 1 вход 1 выход
ПОмогите написать, плиз Матлаб.аппроксимация полиномом Лагранжа таблично заданной функции.1 вход 1...

11
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
13.12.2012, 17:28 2
Держи, причесал чуток, вроде работает))
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
clear,clc
 
% значения данных
x = [1 2 3 5 6]; 
y = [2 4 6 10 12];
% искомая точка 
xt = 4;
 
n = length(x);
yt = 0;
for j=1:n
    z=1;
    for i=1:n
        if ((i < j)||(i > j))
            z=z*(xt-x(i))/(x(j)-x(i));
        end;
    end;
    yt = yt+z*y(j);
end;
disp(['Значению x = ',num2str(xt),' соответствует значение y = ', num2str(yt)])
plot(x,y,'ob',xt,yt,'*r')
legend('Теоретические значения','Интерполяция');
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 253
14.06.2013, 09:32 3
Подскажите пожалуста код в матлабе для определение значение функции на 2 участках интерполяции с помощью полинома лагранжа. Вот как задавать два участка не знаю. И набора значении нету лиш количество n.
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
14.06.2013, 23:25 4
Что значит "два участка"?
0
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 253
15.06.2013, 00:19 5
Имеется ввиду два интервала. Например [0;2] [6;7]. Как задать границы в маткаде если использовать типовые функции например: polyval interpol1 кажется так пишется последняя функция хотя примеров с нею я не встречал. И не понимаю в чем смысл моего задания чтобы вычислить значение функции на 5 точках в этих двох интервалов. Если f=х, то это вообще просто и вручную делается. Ну второй вариант что соs^3 то это сложнее. Но я не понимаю смысла и не вижу примеров как по функции это вычислить. Может надо выбрать 5 х-ов потом вычислить 5 f соответсвенно и на основе таблицы функция интерполяции нарисуется а потом уже подставлять х чтобы найти саму функцию если она отличается от исходной.
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
15.06.2013, 13:10 6
да, ты правильно рассуждаешь: нужно взять пять значений X из указанных диапазонов, посичтать для них функции и по этим данным делать интерполяцию:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
x = [0:0.5:2, 6:0.5:7]; 
y1 = x;
y2 = cos(x).^3;
 
xi = 0:0.1:7; % новые значения x
yi1 = interp1(x, y1, xi);
yi2 = interp1(x, y2, xi);
 
plot(x,y1,'ob', xi,yi1,':r')
legend('данные','интерполяция')
 
figure
plot(x,y2,'ob', xi,yi2,':r')
legend('данные','интерполяция')
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 253
15.06.2013, 16:50 7
В принципе мне сперва надо вычислить значение функции на двох интервалах интерполяции. То есть Я так понимаю чтобы это знать саму интерполяционную функцию не надо использовать. Хотя есть дополнительное задание чтобы найти значение в одной точке между двома. Кроме того это две разние функции в аналогичных но разных заданиях. И в первой функции надо использовать вторую формулу Ньютона, а для кубического косинуса- интерполяцию лагранжа. То есть Я так понимаю что interp1 здесь не применить.
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 253
17.06.2013, 05:17 8
Хорошо. А если находить значение интерполяции между узлами. И как применить именно интерполяции методом лагранжа в матлабе.
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
17.06.2013, 08:57 9
Вот пример:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
clear,clc
 
% значения данных
x = [0:0.2:2, 6:0.2:7];
y = cos(x).^3;
% искомая точка 
xt = 4;
 
n = length(x);
yt = 0;
for j=1:n
    z=ones(size(xt));
    for i=1:n
        if i~=j
            z = z.*(xt-x(i))/(x(j)-x(i));
        end
    end;
    yt = yt+z*y(j);
end
fprintf('Значению x = %2.4f соответствует значение y = %2.4f \n', xt',yt')
t = 0:0.01:7;
f = cos(t).^3;
plot(x,y,'ob',t,f,':b',xt,yt,'*r')
legend('Теоретические значения','','Интерполяция');
можешь вместо числа в xt прописать вектор значений: xt = 0:0.1:7 и увидишь график интерполянты
0
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 253
22.06.2013, 10:17 10
Спасибо за код. Но он работает для интервалоов, что не соприкасаются.
В моем случае там интервалы на самом деле [0;2][2;4]. И ответ выходит что-то вроде NaN.
Потому был бы благодарен если бы кто то доделал этот код.
В моем случае задание стоит найти значение функции в 5 узлах. Это как делать.
Для каждой отдельности. Или формировать масив xt. Буду очень благодарен за решение.
0
5243 / 3571 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
25.06.2013, 09:17 11
Цитата Сообщение от maxii Посмотреть сообщение
В моем случае там интервалы на самом деле [0;2][2;4]. И ответ выходит что-то вроде NaN.
...
В моем случае задание стоит найти значение функции в 5 узлах.
Когда же ты наконец выложишь нормальное четкое свое задание??? Почему нельзя было сразу выложить его, а не плясать вокруг да около!...

*надо формировать маcсив xt
**задаем шаг h=0.1, например, тогда
x = [0:h:2-h, 2+h:h:4];
Или не заморачиваясь на особые точки:
Matlab M
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
clear,clc
 
% значения данных
x = 0:0.25:4;
y = 1./(x-2);
% искомая точка
xt = 0:0.01:4;
% удаляем особые точки
x(isnan(y)|isinf(y)) = [];
y(isnan(y)|isinf(y)) = [];
n = length(x);
 
yt = 0;
for j=1:n
    z=ones(size(xt));
    for i=1:n
        if i~=j
            z = z.*(xt-x(i))/(x(j)-x(i));
        end
    end;
    yt = yt + z*y(j);
end
t = 0:0.01:4;
f = 1./(t-2);
plot(x,y,'ob',xt,yt,'.:r',t,f,':b')
ylim([-5 5])
legend('Теоретические значения','Интерполяция');
Но тут надо учитывать особенность многочлена Лагранжа - если у нас была особая точка - резкий скачек, то на краях интерполяция "улетает":

Численная интерполяция полиномом Лагранжа


Поэтому, по хорошему нужно дважды интерполировать на диапазонах x1 = [0, 2-h] и x2 = [2+h, 4], соответственно будут xt1, yt1 и xt2, yt2.
0
0 / 0 / 0
Регистрация: 20.10.2016
Сообщений: 3
18.05.2017, 01:19 12
Зосима, а сможете сделать нечто похожее на vba?
0
18.05.2017, 01:19
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2017, 01:19
Помогаю со студенческими работами здесь

Интерполяция многочленом Лагранжа
подскажите, есть ли стандартная реализация функции интерполирования методом Лагранжа, как,...

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

Интерполяция методом лагранжа. Поправьте
Друзья, прошу вашей помощи. Интерполяция функциональных зависимостей методом Лагранжа function ...

Интерполяция функции по формулам Лагранжа
Имеется код Полинома Лагранжа. Что необходимо поправить чтоб можно было вводить X и Y массивы. и...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru