Elettracompany.com

Компьютерный справочник
102 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Интерполяционный многочлен ньютона matlab

Интерполирование функции при помощи математической системы MatLab , страница 2

В соответствии с постановкой задачи узлы интерполирования функции полиномом Ньютона выбираются двумя способами. В первом случае выбор ведется равномерно с шагом h = 2/n, и каждый узел вычисляется по формуле xi = -1 + hi, i = 0,…,n. Во втором случае для выбора узлов используется метод Чебышева, и узлы вычисляются по формуле , i = 0,…,n.

Интерполяционный полином Ньютона строится на основе уравнений связи между значениями функции и построенными соответствующими разделенными разностями:

Вычисление разделенных разностей выполняется табличным методом по формуле

.

Таким образом получается таблица (реализуемая как матрица) размера (n+1)x(n+1). Для построения полинома Ньютона используется первая строка полученной матрицы.

Структура данных и программы

Программа состоит из следующих модулей:

  1. Splin.dat – Файл данных, содержащий крайние и узловые точки заданной кусочно-линейной функции. Первая строка представляет собой набор аргументов, а вторая – соответствующий набор значений функции.
  2. Hx.m – Функция равномерного разбиения отрезка Hx(a,b,n), принимающая на входе концы отрезка a и b и порядок интерполирования n, и дающая на выходе вектор узлов интерполирования, состоящий из n+1 точки.
  3. Chx.m – Функция разбиения отрезка [-1, 1] по Чебышеву Chx(n), принимающая на входе порядок интерполирования n и дающая на выходе вектор узлов интерполирования, состоящий из n+1 точки.
  4. Pspline.m – Функция интерполирования сплайна Pspline(Sp,t), принимающая на входе матрицу точек Sp кусочно-линейной функции, загружаемую предварительно из файла данных Splin.dat, и набор узлов t, полученных при помощи функции Hx или Chx. На выходе мы получаем вектор значений функции в данных узлах.
  5. RRasn.m – Функция вычисления разделенных разностей RRasn(n,f,x), принимающая на входе порядок интерполирования n, вектор f значений функции в узлах, полученный при помощи функции Pspline, и вектор узлов x, полученный при помощи функции Hx или Chx. На выходе мы получаем матрицу разделенных разностей размера (n+1)x(n+1).
  6. Newton.m – Функция построения полинома Ньютона Newton(n,f,t,x), принимающая на входе порядок интерполирования n, вектор f значений функции в узлах, полученный при помощи функции Pspline, вектор узлов t, полученный при помощи функции Hx или Chx, и узел x. Вычисление разделенных разностей ведется при помощи функции RRasn. На выходе мы получаем значение полинома Ньютона в заданном узле x.
  7. GrSp.m – Скрипт построения графика заданной кусочно-линейной функции, использующий файл данных Splin.dat и функцию Pspline.
  8. GrPogr.m – Функция GrPogr(n) построения графиков погрешностей интерполирования двух способов выбора узлов для заданного порядка интерполирования n.
  9. GrPogrR.m – Скрипт построения графиков погрешностей интерполирования трех различных порядков. Графики строятся в отдельном окне для каждого из двух способов выбора узлов.
  10. main.m – Скрипт основной программы, строящей по очереди графики функции и погрешностей при помощи скриптов GrSp, GrPogrR и функции GrPogr.
  • АлтГТУ 419
  • АлтГУ 113
  • АмПГУ 296
  • АГТУ 266
  • БИТТУ 794
  • БГТУ «Военмех» 1191
  • БГМУ 171
  • БГТУ 602
  • БГУ 153
  • БГУИР 391
  • БелГУТ 4908
  • БГЭУ 962
  • БНТУ 1070
  • БТЭУ ПК 689
  • БрГУ 179
  • ВНТУ 119
  • ВГУЭС 426
  • ВлГУ 645
  • ВМедА 611
  • ВолгГТУ 235
  • ВНУ им. Даля 166
  • ВЗФЭИ 245
  • ВятГСХА 101
  • ВятГГУ 139
  • ВятГУ 559
  • ГГДСК 171
  • ГомГМК 501
  • ГГМУ 1966
  • ГГТУ им. Сухого 4467
  • ГГУ им. Скорины 1590
  • ГМА им. Макарова 299
  • ДГПУ 159
  • ДальГАУ 279
  • ДВГГУ 134
  • ДВГМУ 408
  • ДВГТУ 936
  • ДВГУПС 305
  • ДВФУ 949
  • ДонГТУ 497
  • ДИТМ МНТУ 109
  • ИвГМА 488
  • ИГХТУ 130
  • ИжГТУ 143
  • КемГППК 171
  • КемГУ 507
  • КГМТУ 269
  • КировАТ 147
  • КГКСЭП 407
  • КГТА им. Дегтярева 174
  • КнАГТУ 2909
  • КрасГАУ 345
  • КрасГМУ 629
  • КГПУ им. Астафьева 133
  • КГТУ (СФУ) 567
  • КГТЭИ (СФУ) 112
  • КПК №2 177
  • КубГТУ 138
  • КубГУ 107
  • КузГПА 182
  • КузГТУ 789
  • МГТУ им. Носова 367
  • МГЭУ им. Сахарова 232
  • МГЭК 249
  • МГПУ 165
  • МАИ 144
  • МАДИ 151
  • МГИУ 1179
  • МГОУ 121
  • МГСУ 330
  • МГУ 273
  • МГУКИ 101
  • МГУПИ 225
  • МГУПС (МИИТ) 636
  • МГУТУ 122
  • МТУСИ 179
  • ХАИ 656
  • ТПУ 454
  • НИУ МЭИ 640
  • НМСУ «Горный» 1701
  • ХПИ 1534
  • НТУУ «КПИ» 212
  • НУК им. Макарова 542
  • НВ 778
  • НГАВТ 362
  • НГАУ 411
  • НГАСУ 817
  • НГМУ 665
  • НГПУ 214
  • НГТУ 4610
  • НГУ 1992
  • НГУЭУ 499
  • НИИ 201
  • ОмГТУ 301
  • ОмГУПС 230
  • СПбПК №4 115
  • ПГУПС 2489
  • ПГПУ им. Короленко 296
  • ПНТУ им. Кондратюка 119
  • РАНХиГС 186
  • РОАТ МИИТ 608
  • РТА 243
  • РГГМУ 117
  • РГПУ им. Герцена 123
  • РГППУ 142
  • РГСУ 162
  • «МАТИ» — РГТУ 121
  • РГУНиГ 260
  • РЭУ им. Плеханова 122
  • РГАТУ им. Соловьёва 219
  • РязГМУ 125
  • РГРТУ 666
  • СамГТУ 130
  • СПбГАСУ 315
  • ИНЖЭКОН 328
  • СПбГИПСР 136
  • СПбГЛТУ им. Кирова 227
  • СПбГМТУ 143
  • СПбГПМУ 146
  • СПбГПУ 1598
  • СПбГТИ (ТУ) 292
  • СПбГТУРП 235
  • СПбГУ 577
  • ГУАП 524
  • СПбГУНиПТ 291
  • СПбГУПТД 438
  • СПбГУСЭ 226
  • СПбГУТ 193
  • СПГУТД 151
  • СПбГУЭФ 145
  • СПбГЭТУ «ЛЭТИ» 379
  • ПИМаш 247
  • НИУ ИТМО 531
  • СГТУ им. Гагарина 113
  • СахГУ 278
  • СЗТУ 484
  • СибАГС 249
  • СибГАУ 462
  • СибГИУ 1654
  • СибГТУ 946
  • СГУПС 1473
  • СибГУТИ 2083
  • СибУПК 377
  • СФУ 2423
  • СНАУ 567
  • СумГУ 768
  • ТРТУ 149
  • ТОГУ 551
  • ТГЭУ 325
  • ТГУ (Томск) 276
  • ТГПУ 181
  • ТулГУ 553
  • УкрГАЖТ 234
  • УлГТУ 536
  • УИПКПРО 123
  • УрГПУ 195
  • УГТУ-УПИ 758
  • УГНТУ 570
  • УГТУ 134
  • ХГАЭП 138
  • ХГАФК 110
  • ХНАГХ 407
  • ХНУВД 512
  • ХНУ им. Каразина 305
  • ХНУРЭ 324
  • ХНЭУ 495
  • ЦПУ 157
  • ЧитГУ 220
  • ЮУрГУ 306
