Керівництво користувача mathcad

Інтерполяція і передбачення

Інтерполяція використовує значення деякої функції, задані в ряді точок, щоб передбачити значення функції між ними. У Mathcad можна або з'єднувати точки даних прямими лініями (лінійна інтерполяція) або з'єднувати їх відрізками кубічного полінома (кубічна сплайн-інтерполяція).







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

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

Всякий раз, коли масиви використовуються в будь-який з функцій, описаних в цьому розділі, переконайтеся, що кожен елемент масиву містить певне значення, так як Mathcad привласнює значення 0 будь-якими елементами, які явно не визначені.

При лінійної інтерполяції Mathcad з'єднує існуючі точки даних прямими лініями. Це виконується функцією linterp. описаної нижче.

Використовує вектори даних vx і vy. щоб повернути лінійно інтерпольованої значення y. відповідне третьому аргументу x. Аргументи vx і vy повинні бути векторами однакової довжини. Вектор vx повинен містити речові значення, розташовані в порядку зростання.

Ця функція з'єднує точки даних відрізками прямих, створюючи таким чином ламану. Інтерпольованої значення для конкретного x є ордината y відповідної точки ламаної.

Для значень x, розташованих перед першою точкою в vx. Mathcad продовжує ламану прямою лінією, що проходить через перші дві точки даних. Для значень x, розташованих за останньою крапкою в vx. Mathcad продовжує ламану прямою лінією, що проходить через останні дві точки даних.

Для отримання найкращих результатів значення x має перебувати між найбільшим і найменшим значеннями в векторі vx - малоймовірно, що будуть корисні значення, обчислені для x поза цього діапазону. Функція linterp призначена для інтерполяції, а не екстрaполяціі. Малюнок 5 показує деякі приклади лінійної інтерполяції.

Малюнок 5: Приклади лінійної інтерполяції.

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

Щоб провести кубічний сплайн через набір точок:
  • Створіть вектори vx і vy, що містять координати x і y. через які потрібно провести кубічний сплайн. Елементи vx повинні бути розташовані в порядку зростання. (Хоча ми використовуємо імена vx. Vy і vs. немає ніяких обмежень на імена цих змінних; можна використовувати будь-які імена.)
  • Обчисліть вектор vs: = cspline (vx. Vy). Вектор vs містить другі похідні інтеполяціонной кривої в розглянутих точках.
  • Щоб знайти інтерпольованої значення в довільній точці, скажімо x0. обчисліть interp (vs. vx. vy. x0), де vs. vx і vy - вектори, описані раніше.

Зверніть увагу, що можна зробити те ж саме, обчислюючи:

Малюнок 6: Приклад сплайн-інтерполяції.

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

Малюнок 6 показує, як побудувати сплайн для прикладу, наведеного на рисунку 5. Опис кроків, зроблених на рисунку 6:

Вираз з функцією cspline обчислює масив других похідних vs для сплайна, використовуваного для інтерполяції даних з vx і vy.

Як тільки масив vs знайдений, функція interp обчислює інтерпольованої значення.

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

На додаток до cspline Mathcad поставляється з двома іншими кубічними сплайн-функціями. Три сплайн-функції:







Вони все повертають вектор коефіцієнтів других похідних, який ми будемо називати vs. Цей вектор, vs. зазвичай використовується в функції interp. описаної нижче. Аргументи vx і vy повинні бути вещественнозначнимі векторами однакової довжини. Значення в vx повинні бути речовинні і розташовані в порядку зростання.

Вони все повертають вектор коефіцієнтів других похідних, який ми будемо називати vs. Цей вектор, vs. зазвичай використовується в функції interp. описаної нижче. Аргументи vx і vy повинні бути вещественнозначнимі векторами однакової довжини. Значення в vx повинні бути речовинні і розташовані в порядку зростання.

Ці три функції відрізняються тільки граничними умовами: spline functions; end conditions for
  • функція lspline генерує криву сплайна, яка наближається до прямої лінії в граничних точках.
  • функція pspline генерує криву сплайна, яка наближається до параболи в граничних точках.
  • функція cspline генерує криву сплайна, яка може бути кубічним поліномом в граничних точках.

Повертає інтерпольованої значення y. відповідне аргументу x. Вектор vs обчислюється на основі векторів даних vx і vy однією з функцій lspline. pspline або cspline.

