Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/103: Рейтинг темы: голосов - 103, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 26
1

Интерполяционный многочлен Ньютона и Лагранджа

21.03.2013, 09:39. Показов 18697. Ответов 8
Метки faq+ (Все метки)

Author24 — интернет-сервис помощи студентам
заданы параметры x[0,165 0,171, 0,177]
y=[2,00551 2,82558 2,65583]
c Matlab знакома пару дней, так что ничего не могу понять, если у кого то есть возможность помогите
нашла. что интерполяция считается функцией polyfit(x,y, 2) все сходится, решает верно
Но это не подходит, нужно для сдачи через функции и процедуры
помогите пожалуйста

Добавлено через 6 минут
Буду очень рада вашей помощи
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2013, 09:39
Ответы с готовыми решениями:

Интерполяционный многочлен Ньютона
Построить интерполяционный многочлен Ньютона, взяв произвольные три равноудаленные узловые точки...

Вычислить интерполяционный многочлен Ньютона.
в матлабе требуется вычислить интерполяционный многочлен Ньютона приближающей функции y=a*e^mx,где...

Интерполяционный многочлен Ньютона и Лагранжа
Дано точки: (0,12);(3, 5);(6, 10);(8, 7);(11, 6) Сделать интерполяционный многочлен Лагранжа. И...

Как построить интерполяционный многочлен Ньютона по НЕравноотстоящей сетке узлов
Как построить интерполяционный многочлен Ньютона по НЕравноотстоящей сетке узлов x=; y=;...

8
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
21.03.2013, 10:43 2
А кроме x, y что-то еще дано?
Смотри, с лагранжем дело обстоит так: берется некая левая точка x0 (одна), для нее по формулам считаются коэфф-ты многочлена и находится значение функции y0. При этом для другой точки, коэфф-ты будут другими
Вот файл-функция для интерполяции:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function [L_n P] = lagrange1(x,y,xx)
% x - массив координат узлов
% y - массив значений интерполируемой функции
% xx - массив значений точек интерполяции
L_n = zeros(size(xx));
for k=1:length(x)
    P = ones(length(x),length(xx));
    for i=1:length(x)
        if k~=i
            P(k,:) = P(k,:).*(xx-x(i))./(x(k)-x(i));
        end
    end
    L_n = L_n + y(k)*P(k,:);
end
end
И программа рассчетов:
Matlab M
1
2
3
4
5
6
7
8
9
10
clear, clc
 
x = [0.165 0.171, 0.177];
y = [2.00551 2.82558 2.65583];
xx = linspace(0.16,0.18,100); % массив точек х
x0 = 0.169; % некоторая точка
yy = lagrange1(x,y, xx);
[y0 P0] = lagrange1(x,y, x0) % функция в некоторой точке и полином
plot(x,y,'or',xx,yy,':r',x0,y0,'*b'), grid on
legend('Данные','Интерполяция','Точка', 'location', 'northwest')
Интерполяционный многочлен Ньютона и Лагранджа


Очень рекомендую почитать по этому вопросу (чтоб не ждать 60 секунд, нажми еще раз на ссылку):
http://matlab.exponenta.ru/spline/book1/10.php
и
http://matlab.exponenta.ru/spline/book1/14.php

Не по теме:

Цитата Сообщение от littlebit.s Посмотреть сообщение
Буду очень рада вашей помощи
ты мальчик или девочка? :)

