Автор работы: Пользователь скрыл имя, 11 Февраля 2011 в 01:20, лабораторная работа
Задание:
Выполнить аппроксимацию функции, заданной таблично, кубическим сплайном, разработать блок-схему и программу, оценить погрешность аппроксимации. Результаты представить в таблице вычислений: промежуточные значения вычисления по выбранной или заданной формуле метода, конечные результаты, погрешность вычисленного результата и предоставить формулы, которые были применены для вычисления.
Національний технічний університет України «КПІ»
Факультет Інформатики та Обчислювальної техніки
Кафедра
Обчислювальної Техніки
Лабораторна робота №2-1
З курсу
Алгоритми та Чисельні
методи
Виконала:
Студентка 2-го курсу ФІОТ
Групи ІО-92
ГлуШко Ольга
З.к. №9204
Перевірив:
Флеров
А.І.
Київ 2011
Вариант №4
Задание:
Выполнить
аппроксимацию функции, заданной таблично,
кубическим сплайном, разработать блок-схему
и программу, оценить погрешность
аппроксимации. Результаты представить
в таблице вычислений: промежуточные значения
вычисления по выбранной или заданной
формуле метода, конечные результаты,
погрешность вычисленного результата
и предоставить формулы, которые были
применены для вычисления.
X | 3.50 | 3.55 | 3.60 | 3.65 | 3.70 | 3.75 | 3.80 |
Y | 33.154 | 34.813 | 36.598 | 38.477 | 40.473 | 42.547 | 44.391 |
Использованные формулы
известны и равны
при любом
Т.к. значение
первой (или второй) производной
на границе неизвестно, то можно
задать т.н. естественные граничные условия
S''(A)=0, S''(B)=0, и получить естественный сплайн.
Погрешность интерполяции естественным
сплайном составляет O(h^2). Максимум погрешности
наблюдается в окрестностях граничных
узлов, во внутренних узлах точность интерполяции
значительно выше. Погрешность сплайна
0,05*0,05=0,0025
Uses crt;
type massiv=array[0..6] of real;
const x:array[0..6] of real=
(3.50,3.55,3.60,3.65,3.70,3.
y:array[0..6] of real=(33.154, 34.813, 36.598, 38.477,
40.473, 42.547, 44.391);
var
a,b,c,d,sigma,lambda,h,f:
i,n,oo:integer;
begin
Clrscr;
n:=6;
writeln('array of h[i]');
for i:=1 to n do
begin
h[i]:= x[i]-x[i-1];
write(h[i]:0:3,' ');
end;
writeln;
writeln('array of f[i]');
for i:=1 to n do
begin
f[i]:=(y[i]-y[i-1])/h[i]
write(f[i]:0:3,' ');
end;
writeln;
sigma[1]:=(-h[2])/(2*h[1]+2*h[
lambda[1]:=(3*f[2]-3*f[1])/(2*
for i:=3 to n do
sigma[i-1]:=(-h[i])/(2*h[i-1]+
for i:=3 to n do
begin
lambda[i-1]:=(3*f[i]-3*f[i-1]-
lambda[i-1]:=lambda[i-1]/(2*h[
end;
c[n]:=0;
for i:=n downto 1 do
c[i-1]:=sigma[i-1]*c[i]+
for i:=1 to n do
begin
b[i]:=f[i]+(2/3)*h[i]*c[
d[i]:=(c[i]-c[i-1])/(3*
a[i]:=y[i];
end;
for i:=1 to n do
writeln ('g[',i,']=',a[i]:0:3,'+',b[i]
x[i]:0:3,')^2+',d[i]:0:3,'*(x-
readln;
end.