Інтерпольованої значення для конкретного x є ордината y відповідної точки сплайна. Для значень x, розташованих перед першою точкою в vx. Mathcad продовжує сплайн першої зі складових його кубічних парабол. Для значень x, розташованих за останньою крапкою в vx. Mathcad продовжує сплайн останньої зі складових його кубічних парабол.

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

Інтерполяція вектора точок

Можна використовувати оператор векторизації, щоб обчислити відразу цілий набір інтерпольованої значень, що відповідають вектору заданих точок. Це можливо і з interp. і з linterp.

Малюнок 7: Обчислення інтерпольованої значень в наборі точок.

Інтерполяція сплайнами функцій декількох змінних

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

Перший крок в двовимірної сплайн-інтерполяції - точно такий же, як і в одновимірному випадку: визначити вузли, через які поверхня повинна пройти. Однак це зажадає більше зусиль, тому що тепер потрібно визначити сітку вузлів:
  • Створіть n x 2 матрицю Mxy. чиї елементи Mxyi, 0 і Mxyi, 1 визначають x і y координати по діагоналі прямокутної сітки. Ця матриця грає ту ж саму роль, що і vx в одновимірному випадку, описаному раніше. Так як ці вузли описують діагональ, елементи в кожному стовпці Mxy повинні бути розташовані в порядку зростання (Mxyi, k
  • Створіть n x n матрицю Mz. чий (ij) - елемент є координата z відповідна точці x = Mxyi, 0 і y = Mxyj, 1. Вона грає ту ж саму роль, що і vy в одновимірному випадку, описаному раніше.
  • Обчисліть вектор vs: = cspline (Mxy. Mz). Вектор vs містить другі похідні наближає поверхні у вузлах, визначених Mxy і Mz.
  • Щоб знайти інтерпольованої значення в довільній точці, скажімо (x0, y0), обчисліть

де vs. Mxy і Mz - масиви, описані раніше. Результатом є значення інтерполюючої функції, відповідне точці (x0, y0).

Зверніть увагу, те ж саме можна зробити, обчислюючи

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

На додаток до cspline Mathcad поставляється з двома іншими функціями сплайн-інтерполяції. Функції сплайн-інтерполяції Mathcad:

Вони все повертають вектор коефіцієнтів других похідних, який ми будемо називати vs. Цей вектор, vs. зазвичай використовується в функції interp. описаної нижче. Mxy - n x 2 матриця, чиї елементи Mxyi, 0 і Mxyi, 1 визначають точки на діагоналі n x n сітки. (Ij) -Елемент матриці Mz визначає значення інтерполюючої функції в (Mxyi, 0. Mxyj, 1).

Ці три функції відрізняються тільки граничними умовами:
  • Функція lsplin e генерує сплайн, який наближається до площини на краях сітки.
  • функція pspline генерує сплайн, який представляє поліном другого ступеня від x і y на краях сітки.
  • функція cspline генерує сплайн, який представляє поліном третього ступеня від x і y на краях сітки.

Повертає інтерпольованої значення z. відповідне точкам x = v0 і y = v1. Вектор vs обчислюється lspline, pspline, або cspline на основі даних з Mxy і Mz.

Для отримання найкращих результатів не використовуйте функцію interp для значень x і y. віддалених від вузлів сітки. Сплайни призначені для інтерполяції, а не екстрaполяціі, тому малоймовірно, що значення, обчислені для таких x і y. будуть корисні.

Функції інтерполяції, описані в цьому розділі досі, дозволяють за заданим значенням деякої функції в ряді точок оцінити її значення в проміжних точках. Іноді необхідно оцінити значення функції в точках, що знаходяться поза області розташування сітки, на якій задані значення функції. У Mathcad є функція predict. яка дозволяє це зробити. Ця функція використовує лінійний алгоритм передбачення, який є корисним, коли екстраполіруемая функція є гладкою і осциллирующей, хоча не обов'язково періодичної. Лінійне передбачення можна розглядати як різновид екстрaполяціі, але його не можна плутати з лінійної або полиномиальной екстрaполяціей.

Малюнок 8: Як використовувати передбачення для екстраполяції даних.

Повертає n передбачених значень, заснованих на m послідовних значеннях вектора даних v. Елементи в v повинні представляти собою значення, взяті через рівні інтервали.

Функція predict використовує останні m вихідних значень даних, щоб обчислити коефіцієнти передбачення. Як тільки це зроблено, вона використовує останні m точок, щоб передбачити координати (m +1) -го точки, фактично створюючи ковзне вікно шириною в m точок.







Схожі статті