
- •1.Процесс интерполяции в MathCad
- •1.1.1.Решение с помощью линейной интерполяции
- •1.1.2.Решение с помощью параболического сплайна
- •1.1.3. Решение с помощью линейной аппроксимации
- •1.1.4. Решение с помощью метода наименьших квадратов
- •1.1.5. Решение с помощью полиноминальной регрессии
- •1.1.6. Графики таблично заданной функции в одних осях координат
- •1.1.7. Анализ полученных результатов
- •1.1.8.Одномерная линейная аппроксимация.
- •1.2. Пример сплайн-интерполяции
- •1.3.Интерполяция в-сплайнами в MathCad
- •2. Процесс интерполяции в matlab
- •2.1.Интерполяция в-сплайнами
1.2. Пример сплайн-интерполяции
Пусть
задана таблица значений функции f(xi) =
yi (
),
в которой они расположены по возрастанию
значений аргумента: x0 < x1 < … < xn.
Чтобы построить кубический сплайн,
требуется определить коэффициенты ai0,
ai1, ai2, ai3, которые задают интерполяционный
кубический многочлен
на
каждом интервале интерполирования
[xi-1, xi],
.
Таким
образом, необходимо определить 4n
коэффициентов aij (
,
),
для чего требуется 4n уравнений. Необходимые
уравнения определяются следующими
условиями.
1. Условия непрерывности функции:
2. Условия непрерывности 1-х и 2-х производных функции:
3. Граничные условия:
Часто
используются граничные условия
вида
Получаемый
при этом сплайн называется естественным
кубическим сплайном.
Задача определения кубического сплайна существенно упрощается при использовании многочлена Эрмита. Кубический многочлен Эрмита на интервале [xi-1, xi] определяется с помощью значений функции yi-1, yi и ее производных yi-1, yi. Так как значения производных в общем случае могут быть неизвестны, обозначим их как yi-1 = Si-1; yi = Si. При построении сплайна переменные Si называются наклонами сплайна в соответствующих точках xi.
Запишем многочлен Эрмита для интервала [xi-1, xi], где hi = xi - xi-1:
При таком выборе кубического многочлена автоматически выполняются условия непрерывности функции и ее первых производных:
Чтобы определить сплайн, нужно задать условия непрерывности второй производной:
Для записи этих условий в развернутом виде определим кубический многочлен Эрмита на интервале [xi, xi+1], где hi+1 = xi+1 - xi:
Определим
вторые производные многочленов Qi(x) и
Qi+1(x) в точке x = xi:
(4)
(5)
Отсюда условие непрерывности вторых производных имеет вид:
(6)
Это условие порождает систему линейных уравнений относительно наклонов сплайна Si, которая содержит n - 1 уравнение и n + 1 переменную. Чтобы определить два недостающих уравнения используются граничные условия. Например, для естественного кубического сплайна:
Указанные граничные условия могут быть получены из уравнения (5) для i = 0 и из уравнения (4) для i = n соответственно. В развернутом виде:
(7)
Решение
системы линейных уравнений, образованной
условиями (6) и (7), позволяет вычислить
наклоны сплайна Si (i =
)
и определить кубический сплайн путем
записи многочлена Эрмита для каждого
интервала [xi-1, xi], i =
.
1.3.Интерполяция в-сплайнами в MathCad
2. Процесс интерполяции в matlab
MATLAB – это высокоуровневый язык технических расчетов, интерактивная среда разработки алгоритмов и современный инструмент анализа данных. MATLAB по сравнению с традиционными языками программирования (C/C++, Java, Pascal, FORTRAN) позволяет на порядок сократить время решения типовых задач и значительно упрощает разработку новых алгоритмов. MATLAB представляет собой основу всего семейства продуктов MathWorks и является главным инструментом для решения широкого спектра научных и прикладных задач, в таких областях как: моделирование объектов и разработка систем управления, проектирование коммуникационных систем, обработка сигналов и изображений, измерение сигналов и тестирование, финансовое моделирование, вычислительная биология и др.
Ядро MATLAB позволяет максимально просто работать с матрицами реальных, комплексных и аналитических типов данных. Содержит встроенные функции линейной алгебры (LAPACK, BLAS), быстрого Фурье преобразования (FFTW), функции для работы с полиномами, функции базовой статистики и численного решения дифференциальных уравнений. Все встроенные функции ядра MATLAB разработаны и оптимизированы специалистами и работают быстрее или так же, как их эквивалент на C/C++ Ключевые возможности:
• Платформонезависимый, высокоуровневый язык программирования ориентированный на матричные вычисления и разработку алгоритмов • Интерактивная среда для разработки кода, управления файлами и данными • Функции линейной алгебры, статистики, анализ Фурье, решение дифференциальных уравнений и др.
• Богатые средства визуализации, 2-D и 3-D графика
• Встроенные средства разработки пользовательского интерфейса для создания законченных приложений на MATLAB • Средства интеграции с C/C++, наследование кода, ActiveX технологии