АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Інтерполяція сплайном

Читайте также:

    Мета роботи – вивчення та набуття навичок складання алгоритмів та написання програм сплайн-інтерполювання функції.

     

    33.1. Загальні відомості

    Поліноміальна інтерполяція при всіх своїх перевагах має низку недоліків. Вона не забезпечує неперервності похідних функції та може давати істотні похибки при визначені значення функції між вузлами інтерполяції. Для екстраполювання функції такі поліноми мало придатні через великі помилки.

    Наведені недоліки відсутні у сплайн-функцій. Сплайн (splain) у перекладі з англійської —“гнучка лінійка”. Сплайн-функція трактується як крива, що збігається з профілем гнучкої лінійки, яка закріплена у заданих вузлових точках.

    Математично сплайн-функції являють собою спеціальні многочлени, що приймають у вузлах задані значення, та забезпечують неперервність похідних функції у цих точках. Найчастіше використовують кубічний сплайн (многочлен 3-го степеня), що забезпечує неперервіність першої та другої похідної, що зазвичай достатньо.

    Для визначення коефіціентів сплайну, сплайн-функція перетворюється у систему лінійних рівнянь, звідкіля й знаходяться шукані коефіціенти.

    Якщо позначити значення сплайн-функції у сусідніх вузлах та , а різницю аргументів та позначити й відповідно, то і -те рівняння такої системи можна записати у вигляді:

     

    До складу системи входить n (за кількістю вузлових точок) подібних рівнянь. Приймаючи , з рішення такої системи можна знайти усі значення коефіцієнтів . У результаті отримується нормальний кубічний сплайн, що дозволяє виконувати інтерполяцію у зоні визначення аргументу.

    де ,

    Наведена нижче програма для відповідної кількості значень х та у обчислює по вказаному алгоритму коефіцієнти нормального кубічного сплайну та за умови забезпечує інтерполяцію за допомогою наведеного вище сплайну. Якщо , то виконується лінійна екстраполяція за формулою:

    при - виконується екстраполяція за формулою

    Під час екстраполяції передбачається, що нахил лінійної ділянки дорівнює першій похідній сплайн-функції у точці при екстраполяції для , та у точці при .

     

    rem spline

    input "kil`kist vuzliv interpoljacii" h

    dim x(h), y(h), L(h), m(h), r(h), s(h)

    for i=1 to h

    input "x(i)" x(i)

    input "y(i)" y(i)

    next i

    d=x(2)-x(1)

    e=(y(2)-y(1))/d

    for k=2 to h-1

    n=d

    f=e

    d=x(k+1)-x(k)

    e=(y(k+1)-y(k))/d

    L(k)=d/(d+n)

    r(k)=1-L(k)

    s(k)=6*(e-f)/(n+d)

    next k

    for k=2 to h-1

    p=1/(r(k)*L(k-1)+2)

    L(k)=-L(k)*p

    s(k)=(s(k)-r(k)*s(k-1))*p

    next k

    m(h)=0

    L(h-1)=s(h-1)

    m(h-1)=L(h-1)

    for k=h-2 to 1 step -1

    L(k)=L(k)*L(k+1)+s(k)

    m(k)=L(k)

    next k

    for k=1 to h

    print "koeff"

    print using "##.#########"; m(k)

    next k

    rem interpolation and extrapolation

    1 input "x=" x

    i=0

    if x>x(h) then 4

    if x<x(1) then 5

    2 i=i+1

    if x>x(i) then 2

    j=i-1

    d=x(i)-x(j)

    n=x-x(j)

    r=x(i)-x

    p=d*d/6

    y=(m(j)*r^3+m(i)*n^3)/6/d

    y=y+((y(j)-m(j)*p)*r+(y(i)-m(i)*p)*n)/d

    3 print "y(x)="y

    input "prodowzyty y/n" w$

    if w$="y" or w$="Y" then 1 else end

    4 d=x(h)-x(h-1)

    y=d*m(h-1)/6+(y(h)-y(h-1))/d

    y=y*(x-x(h))+y(h)

    goto 3

    5 d=x(2)-x(1)

    y=-d*m(2)/6+(y(2)-y(1))/d

    y=y*(x-x(1))+y(1)

    goto 3

    end

     

    Сплайн-інтерполяція може виконуватись, як при постійному, так і при змінному кроці зміни х. Для забезпечення точності необхідно щоб відношення максимального кроку до мінімального не перевищувало 4. Інакше всі переваги сплайн-інтерполяції будуть зведені нанівець.

     

    33.2. Послідовність виконання роботи

    33.2.1. Увімкнути комп’ютер та завантажити ТВ.

    33.2.2. Доопрацювати тест програми, що наведено у прикладі: додати необхідні коментарі до операторів введення та виведення даних, та коментарі, які характеризують певні ділянки програми за призначенням обчислень. Набрати текст програми, відлагодити її. У операторі виведення застосувати шаблон, для виведення відповідної, обмеженої кількості знаків у числі.

     

    Запустити програму та зробити необхідні обчислення: ввести контрольні дані для перевірки роботи програми.

     

    х              
    у 3.76 4.44 5.04 5.56 6.00 6.36 6.64

    Контрольні значення:

    Коефіцієнти:

    -0.025384687

    -0.018461492

    -0.020769231

    -0.018461468

    -.0025384784

    Обчислити значення функції при х = 5 та х =15

    33.2.4. У разі успішного виконання програми перенести виведені результати до протоколу.

    33.2.5. Переписати текст програми, що вірно працює, до протоколу.

     

    33.3. Зміст протоколу.

    33.3.1. Протокол лабораторної роботи має містити теоретичну частину в обсязі необхідному для виконання та захисту лабораторної роботи, блок-схему та текст програми інтерполяції сплайн-функцією.

    33.3.2. Результати виконання лабораторної роботи повинні бути відображені відповідно до вимог п.33.2.

    33.3.3. Студенти, що не мають належним чином оформлений протокол до виконання та захисту лабораторної роботи не допускаються.

     

    x=? 5

    y(x)= 4.750961780548096

     

    x=? 15

    y(x)= 6.771538257598877

     


    Поиск по сайту:



    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.)