- •1 Введение
- •2 Среда Turbo Pascal
- •2.1 Основные понятия описания языка
- •2.2 Алфавит языка
- •2.3 «Выражение» и «Оператор»
- •2.4 Структура программы
- •2.4.1 Тело программы
- •2.4.2 Название программы
- •2.4.3 Подключаемые модули
- •2.4.4 Метки
- •2.4.5 Константы
- •2.4.6 Описание типов
- •2.4.7 Описание переменных
- •2.4.8 Основные единицы программирования
- •2.4.8.1 Условие
- •2.4.8.2 Циклы
- •2.4.8.3 Процедуры ввода-вывода
- •2.4.8.4 Операторы выхода
- •3 Типы данных
- •3.1 Простые типы данных в паскале
- •3.1.1 Логический тип
- •3.1.1.2 Битовая арифметика
- •3.1.2 Целые типы
- •3.1.3 Вещественные типы
- •3.1.4 Символьный тип
- •3.1.5 Перечисляемый тип данных
- •3.1.6 Ограниченный тип данных
- •3.2 Составные типы данных
- •3.2.1 Регулярные типы данных (массивы)
- •3.2.2 Строки
- •3.2.3 Множества
- •3.2.4 Записи
- •3.2.5 Файлы
- •3.2.5.1 Текстовые файлы
- •3.2.5.2 Компонентные файлы
- •3.2.5.3 Бестиповые файлы
- •3.2.5.4 Прямой и последовательный доступ
- •3.3 Подпрограммы. (Процедуры, Функции)
- •3.3.1 Процедуры
- •3.3.2 Функции
- •3.3.3 Рекурсия
- •3.4 Указатели. Динамические переменные
- •3.4.1 Применение динамических переменных. Динамические структуры данных
- •3.2.1.1 Линейные динамические структуры данных
- •3.4.1.1.1 Стеки
- •3.4.1.1.2 Очереди
- •3.4.1.1.3 Списки
- •3.4.1.1.4 Циклические списки
- •3.4.1.2 Нелинейные динамические структуры
- •3.4.1.2.1 Списки с двумя связями
- •3.4.1.2.2 Деревья
- •3.4.1.2.2.1 Определение деревьев
- •3.4.1.2.2.2 Формирование дерева
- •3.4.1.2.2.3 Обход дерева
- •4 Модульное программирование
- •5 Модуль Crt
- •6 Модуль Graph
- •6.1 Начало работы
- •6.3 Система координат
- •6.4 Графические примитивы
- •6.5 Стили
- •6.6 Работа с текстом
- •7 Математический пакет MathCAD
- •7.1 Общий вид главного окна
- •7.1.1 Главное меню
- •7.1.2 Панели инструментов
- •7.2.1 Понятие региона
- •7.2.2 Редактирование математических выражений
- •7.2.3 Ввод текста
- •7.2.4 Построение двумерных графиков
- •7.3 Использование системы MathCAD для вычислений
- •7.3.1 Особенности языка MathCAD
- •7.3.2 Алфавит MathCAD
- •7.3.3 Переменные
- •7.3.4 Операторы
- •7.3.5 Функция
- •7.3.6 Программные операторы
- •7.3.7 Графики
- •7.3.8 Символьные вычисления
- •7.4 Построение графиков функций
- •7.4.1 Построение графика функции одной переменной в декартовой системе координат
- •7.4.3 Построение графика параметрический заданной функции
- •7.5 Решение систем линейных уравнений
- •7.5.1 Решение СЛАУ методом Крамера
- •7.5.2 Решение СЛАУ методом Гаусса
- •7.6 Матричные операции
- •7.7 Интегрирование
- •7.7.1 Определенный интеграл
- •7.7.2 Неопределенный интеграл
- •7.8 Дифференцирование
- •7.9 Сплайн-интерполяция
- •Список литературы
7.9 Сплайн-интерполяция
Для заданного набора точек построить линейный, параболический и кубический сплайны.
Отобразить на одном графике исходные точки, линейный, параболический и кубический сплайны.
Запишем координаты по х и у в векторы vx и vy соответственно.
|
2.046 |
|
|
−0.4004 |
||||
|
|
1.929 |
|
|
|
−0.401 |
|
|
|
|
|
|
|
|
|||
|
9.568 |
|
|
−11.85 |
||||
|
|
7.388 |
|
|
|
−6.206 |
|
|
|
|
6.978 |
|
|
|
−5.005 |
|
|
vx:= |
|
|
vy := |
|
|
|||
|
9.213 |
|
|
−10.81 |
|
|||
|
|
|||||||
|
|
8.443 |
|
|
|
−8.703 |
|
|
|
|
|
|
|
|
|||
|
|
1.054 |
|
|
|
−0.5788 |
|
|
|
|
9.038 |
|
|
|
−10.31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8.927 |
|
|
−9.998 |
Для сортировке их по координате х, объединим их с помощью функции augment. Затем функцией csort отсортируем матрицу по первому(нулевому) столбцу, и потом опять их разъединим.
V := augment(vx,vy)
W := csort(V,0) |
190 |
||
vx:= W 0 |
vy := W 1 |
||
|
|
|
0 |
|
|
0 |
|
0 |
1.054 |
|
0 |
-0.579 |
|
1 |
1.929 |
|
1 |
-0.401 |
|
2 |
2.046 |
|
2 |
-0.4 |
vx = |
3 |
6.978 |
vy = |
3 |
-5.005 |
4 |
7.388 |
4 |
-6.206 |
||
|
5 |
8.443 |
|
5 |
-8.703 |
|
6 |
8.927 |
|
6 |
-9.998 |
|
7 |
9.038 |
|
7 |
-10.31 |
|
8 |
9.213 |
|
8 |
-10.81 |
|
9 |
9.568 |
|
9 |
-11.85 |
Построенные точки линейным сплайном с помощью функции lspine(vx,vy), аргументами которой являются два вектора координат точек по х и по у. Определим функцию fl(x) с помощью функции интерполирования interp.
vl := lspline(vx,vy)
fl(x) := interp(vl,vx,vy,x)
0
fl(x) 10
20 |
|
|
|
|
|
0 |
5 |
10 |
|||
|
|
|
x |
|
|
191
Аналогично интерполируем параболическим и кубическим сплайном функциями pspline(vx,vy) и csplie(vx,vy).
vp := pspline(vx,vy)
fp(x) := interp(vp,vx,vy,x)
0
fp(x) 10
20 0
vc := cspline(vx,vy)
fc(x) := interp(vc,vx,vy,x)
0
fc(x) 10
20 0
5 |
10 |
x |
|
5 |
10 |
x |
|
Теперь построим все три сплайна на одном графике, а также отметим заданные точки.
192
0
vyi
fl(x) 5
fp(x) fc(x) 10
15 |
|
|
|
|
|
|
|
|
|
|
|
0 |
2 |
4 |
6 |
8 |
10 |
vxi,x,x,x
Из графика видно, что на заданном интервале сплайны близки своими значениями, однако за пределами видно существенное расхождение.
193