- •Овтеты по информатике
- •1. Характеристика технического обеспечения компьютера
- •2. Структура и характеристика системного блока
- •3. Обзор и характеристика внешних устройств компьютера
- •4. Характеристика программного обеспечения компьютера
- •5.Общее (системное) программное обеспечение
- •6. Операционная система Windows, ее возможности и особенности
- •7. Характеристика и приемы работы с основными объектами Windows
- •8. Характеристика сервисных программ управления файлами
- •9. Обзор прикладного программного обеспечения
- •10. Определение, свойства алгоритмов и классификация алгоритмов
- •11. Графические схемы алгоритмов
- •12. Примеры линейных, разветвляющихся, циклических алгоритмов
- •13. Общая характеристика языков программирования
- •14. Компьютерные сети и их классификация
- •15. Аппаратные компоненты компьютерной сети
- •16. Программное обеспечение компьютерных сетей
- •17. Глобальная сеть Интернет, общая характеристика, состав
- •19. Поиск информации в Интернет. Информационно-поисковые системы
- •20. Характеристика Web-сайта и Web-страницы
- •21. Общая характеристика систем компьютерной математики
- •22. Выполнение базовых вычислений в Scilab
- •23. 24.Работа с векторами в Scilab, Обработка матриц в Scilab
- •25. Основные операторы программирования в Scilab
- •32. Линейная интерполяция данных в Scilab
- •33. Сплайновая интерполяция данных в Scilab
- •34. Аппроксимация данных в Scilab по методу наименьших квадратов
32. Линейная интерполяция данных в Scilab
Задача интерполяции В интервале [a,b] заданы n+1 опорных (узловых) точек a<=x0<=x1<=...<=xn<=b. Заданы n+1 значений yi, соответствующих значению функции yi=f(xi) в узловых точках. Необходимо найти многочлен In(x) степени не больше n такой, что In(xi)= yi для любого 0<=i<=n. Всегда имеется только один интерполяционный многочлен. Интерполяцию применяют для того, чтобы вычислить значения функции между узловыми точками (интерполяция) или за интервалом узловых точек (экстраполяция). Интерполяция на больших интервалах (т. е. с относительно небольшим количеством узловых точек) имеет дополнительные трудности: 1) точность при больших расстояниях между узловыми точками очень мала 2) интерполяционные многочлены высокого порядка на концах интервала значительно колеблются, что существенно искажают поведение функции, что особенно важно при последующем дифференцировании.
Как осуществить линейную интерполяцию?
С помощью команды interpln
Синтаксис [y]=interpln(xyd,x)
Параметры
xyd : двухстрочная матрица (xy координаты точек)
x : вектор (абсцисса)
y : вектор (значения по оси y)
Команда interpln интерполирует функцию в интервалах между дискретными узлами,
заданных с помощью матрицы xyd с помощью отрезков прямой и возвращает значение
интерполирующей ломаной в дискретных точках, заданных вектором x.
Пример. x=[1 10 20 30 40];
y=[1 30 -10 20 40];
xyd=[x;y]
Результат:
xyd =
! 1. 10. 20. 30. 40. !
! 1. 30. - 10. 20. 40. !
plot2d(x',y',[-3],"011"," ",[-10,-40,50,50]);
x_new=(-4:45);
yi=interpln(xyd,x_new);
plot2d((-4:45)',yi',[3],"000");
Результат:
Будут определены значения интерполирующей функции в 50 точках от x=-4 до x=50 с
шагом 1.
3
Можно найти интерполяционное значение функции в дискретной точке:
z=interpln(xyd,10.5); Результат: z= 28.
Замечание: С помощью команды interpln (хотя она и называется командой
интерполяции) можно провести экстраполяцию данных и для значений x, лежащих вне
интервала, заданного первой строкой матрицы xyd, но достоверность такой интерполяции
очевидно невелика.
33. Сплайновая интерполяция данных в Scilab
Сплайн– гладкая кривая, проходящая через заданные точки (хi, yi), i = 0, 1, ... , п. Интерполяция сплайнами заключается в том, что на каждом отрезке [хi-1, xi]используется многочлен определенной степени. Наиболее часто применяется многочлен третьей степени, реже – второй или четвертой. При этом для определения коэффициентов многочленов используются условия непрерывности производных в узлах интерполяции.
Интерполяция кубическими сплайнамипредставляет собой локальную интерполяцию, когда на каждом отрезке [хi-1, xi], i = 1, 2, ... , п применяется кубическая кривая, удовлетворяющая некоторым условиям гладкости, а именно, непрерывности самой функции и ее первой и второй производных в узловых точках. Использование кубической функции вызвано следующими соображениями. Если предположить, что интерполяционная кривая соответствует упругой линейке, закрепленной в точках (хi, yi),то из курса сопротивления материалов известно, что эта кривая определяется как решение дифференциального уравнения f(IV)(x) = 0 на отрезке [хi-1, xi](для простоты изложения мы не рассматриваем вопросы, связанные с физическими размерностями). Общим решением такого уравнения является многочлен 3-й степени с произвольными коэффициентами, который удобно записать в виде
Si(x) = аi + bi(х - xi-1) + сi(x - xi-1)2+ di(x - xi-1)3,
хi-1 £ х £ хi, i = 1, 2, ... , п.(4.32)
Коэффициенты функций Si(x)определяются из условий непрерывности функции и ее первой и второй производных во внутренних узлах xi, i = 1, 2,..., п - 1.
Из формул (4.32) при х = хi-1 получим
Si(xi-1) = yi-1 = ai, i = 1, 2,..., п,(4.33)
а при х = хi
Si(xi) = аi + bihi + сihi2+ dihi3,(4.34)
i = 1, 2,..., n.
Условия непрерывности интерполяционной функции записываются в виде Si(xi) = Si-1(xi), i = 1, 2, ... , n - 1 и из условий (4.33) и (4.34) следует, что они выполнимы.
Найдем производные функции Si(x):
S'i(x) = bi + 2сi(х - xi-1) + 3di(х – xi-1)2,
S"i(x) = 2ci + 6di(x - xi-1).
При x = xi-1, имеем S'i(xi-1) = bi, S" (xi-1) = 2сi, а при х = хi получим
S'i(xi) = bi + 2сihi + 3dihi2, S" (xi) = 2сi + 6dihi.
Условия непрерывности производных приводят к уравнениям
S'i(xi) = S'i+1(xi) Þ bi + 2сihi + 3dihi2 = bi+1,
i = l, 2,... ,п - 1. (4.35)
S"i (xi) = S"i+1(xi) Þ 2сi + 6dihi = 2ci+1,
i = l, 2,..., n - 1. (4.36)
Всего имеем 4n – 2 уравнений для определения 4n неизвестных. Чтобы получить еще два уравнения, используют дополнительные краевые условия, например, требование нулевой кривизны интерполяционной кривой в концевых точках, т. е. равенства нулю второй производной на концах отрезка [а, b] а = х0, b = хn:
S"1(x0) = 2c1 = 0 Þ с1 = 0,
S"n(xn) = 2сn + 6dnhn = 0 Þ сn + 3dnhn = 0. (4.37)
Систему уравнений (4.33)–(4.37) можно упростить и получить рекуррентные формулы для вычисления коэффициентов сплайна.
Из условия (4.33) имеем явные формулы для вычисления коэффициентов ai:
ai = yi-1, i= 1,..., n. (4.38)
Выразим di через ci с помощью (4.36), (4.37):
; i = 1, 2,...,n; .
Положим сn+1= 0, тогда для di получим одну формулу:
, i = 1, 2,...,n. (4.39)
Подставим выражения для аi и di в равенство (4.34):
, i = 1, 2,..., n.
и выразим bi, через сi:
, i = 1, 2,..., n. (4.40)
Исключим из уравнений (4.35) коэффициенты bi и di с помощью (4.39) и (4.40):
,
i = 1, 2,..., n -1.
Отсюда получим систему уравнений для определения сi:
(4.41)
Система уравнений (4.41) может быть переписана в виде
(4.42)
Здесь введено обозначение
, i =1, 2,..., n - 1.
Решим систему уравнений (4.42) методом прогонки. Из первого уравнения выразим с2через с3:
c2 = a2c3 + b2, , . (4.43)
Подставим (4.43) во второе уравнение (4.42):
h2(a2c3 + b2) + 2(h2 + h3)c3 + h3c4 = g2,
и выразим с3 через с4:
с3 = a3с4 + b3, (4.44)
Предполагая, что сi-1= ai-1ci + bi-1 из i-го уравнения (4.42) получим
ci = aiсi+1 + bi
, i = 3,..., n – 1, an = 0, (4.45)
, i = 3,..., n.
Сформулируем алгоритм интерполяции с помощью кубического сплайна.
Исходные данные: значения функции у0, у1,..., уп в узлах х0, х1,..., хп (х0 < х1< ... < хn).
0. Вычислим значения hi и gi:
hi = xi – xi-1 i = 1, 2,..., n,
, i =1, 2,..., n - 1. (4.46)
1. Прямой ход прогонки для вычисления коэффициентов ci. Вычислим коэффициенты прогонки ai и bi:
, ,
, i = 3,..., n – 1, an = 0, (4.47)
, i = 3,..., n.
2. Обратный ход прогонки для вычисления коэффициентов сi. Вычислим коэффициенты ci:
cn+1 = 0,
ci = aiсi+1 + bi, i = n, n -1,..., 2, (4.48)
c1 = 0.
3. Вычисление коэффициентов аi, bi, di:
ai = yi-1,
, (4.49)
i = 1, 2,..., n.
4. Вычисление значения функции с помощью сплайна. Для этого найти такое значение i,что данное значение переменной х принадлежит отрезку [xi-1, xi] и вычислить
Si(x) = аi + bi(х - xi-1) + сi(x - xi-1)2+ di(x - xi-1)3. (4.50)