Читать еще:  Статическое электричество возникновение и способы защиты

Полный список ВУЗов

Чтобы распечатать файл, скачайте его (в формате Word).

Лекция 3. Численное дифференцирование

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

Методы численного дифференцирования широко используются на практике, когда численно необходимо решить одно или несколько дифференциальных уравнений. Методы численного дифференцирования привлекаются в тех случаях, когда необходимо найти ту или иную производную, поиск которой аналитически затруднен или просто невозможен, если функция задана таблично. В этих случаях исходную функцию у = Дх) заменяют, аппроксимируют более простой функцией ф(х) и считают, что приближенно верно равенство: у(х) = ф'(х). При построении аппроксимирующей функции могут быть использованы разнообразные методы, в том числе и те, которые представлены в предыдущей лекции 2.

Рассмотрим еще один способ аппроксимации, который нс рассмотрен в предыдущей лекции, — аппроксимация интерполяционным многочленом Ньютона.

Пусть функция у = Дх) определена таблично, т. е. задан набор пар (Xi,yi), ? ?? / (ХллУл) такой, что у, = Дх,), i = 1, . п. Определим так называемые разделенные разности функции у = Дх):

и т. д. В (3.1) определены разделенные разности первого, второго и 3-го порядков.

Пусть Р(х) — многочлен степени п -1, изучим его разделенные разности. Рассмотрим разность Р(х) — Р(Х]), она обращается в нуль при х =Х] и поэтому делится на X — Хц Таким образом, первая разделенная разность P(x,Xi) = = [Р(Х) — P(Xi)]/(x — хО многочлена степени п -1 является полиномом степени п -2. Аналогично вторая разделенная разность Р(х,Х]Д2) является полиномом степени Л — 3 и т. д. Этот процесс рассуждений можно продолжить вплоть до разделенной разности Р(х,Х], . Х„ _0, которая является полиномом нулевой степени, т. е. константой. Более высокие разделенные разности равны тождественно нулю.

