
laba 333
.docxЛабораторнаяработа№3
Интерполяцияфункций.ИнтерполяционныеполиномыЛагранжа,Ньютона.
есть
прибор, который в дискретные моменты
времени выдает сигнал по
законуДопустим,наблюдательзарегистрировалпятьотсчетовв
моментывремени
.Задачейнаблюдателя(которыйнезнаетзаконавыдачисигнала)яsвляетсяполучениеприближенногозначенияфункции
на отрезке [0,1]влюбоймомент
времени.
Используялинейнуюинтерполяцию,найдитезначенияфункциивточках: исравните с реальным значением синуса в этих точках. Постройте графики синуса и ломаной,проходящей через пять заданных точек. Отметьте, насколько сильно они различаются в разныхчастях графика. Чем это обусловлено?(чем больше число, тем больше ошибка приближения приинтерполяции. вначаленебольшоеотклонение,потомучтосинуснесильноменяется,апри1сильно)
functiony=interpol(X,Y,x)fori=1:length(X-1) if (x>=X(i) && x<=X(i+1))k=(Y(i+1)-Y(i))/(X(i+1)-X(i)); y=Y(i)+k*(x-X(i)); return;end;end;end |
f=@(t)sin(pi*t);i=0:4;Ti=i./4;Fi=f(Ti); intf=@(x)(interpol(Ti,Fi,x));X=[01/61/31/2]; Y=zeros(size(X));YR=zeros(size(X));fori=1:length(X) Y(i)=intf(X(i)); YR(i)=f(X(i)); end [X;Y;YR;abs(Y-YR)] holdon;gridon;fplot(f,[01]); fplot(intf,[01],'r'); plot(Ti,Fi,'*'); |
%Научастках,гдепроизводнаяменяетсямедленно(втораяпроизводнаямала) %отклонениеневелико,наиных-значительно.Обусловленонелинейностью %функции |
|
Постройте по заданнымпятиточкаминтерполяционныймногочленЛагранжаили Ньютонаи,
используя его, найдите значения функции
в точках
.
Сравните результаты созначениями,
полученными при линейной интерполяции,
и значениями синуса в этих точках.Постройте
графики синуса и интерполяционного
многочлена. Какую максимальную ошибку
мыдопускаем
при аппроксимации синуса данным
полиномом? Сравните
экспериментальнуюпогрешностьстеоретической.(болееточное
приближение)
(максошибка руками)Rn(t)=f^(n+1)(c)(t-x0)(t-x1)...(t-xn)/(n+1)!
гдеf^(n+1)(c)-n+1производнаяфункции f(t)в некоторойточкеcна интервале[x0,xn],n-порядокинтерполяционногополинома,t-точка,в которой оцениваетсяошибка,x0,x1,...,xn-узлы интерполяции.
functiony=interpol2(X,Y,x)
A=repmat(X.',1,length(X)).^repmat([0:length(X)-1],length(X),1);M=A\Y.';
y=(repmat(x',1,length(X)).^repmat([0:length(X)-1],length(x),1))*M;end
f=@(t)sin(pi*t);i=0:4;
Ti=i./4;Fi=f(Ti);X=[0:0.05:1];
Y=interpol2(Ti,Fi,X);hold on; grid on;plot(X,Y,'r');
fplot(f,[01]);
plot(Ti,Fi,'*');
%Расчёттеоретическойошибкиsymsx
[ksidksi]=fminbnd(matlabFunction(-diff(f(x),length(Ti))),0,1);E_T=-dksi/factorial(length(Ti))*myinterpL(Ti,Fi,x);
functiony=myinterp(X,Y,x)if(length(X)~=length(Y))
error'lengthofXandYmustbeequal'end
if(~issorted(X))
error'Xmustbesorted'end
fori=1:length(X-1)
if(x>=X(i) && x<=X(i+1))k=(Y(i+1)-Y(i))/(X(i+1)-X(i));
y=Y(i)+k*(x-X(i));return;
end
end
error'xnotinX'
end
ошибка
Найдитезначениеинтерполяционногополиномапри . Почему оно так сильно отличаетсяотзначениясинусав этойточке?(из-заотклонения,котороеобусловленонелинейностью)
ошибкиокругления:Привыполнениичисленныхвычислениймогутвозникатьошибки
округления, особенно при больших значениях функции, что может приводить к отличиям междузначением интерполяционногополиномаиточнымзначением функции.
Особенности функции: Некоторые функции, такие как синус, могут иметь сложное поведение,такое как быстрые колебания или особенности, которые могут приводить к большим отличияммеждузначениямиинтерполяционногополиномаиточногозначенияфункции.
Задайтефункцию наотрезке[-1,1]вдесятиравноотстоящихточках.Сравнитезначения
функции и интерполяционного полинома
при x=0.95. Постройте графики функции
иполинома на
заданном отрезке и объясните поведение
интерполяционного полинома. Посмотрите,что
будет происходить при постепенном
увеличении числа узлов интерполяции и
подумайте, какможноизбавитьсяотполучившегося
эффекта (рунге).
Графикфункцииf(x)наэтомотрезкебудетиметьформу"воротниковидной"кривой,смаксимальнымзначениемвцентреотрезкаx=0и уменьшающимсязначенияминакраяхотрезка:
Однако,интерполяционныйполиномможетиметьнежелательныеосцилляцииили"волнения"околоузлов интерполяции, особенно на краях интерполяционного интервала. Это явление также известнокак "эффект Рунге". При использовании полиномов более высокого порядка, таких как кубическиесплайны,эффектРунге можетбыть снижен, и аппроксимацияможетбытьболееточной.
При постепенномувеличениичисла узловинтерполяции,аппроксимация синуса интерполяционнымполиномом будет становиться более точной на интервале интерполяции. Это связано с тем, что сувеличениемчислаузловполиномбудетболее"гибким"исможетлучшеаппроксимироватьсложнуюформусинусоиды.
Один из способов избежать эффекта Рунге - это использовать не равномерную сетку узловинтерполяции.Например,можноиспользоватьузлыЧебышева,которыерасполагаютсяболееплотнона краях интерполяционного интервала и более разрежено в его центре. Это может помочь снизитьосцилляциииулучшитьточность аппроксимации на всеминтервале.
gridon;
plot([min(x)max(x)],[00],'-k');max(abs(subs(f,xi)-yi))xlabel('x');
ylabel('y');ezplot('1/(1+25*x^2)',[-22]);axisequal
Шаг 0.2ans=
1.9156
Шаг 0.1ans=
58.5855
Шаг0.05
ans=
1.0437e+005
Дляоднойполовинысшагом0.1