1
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 26
21.03.2013, 17:29  [ТС] 3
Я девочка, просто аккаунт не мой)
А оно считает не правильно(((

Добавлено через 28 минут
нет,кроме х больше ничего не надо
а как сделать что бы оно выводило как многочлен x^2 +x+..
или если добавить несколько точек что бы возводило в куб
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
21.03.2013, 19:00 4
Чуточку подправил функцию:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function [L_n P0] = lagrange1(x,y,xx)
% x - массив координат узлов
% y - массив значений интерполируемой функции
% xx - массив значений точек интерполяции
L_n = zeros(size(xx));
for k=1:length(x)
    P = ones(size(xx));
    for i=1:length(x)
        if k~=i
            P = P.*(xx-x(i))./(x(k)-x(i));
        end
    end
    P0(k,:) = P;
    L_n = L_n + y(k)*P;
end
end
Программа рассчета:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
clear, clc
 
x = [0.165 0.171, 0.177];
y = [2.00551 2.82558 2.65583];
xx = linspace(0.16,0.18,100);
x0 = 0.169;
yy = lagrange1(x,y, xx);
[y0 P0] = lagrange1(x,y, x0)
plot(x,y,'or',xx,yy,':r',x0,y0,'*b'), grid on
legend('Данные','Интерполяция','Точка', 'location', 'northwest')
 
y*P0 % проверка
Уточню, что P0 в данном случае - функция Лагранжа, и y0 равно сумме произведений y на Р0! (вконце - это проверка)
Впринципе, так как точек немного, можно и "вручную" расписать
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear, clc
 
x = [0.165 0.171, 0.177];
y = [2.00551 2.82558 2.65583];
x0 = 0.169;
y0 = lagrange1(x,y,x0);
syms X
P1 = ((X-x(2))*(X-x(3)))/((x(1)-x(2))*(x(1)-x(3)));
P2 = ((X-x(1))*(X-x(3)))/((x(2)-x(1))*(x(2)-x(3)));
P3 = ((X-x(1))*(X-x(2)))/((x(3)-x(1))*(x(3)-x(2)));
Y = y(1)*P1 + y(2)*P2 + y(3)*P3;
 
pretty(collect(Y,X))
Yx = sym2poly(Y)
 
y0 
polyval(Yx,x0)
Добавлено через 3 минуты
Еще раз напомню, что если мы меняем искомую точку x0, то значения Pi будут другими!

Добавлено через 17 минут
Эх, задела за живое, за интерес!
Вот набросал программку, которая может считать ждя произвольного числа узлов, т.е. x, y могут быть произвольной длинны:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
clear, clc
% координаты узлов
x = [0.165 0.171, 0.177];
y = [2.00551 2.82558 2.65583];
% некая точка
x0 = 0.169;
y0 = lagrange1(x,y,x0);
syms X
for i = 1:length(x)
    u = x;
    u(i)=[]; % выкалываем i-й элемент
    P(i,1) = prod(X-u)/prod(x(i)-u); % рассчитываем i-й полином Лагранжа
end
Y = y*P % сумма произведений y на 
 
pretty(collect(Y,X)) % собираем Х
Yx = sym2poly(Y) % вытягиваем коэфф-ты многочлена
 
y0 % расчитанная ранее функция, для стравнения
polyval(Yx,x0) % подставляем значение х0 в полученный полином
1
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 26
21.03.2013, 19:54  [ТС] 5
Ахаха, спасибо тебе, никогда не работала с Матлабом((
А с Ньютоном тоже можно вручную?
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
21.03.2013, 20:03 6
С нютоном тоже можно вручную ты только теорию посмотри!!!
Но а если что будет неясно - пиши, глянем
Хотя ты должна понимать, что полином который мы получили никак не изменится, форма Ньютона - лишь вариант его представления! Смекаешь?
Т.е. тебе фактически нужно взять мою последнюю программку и в 16й строке вместо pretty(collect(...)) написать:
pretty(factor(Y))
1
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 26
21.03.2013, 20:07  [ТС] 7
??? Error using ==> mupadinit at 35
Unable to initialize kernel

Error in ==> mupadengine.mupadengine>mupadengine.evalin at 117
[res,status] = mupadmex(statement,8);
Если такая проблемка, что исправить нужно?


Как решать я знаю, уже решила. только проблема с синтаксисом в Матлабе, уже кучу источников перечитала(


Да, я поняла
спасибо
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
21.03.2013, 20:16 8
Ругается на ядро? Грусть-пичаль, значит у тебя матлаб урезанный, скорее всего Portable в нем нет тулбокса символьных вычислений.
0
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 37
14.12.2015, 00:25 9
Всем привет кто знаком выравниванием экспериментальных данных мне нужно построить график
p=polyfit(x,y,1)
p1=polyfit(x,y,1) этих 2-х функций с помощью Матлаба


x=[0 2 5 7 9]
y=[2 6 8 11 15]
p=polyfit(x,y,1)
p1=polyfit(x,y,1)

Буду рада вашей помощи
0
14.12.2015, 00:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2015, 00:25
Помогаю со студенческими работами здесь

Интерполяционный полином Ньютона
Кто может помочь???

Многочлен Ньютона
Кто-нибудь что-нибудь знает про первый и второй интерполяционный многочлен Ньютона? Я даже просто...

Построить интерполяционный полином в каноническом виде, а также полиномы Лагранжа и Ньютона
Суть состоит в том:По заданной таблице значений функции x -3 -1 1 y 9 -1 6 ...

Интерполяционный многочлен ньютона.
построить интерполяционныи многочлен ньютона степеней n=2,5 для интерполирования назад в точке...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru