Файл: Электронное пособие Scilab.pdf

Добавлен: 15.11.2018

Просмотров: 12840

Скачиваний: 228

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

91 

 

z - матрица исходных данных (первая строка  - массив х, вторая строка 

–y); 

a0 - вектор начальных коэффициентов (нулевой вектор из k элементов); 
a  –  вектор  коэффициентов,  используемых  в  аппроксимирующей 

функции) (a0, a1, …ak); 

S  -  сумма  квадратов  отклонений  измеренных  значений  от  расчетных 

данных. 

Функция  datafit(f,z,a0)возвращает  вектор  коэффициентов  полинома 

степени  k,  который  с  наименьшей  среднеквадратичной  погрешностью 
аппроксимирует функцию, заданную таблично. Результатом является вектор 
строка  длиной  k+1,  содержащий  коэффициенты  полинома  в  порядке 
увеличения  степеней.  Как  правило,  степень  полинома  много  меньше 
количества узлов(k<<n).  

На  рис.2.2.1-1  приведен  пример  линейной  аппроксимации  функции, 

заданной таблицей. Функция R(a,z) рассчитывает разности между исходной и 
аппроксимирующей функцией(y-(a

1

+a

2

x)=y-a

1

-a

2

x).  

 

 

 
Рис. 2.2.1-1. Пример линейной  аппроксимации функции 
 
Добавим  необходимые  команды  для  кубической  аппроксимации 

(рис.2.2.1-2).  Здесь  разности  между  исходной  и  аппроксимирующей 
функцией вычисляются функцией R3(с,z)                                   

                   y-(с

1

+c

2

x+c

3

x

2

+c

4

x

3

)=y-c

1

-c

2

x-c

3

x

2

-c

4

x

3

.  


background image

92 

 

 

 
На  рис.2.2.1-3  приведены  графики  исходной  и  аппроксимирующих 

функций. 
 

 

 

 

Рис. 2.2.1-3. Графики исходной и аппроксимирующих функций 


background image

93 

 

 
Чтобы  использовать  функцию  datafit()  для  решения  задачи 

интерполяции необходимо,  чтобы степень этого полинома была на единицу 
меньше количества узловых точек. 

 
Пример  2.2.1-1.  Используя  в  качестве  узлов  интерполяции 

x=1,2,4,5, построить полином, интерполирующий функцию 

)

(

)

(

x

Sin

x

y

В  начале,  получим  таблицу  значений  функции  и  проведем  ее 

интерполяцию ее с использованием функции datafit() (рис. 2.2.1-5). Графики 
интерполяционных узлов и интерполяционного полинома приведены на рис. 
2.2.1-6. 

 

 

 

Рис. 2.2.1-5. Интерполяция таблично заданной функции  

с использованием функции Scilab datafit() 

 


background image

94 

 

 

 

Рис. 2.2.1-6. Графики интерполируемой и интерполирующей функций 

 

При  большом  количестве  базовых  точек  интерполяции  полиномом 

может  оказаться  малопродуктивной,  поэтому  нередко  используют 
интерполяцию сплайнами. Идея сплайн-интерполяции состоит в разбиении 
диапазона  интерполирования  на  отрезки,  в  пределах  которых  используются 
разные  функции одного  вида  (чаще  всего  алгебраические многочлены).  Эта 
функция  и  ее  несколько  производных  на  всем  диапазоне  интерполяции 
непрерывны.  В  результате  имеем  кусочно-гладкую  интерполяционную 
зависимость. 

Один  из  наиболее  распространенных  вариантов  интерполяции 

интерполяция кубическими сплайнами . Кроме того существуют 

квадратичные и линейные сплайны. 
В Scilab для построения линейной интерполяции служит функция 
 

y=interpln(z,x), 

 

где z - матрица исходных данных; 
x - вектор абсцисс;  
y - вектор значений линейного сплайна в точка x
 
Рассмотрим пример использования функции interpln(). 
 
 
 


background image

95 

 

Пример  2.2.1-2

.

Используя  значения  интерполирующей  функции, 

заданной 

таблично, 

и 

выполнить 

сплайн-интерполяцию 

с 

использованием  линейных  сплайнов  и  получить  значения  функции  в 
точке х=0.58. 

 

 

-1  0  1  2 

y(x) 

4  2  0 

 
 

 
 
 
 
 
 
 
 
 
 

 
 

 

Рис. 2.2.1-7. Вычисление функции в точке х=0.58 

 
Построение  кубического  сплайна  в  Scilab  состоит  из  двух  этапов: 

вначале  вычисляются  коэффициенты  сплайна  с  помощью  функции 
d=splin(x,y), а  затем рассчитывается  значения  интерполяционного полинома 
в точке y=interp(t,x,y,d). 

Функция d=splin(x,y) имеет следующие параметры:  
x  -  строго  возрастающий  вектор,  состоящий  минимум  из  двух 

компонент;  

y- вектор того же формата, что и x
d - результат работы функции, т.е. коэффициенты кубического сплайна. 
 
Для  функции  y=interp(t,x,y,k)  параметры  x,  y  и  d  имеют  те  же 

значения, параметр - это вектор абсцисс, а y - вектор ординат, являющихся 
значениями кубического сплайна в точках x. 

 
Пример  2.2.1-3

.

Найти  приближенное  значение  функции  при 

заданном  значении  аргумента  с  помощью  интерполяции  кубическими 
сплайнами в точках x1 = 0,702, x2 = 0,512, x3 = 0,608. 

 

0.43 

0.48 

0.56 

0.62 

0.7 

0.75 

y(x) 

1.635 

1.732 

1.876 

2.033 

2.228 

2.359