Перепишем (3.1) применительно к полиному Р(х), выбрав в качестве первого аргумента X, тогда

и т. д. Подставляя выражения (3.2) друг в друга, получим формулу

по которой многочлен степени п -1 выражается через свои разделенные разности значений в узлах X], . Х„.

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

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

гдеш(х) =(х —xi). (x-x„), М„ = sup|/ (?,)| и супремум берется по интервалу между минимальным и максимальным значениями из набора Х,Хь . Х„.

Вводя обозначения, §= X — X,, i = 1. П, продифференцируем многочлен (3.4) несколько раз, тогда

Общая формула имеет вид:

Обрывая ряд на каком-либо члене получим приближенную формулу для вычисления той или иной производной. Наиболее простые и наиболее употребительные выражения получаются, когда ограничиваются первым членом:

Методом индукции можно также доказать следующую формулу для оценки разделенной разности П-го порядка:

Для оценки погрешности формулы дифференцирования (3.6) будем считать шаг сетки h (h = max ht, h, = хы(, i=l. n-l) достаточно малым.

Пусть мы используем узлы Хц . Х„, в этом случае погрешность Rk = / (х)-ф а| (х) близка к первому отброшенному члену ряда, он содержит разделенную разность f[X, . Xn,X„+i), которая согласно (3.7), (3.8) примерно равна/» (х)/п!. Итак, имеем

Сумма в (3.9) имеет С * слагаемых так, что верна следующая цепочка оценок

где использована формула Стирлинга п! = /2лПП п е «.

Согласно формуле (3.10) порядок точности формулы (3.6) по отношению к шагу сетки равен числу узлов интерполяции минус порядок производной. Минимальное число узлов интерполяции для аппроксимации k-ii производной с первым порядком точности находится из уравнения: П — k = 1, т. е. равно к + 1 или на единицу больше порядка производной.

Линейная интерполяция Matlab

Не будем вдаваться в математические определения и термины, перейдём сразу к сути:

Алгоритм интерполяции определяется способом вычисления приближенных значений между точными. Наиболее простым и очевидным вариантом является построение прямой между двумя узловыми точками. Этот метод называется методом линейной интерполяции.

В Matlab такой способ реализован с помощью команды
interp1(x,y, xi, ‘linear’) или просто interp1(x,y, xi), где xи y массивы из табличных данных (координаты точек), xi — массив промежуточных точек, координаты которых требуется найти.

Читать еще:  Как установить matlab

Интерполяционные полиномы

Есть разные интерполяционные полиномы — функции, определяющие как будут изменяться приближенные значения между узловыми точками:

Разберём для самого часто встречающегося полинома реализацию в Matlab. Вот пример использования:

Проинтерполировать функцию sin x на отрезке [1, 9] с шагом 2 и построим графики sin x и полученного интерполяционного полинома.

Для начала необходимо создать функцию, по которой Matlab будет считать. Создайте файл с именем «lagrange» и скопируйте в него:

function yy=lagrange(x,y,xx)% вычисление интерполяционного полинома в форме Лагранжа% x — массив координат узлов% y — массив значений интерполируемой функции% xx — массив значений аргумента, для которых надо вычислить значения полинома% yy — массив значений полинома в точках xx % узнаем число узлов интерполяции (N=n+1)N=length(x);% создаем нулевой массив значений интерполяционного полиномаyy=zeros(size(xx));% в цикле считаем сумму по узламfor k=1:N % вычисляем произведения, т.е. функции Psi_k t=ones(size(xx)); for j=[1:k-1, k+1:N] t=t.*(xx-x(j))/(x(k)-x(j)); end % накапливаем сумму yy = yy + y(k)*t;end

Теперь создайте ещё один файл и запишем в него само решение поставленной задачи:

% задание узлов интерполяцииx=1:2:9;y=sin(x);% задание точек, в которых требуется найти значения интерполяционного полиномаxx=linspace(1,9,1000);% нахождение значений интерполяционного полиномаyy=lagrange(x,y,xx);% построение графиковfigure(‘Color’,’w’)% вывод графика sin(x)fplot(@sin,[1 9])hold on% вывод графика полиномаplot(xx,yy,’r’)% вывод узлов интерполяцииplot(x,y,’bo’)% размещение легендыlegend(‘sinitx’,’‘,’узлы’,-1)

Ссылки на файлы — исходники сможете найти в конце статьи. Более подробную информацию о полиноме Лагранжа вы сможете найти на официальном сайте Matlab.

Интерполяция сплайнами

Ещё один часто встречающийся метод интерполяции. Происхождение термина “сплайны” связано с гибкой чертежной линейкой, которой пользовались для рисования гладких кривых, проходящих через заданные точки. Сплайн — это группа кубических многочленов, которые также называют кубическими сплайнами.

Вычисление сплайн интерполяции в Matlab осуществляется с помощью команды spline(x, y, xx), где х и у — массивы табличных данных, а хх — промежуточные значения по оси абцисс (Х). Вот небольшой пример:

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

Материал из MachineLearning.

Содержание

Постановка задачи

Пусть задана функция .
Пусть заданы точки из некоторой области .
Пусть значения функции известны только в этих точках.
Точки называют узлами интерполяции.
— шаг интерполяционной сетки.
Задача интерполяции состоит в поиске такой функции из заданного класса функций, что

Метод решения задачи

Полином Лагранжа

Представим интерполяционную функцию в виде полинома

где — полиномы степели n вида:

Очевидно, что принимает значение 1 в точке и 0 в остальных узлах интерполяции. Следовательно в точке исходный полином принимает значение
Таким образом, построенный полином является интерполяционным полиномом для функции на сетке .

Полином Ньютона

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

где — полиномы Лагранжа степени i ≤ n.
Пусть
. Этот полином имеет степень i и обращается в нуль при .
Поэтому он представим в виде:
, где — коэффициент при . Так как не входит в , то совпадает с коэффициентом при в полиноме . Таким образом из определения получаем:

Препишем формулу в виде

Рекуррентно выражая пролучам окончательную формулу для полинома:

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

Погрешность интерполирования

Поставим вопрос о том, насколько хорошо интерполяционный полином приближает функцию на отрезке [a,b].
Рассмотри м остаточный член:
, x ∈ [a, b].
По определению интерполяционного полинома R_n(x_i) = 0, x_i in bf X» alt= «
R_n(x_i) = 0, x_i in bf X» />
поэтому речь идет об оценке при значениях .
Пусть имеет непрерывную (n+1) производную на отрезке [a, b].
Тогда погрешность определяется формулой:
,
где ,
— точка из [a, b].
Так как точка наизвестна, то эта формула позволяет только оценить погрешность:

где
Из вида множетеля следует, что оценка имеет смысл только при . Если это не так, то при интерполяции используются полиномы низких степеней (n = 1,2).

Выбор узлов интерполяции

Так как от выбора узлов завист точность интерполяции, то возникает вопрос о том, как их выбирать. С помощью выбора узлов можно минимизировать значение в оценке погрешности. Эта задача решается с помощью многочлена Чебышева [1]:

В качестве узлов следут взять корни этого многочлена, то есть точки:

Пример

В качастве примера рассмотрим интерполяцию синуса. Возьмем равномерную решетку x = [-3,-1.5,0,1.5,3];
Интерполяция полиномом Лагранжа:

Ошибка(максимальное отклонение от sin(x) на отрезке):0.1423
Интерполяция полиномом Ньютона:
Ошибка:
Возьмем решетку x с узлами в корнях полинома Чебышева= [-2.8531,-1.7632,0,1.7634,2.8532];
Интерполяция полиномом Лагранжа:

Ошибка: 0.0944
Интерполяция полиномом Ньютона:
Ошибка:

Читать еще:  Matlab основные команды

Линейная интерполяция Matlab

Алгоритм интерполяции определяется способом вычисления приближенных значений между точными. Наиболее простым и очевидным вариантом является построение прямой между двумя узловыми точками. Этот метод называется методом линейной интерполяции.

В Matlab такой способ реализован с помощью команды

interp1(x,y, xi, ‘linear’) или просто interp1(x,y, xi), где x и y массивы из табличных данных (координаты точек), xi — массив промежуточных точек, координаты которых требуется найти.

Интерполяционные полиномы

Есть разные интерполяционные полиномы — функции, определяющие как будут изменяться приближенные значения между узловыми точками:

Для начала необходимо создать функцию, по которой Matlab будет считать. Создайте файл с именем «lagrange» и запишем в него:

% вычисление интерполяционного полинома в форме Лагранжа

% x — массив координат узлов

% y — массив значений интерполируемой функции

% xx — массив значений аргумента, для которых надо вычислить значения полинома

% yy — массив значений полинома в точках xx

% узнаем число узлов интерполяции (N=n+1)

% создаем нулевой массив значений интерполяционного полинома

% в цикле считаем сумму по узлам

% вычисляем произведения, т.е. функции Psi_k

Теперь создайте ещё один файл и запишем в него само решение поставленной задачи:

% задание узлов интерполяции

% задание точек, в которых требуется найти значения интерполяционного полинома

% нахождение значений интерполяционного полинома

% вывод графика sin(x)

% вывод графика полинома

% вывод узлов интерполяции

Интерполяция сплайнами

Сплайн — это группа кубических многочленов, которые также называют кубическими сплайнами.

Вычисление сплайн интерполяции в Matlab осуществляется с помощью команды spline(x, y, xx), где х и у — массивы табличных данных, а хх — промежуточные значения по оси абцисс (Х).

Вот небольшой пример:

Построить интерполяцию сплайнами функции Рунге.

% Введём функцию Рунге

% Вычислим таблицу значений

x = linspace(-1, 1, 10);

xx = linspace(-1, 1, 100);

yy = spline(x, y, xx);

plot(x, y,’LineWidth’, 2);

% Красным на графике — аппроксимация, жирным — исходная функция

Большинство задач в Matlab реализуются с помощью этой команды. yi = interp1 (x,y,xi, metod), где х – массив абсцисс экспериментальных точек, у – массив ординат экспериментальных точек, xi — точки, в которых необходимо вычислить значения с помощью сплайна, metod – определяет метод построения сплайна. Этот параметр может принимать следующие значения:

‘nearest’ – интерполяция по соседним точкам – этот метод построения кусочной функции, при котором значение в любой точке равно значению в ближайшей узловой точке – интерполяция полиномами 0-ой степени;

‘linear’ – линейная сплайн-интерполяция — интерполяция полиномами 1-ой степени (применяется по умолчанию, если способ интерполирования не задан);

‘cubic’ – интерполяция кубическим полиномом;

‘spline’ – интерполяция кубическим сплайном;

‘pchip’ — интерполяция кубическим эрмитовым сплайном.

Интерполяция на неравномерной сетке

Для интерполяции на неравномерной сетке используется функция griddata:

ZI = griddata(x.y.z.XI.YI) – преобразует поверхность вида z = f(x. у), которая определяется векторами (x.y.z) с (обычно) неравномерно распределенными элементами. Функция griddata аппроксимирует эту поверхность в точках, определенных векторами (XI.YI) в виде значений ZI. Поверхность всегда проходит через заданные точки. XI и YI обычно формируют однородную сетку (созданную с помощью функции meshgrid).

XI может быть вектором-строкой, в этом случае он определяет матрицу с постоянными столбцами. Точно так же YI может быть вектором-столбцом, тогда он определяет матрицу с постоянными строками.

[XI.YI.ZI] = griddata(x,y,z,xi,yi) – возвращает аппроксимирующую матрицу ZI, как описано выше, а также возвращает матрицы XI и YI, сформированные из вектора-столбца xi и вектора-строки yi. Последние аналогичны матрицам, возвращаемым функцией meshgrid;

[…] = griddata (….method) – использует определенный метод интерполяции:

‘nearest’ – ступенчатая интерполяция;

‘linear’ – линейная интерполяция (принята по умолчанию);

‘cubic’ – кубическая интерполяция;

‘ v4 ‘ – метод, используемый в МATLAB 4.

Метод определяет тип аппроксимирующей поверхности. Метод ‘cubic’ формирует гладкие поверхности, в то время как ‘linear’ и ‘nearest’ имеют разрывы первых и нулевых производных соответственно. Все методы, за исключением v4, основаны на триангуляции Делоне. Метод ‘ v4 ‘ включен для обеспечения совместимости с версией 4 системы MATLAB. Пример:

>> mesh(X.Y.Z),hold on;plot3(x.y,z, ‘ok’)

Функции griddataS и griddatan работают аналогично griddata, но для для трехмерного и n-мерного случая – с использованием алгоритма qhul 1. Используются, в частности, при трехмерной и n-мерной триангуляции.

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector