ФЭА / АИТ / Лабораторная работа №4 «Интерполяция и приближение сплайнами»
(автор - student, добавлено - 20-09-2017, 21:34)
Скачать:
Кафедра АИТ
Лабораторная работа №4
«Интерполяция и приближение сплайнами»
Создание линейной сплайн функции Для определения будем говорить о приближении функции f(x) на отрезке [0; 1]. Разобьем его на части [х0; х1], …, [хN-1; хN], х0 = 0, хN= 1, и обозначим это разбиение через Δ. Назовем сплайном порядка mфункцию, являющуюся многочленом степени m на каждом из отрезков [хN-1; хN], т.е. (1) и удовлетворяющую условиям непрерывности производных до порядка m-1 в точках х1, … , хN-1: (2) Всего имеется в распоряжении Q=N(m+1) неизвестных коэффициентов , и соотношения (2) образуют систему из (N-1)mлинейных алгебраических уравнений. Другие уравнения для коэффициентов получаются из условия близости сплайна к приближаемой функции и из некоторых дополнительных условий. Рассмотрим простейшую задачу приближения линейными сплайнами (m=1). Тогда общее число Qсвободных параметров равно 2N. Поставим вопрос о построении сплайна , совпадающего с функцией f(x) в точках х0,…, хN. Получится система уравнений (3) (4) Эта система распадается на системы уравнений относительно коэффициентов отдельных многочленов (5) (6) Отсюда находим (7) (8) Многочлен является многократно рассматривавшимся интерполяционным многочленом первой степени с узлами интерполяции xn-1, xn. Широкое распространение сплайнов во многом вызвано тем, что они являются в определенном смысле наиболее гладкими функциями среди функций, принимающих заданные значения.
Задание Дана функция . Необходимо построить для нее линейную сплайн функцию на отрезке [-1; 1].
Программа program LinSplain; uses CRT; CONST n=6; var x,y:array [1..n] of real; a0,a1,a,b:real; i:integer;
function f(x: real):real; begin f := sqrt(4+x); end;
begin clrscr; Write('Vvedite a:');ReadLN(a); Write('Vvedite b:');ReadLN(b); x[1] := -1; y[1] := f(x[1]); For i:=1 to 6 do begin WriteLN('x[',i,']=',x[i]:0:1,' ','y[',i,']=',y[i]:0:3); x[i+1] := x[i] + 0.4; y[i+1] := f(x[i+1]) end; For i:=1 to 5 do begin y[1] := 1.73; a1 := (y[i+1]-y[i])/(x[i+1]-x[i]); a0 := y[i]-2*x[i]*a1; WriteLN('P[',i,'1] = ',a0:0:3,' + ',a1:0:3,'x') end; Readkey end.
Результатом вычисления функции интерполяции линейным сплайном является ломаная линия на отрезке [-1;1].
Вывод В данной лабораторной работе в результате вычислений функция была приближена линейной сплайн функцией, представляющей собой ломаную линию. Точность построения зависит от числа интервалов разбиения.
Похожие статьи:
|
|