Главная страница

Методичка. Массивы и матрицы в Scilab. Решение задач линейной алгебры


Скачать 2.9 Mb.
НазваниеМассивы и матрицы в Scilab. Решение задач линейной алгебры
Дата08.06.2022
Размер2.9 Mb.
Формат файлаpdf
Имя файлаМетодичка.pdf
ТипЛабораторная работа
#578607

3
ЛАБОРАТОРНАЯ РАБОТА №1
Тема: Массивы и матрицы в Scilab. Решение задач линейной алгебры
Цель работы: Научиться формировать матрицы и массивы в SCILAB, выполнять действия над матрицами, решать системы линейных уравнений.
1.Введение
Для работы с множеством данных удобно использовать массивы.
Например, можно создать массив для хранения числовых или символьных данных. В этом случае вместо создания переменной для хранения каждого данного достаточно создать один массив, где каждому элементу будет присвоен порядковый номер.
Таким образом, массив - множественный тип данных, состоящий из фиксированного числа элементов. Как и любой другой переменной, массиву должно быть присвоено имя.
Переменную, представляющую собой просто список данных, называют
одномерным массивом, или вектором. Для доступа к данным, хранящимся в определенном элементе массива, необходимо указать имя массива и порядковый номер этого элемента, называемый индексом.
Если возникает необходимость хранения данных в виде таблиц, в формате строк и столбцов, то необходимо использовать двумерные массивы
(матрицы).
Для доступа к данным, хранящимся в таком массиве, необходимо указать имя массива и два индекса: первый должен соответствовать номеру строки, а второй - номеру столбца, в которых хранится необходимый элемент.
Значение нижней границы индексации в Scilab равно единице. Индексы могут быть только целыми положительными числами.
2.Ввод и формирование массивов и матриц
Задать одномерный массив в Scilab можно следующим образом:
name=Xn:dX:Xk
где name - имя переменной, в которую будет записан сформированный массив, Xn - значение первого элемента массива, Xk - значение последнего элемента массива, dX - шаг, с помощью которого формируется каждый следующий элемент массива, т.е. значение второго элемента составит Xn+dX, третьего Xn+ dX+dX и так далее до Xk.
Если параметр dX в конструкции отсутствует, это означает, что по умолчанию он принимает значение, равное единице, т.е. каждый следующий элемент массива равен значению предыдущего плюс один:
name=Xn:Xk

4
Переменную, заданную как массив, можно использовать в арифметических выражениях и в качестве аргумента математических функций.
Еще один способ задания векторов и матриц в Scilab - это их поэлементный ввод. Так, для определения вектора-строки следует ввести имя массива, а затем после знака присваивания, в квадратных скобках через пробел или запятую, перечислить элементы массива
name=[x1 x2 ... xn] или name=[x1, x2, ..., xn]
Обратиться к элементу вектора можно, указав имя массива и порядковый номер элемента в круглых скобках:
name(индекс)
Ввод элементов матрицы также осуществляется в квадратных скобках, при этом элементы строки отделяются друг от друга пробелом или запятой, а строки разделяются между собой точкой с запятой:
name=[x11, x12, ..., x1n; x21, x22, ..., x2n; ...; xm1, xm2, ..., xmn;]
Обратиться к элементу матрицы можно, указав после имени матрицы, в круг лых скобках через запятую, номер строки и номер столбца на пересечении кото рых элемент расположен:
name(индекс1, индекс2)
Важную роль при работе с матрицами играет знак двоеточия. Указывая его вместо индекса при обращении к массиву, можно получать доступ к группам его элементов.

5
3.Действия над матрицами
Для работы с матрицами и векторами в Scilab предусмотрены следующие операции:
+ — сложение
- — вычитание
Операции сложения и вычитания определены для матриц одной размерности или векторов одного типа, т.е. суммировать (вычитать) можно либо векторы-столбцы, либо векторы-строки одинаковой длины.
’ — транспонирование
Если в некоторой матрице заменить строки соответствующими столбцами, то получится транспонированная матрица.
* — матричное умножение
* — умножение на число
Операция умножения вектора на вектор определена только для векторов одинакового размера, причем один из них должен быть вектором-столбцом, а второй вектором-строкой. Матричное умножение выполняется по правилу строка на столбец и допустимо, если количество строк во второй матрице совпадает с количеством столбцов в первой. Кроме того, переместительный закон на произведение матриц не распространяется.
ˆ — возведение в степень
Возвести матрицу в n-ю степень значит умножить ее саму на себя n раз.
При этом целочисленный показатель степени может быть как положительным, так и отрицательным. В первом случае выполняется алгоритм умножения матрицы на себя указанное число раз, во втором умножается на себя матрица, обратная к данной.

6
\ — левое деление
Операция левого деления может быть применима для решения матричного уравнения вида
A
·
X
=
B, где
X — неизвестный вектор.
/ — правое деление
Операцию правого деления используют для решения матричных уравнений вида X · A = B.
Примеры матричных операций:
Кроме того, если к некоторому заданному вектору или матрице применить математическую функцию, то результатом будет новый вектор или матрица той же размерности, но элементы будут преобразованы в соответствии с заданной функцией:
4.Решение систем линейных алгебраических уравнений
Система m уравнений с n неизвестными вида:

7 называется системой линейных алгебраических уравнений (СЛАУ), причем
x
j
— неизвестные,
a
ij
— коэффициенты при неизвестных, b
i
— свободные коэффициенты (i = 1 . .
.m, j = 1 . . . n).
Система из m линейных уравнений с n неизвестными может быть описана при помощи матриц: A · x = b, где x — вектор неизвестных, A — матрица коэффициентов при неизвестных или матрица системы,
b — вектор свободных членов системы или вектор правых частей.
Совокупность всех решений системы (x
1
, x
2
, . . . , x
n
) называется
множеством решений или просто решением системы.
Существует несколько способов решения систем уравнений:
Метод Крамера
Правило Крамера заключается в следующем. Если определитель матрицы системы из n уравнений с n неизвестными A· x = b отличен от нуля, то система имеет единственное решение x
1
, x
2
, . . . , x
n
, определяемое по формулам
Крамера:
, где
— определитель матрицы, полученной из матрицы системы A заменой i-го столбца столбцом свободных членов b.
Метод обратной матрицы
Для системы из n линейных уравнений с n неизвестными A · x = b, при условии, что определитель матрицы A не равен нулю, единственное решение можно представить в виде x = A
−1
· b.
Метод Гаусса
Решение системы линейных уравнений при помощи метода Гаусса основывается на том, что от заданной системы переходят к эквивалентной системе, которая решается проще, чем исходная система.
Метод Гаусса состоит из двух этапов. Первый этап — это прямой ход, в результате которого расширенная матрица системы путем элементарных преобразований (перестановка уравнений системы, умножение уравнений на

8 число, отличное от нуля, и сложение уравнений) приводится к ступенчатому виду. На втором этапе (обратный ход) ступенчатую матрицу преобразовывают так, чтобы в первых n столбцах получилась единичная матрица. Последний, n +
1 столбец этой матрицы содержит решение системы линейных уравнений.
5. Задания к работе
1. Решить систему линейных алгебраических уравнений тремя методами,
сделать проверку.

9 2. Если возможно, вычислить матрицу, обратную к матрице D.

10
ЛАБОРАТОРНАЯ РАБОТА №2
Тема: Построение графиков в SciLab
Цель работы: Научиться строить двумерные и трехмерные графики.
1.Двумерные графики простейших функций
Рассмотрение графиков начнем с простейших функций вида y = f(x), для построения которых в Scilab существует функция plot.
Функция plot предназначена для построения графика одной функции y = f(x).
Обращение к ней имеет вид:
plot(x,y,[xcap,ycap,caption])
Здесь x — массив абсцисс; y — массив ординат; xcap, ycap, caption — подписи осей и графика.
Пусть x изменяется на интервале [−2π; 2π] с шагом 0,1. Сформируем массив X.
Вычисляя значение функции
y = sin(cos(x)) для каждого значения массива X, создадим массив Y . Затем воспользуемся функцией plot(x,y) для построения кривой и выведем с ее же помощью подписи координатных осей ’X’, ’Y’, а также имя графика ’plot
function y=sin(cos(x))’.

11
2. Построение графиков в полярной системе координат
Полярная система координат состоит из заданной фиксированной точки O – полюса, концентрических окружностей с центром в полюсе и лучей, выходящих из точки O, один из которых OX – полярная ось.
Расположение любой точки M в полярных координатах можно задать положительным числом ρ = OM (полярный радиус), и числом ρ, равным величине угла XOM (полярный угол).
В Scilab для формирования графика в полярной системе координат необходимо сформировать массивы значений полярного угла и полярного радиуса, а затем обратиться к функции polarplot:
polarplot(fi,ro)
,где fi – полярный угол, а ro – полярный радиус.
Определив диапазон и шаг изменения полярного угла, формируем массивы fi,
ro. Поочередно строим заданные кривые с помощью функции polarplot, при этом для линии графика функции ro установим красный цвет, а для функции
ro1 – синий.

12
3.Построение графиков функций, заданных в параметрической форме
Задание функции y(x) с помощью равенств x = f(t) и y = g(t) называют
параметрическим, а вспомогательную величину tпараметром.
Для построения графика функции, заданной параметрически, необходимо определить массив t, определить массивы x = f(t), y = g(t) и построить график функции y(x), используя функции plot(x,y) либо plot2d(x,y).
Напомним, что строфоида представляет собой алгебраическую кривую третьего порядка, которая в общем виде задается уравнением:
Представим это уравнение с помощью параметра t:

13
Зададим массивы t, x и y и построим график с помощью функции plot(x,y):
График строфоиды выглядит следующим образом:
Для построения параметрической кривой в трехмерном пространстве Scilab существует команда param3d:
param3d(x,y,z,)
Например:
Прежде всего, определим диапазон и шаг изменения параметра t. Затем обратимся к функции param3d, передав ей математические выражения

14 функций y, y
1
и y
2
, а также углы в градусах, под которыми наблюдатель будет видеть формируемый график – 45 и 35.
График параметрической линии, построенный функцией param3d:
4. Построение трехмерных графиков в Scilab
К трехмерным отнесем все графики, положение каждой точки которых задается тремя величинами. В целом процесс построения графика функции вида Z(x, y) можно разделить на три этапа:
1. Создание в области построения графика прямоугольной сетки. Для этого формируются прямые линии, параллельные координатным осям x
i
и y
j
, где
2. Вычисление значений функции z
ij
= f(x
i
, y
j
) во всех узлах сетки.
3. Обращение к функции построения трехмерных графиков.
В Scilab поверхность можно построить с помощью функций plot3d .
Обращение к функциям следующее:

15
plot3d(x,y,z)
здесь x – вектор-столбец значений абсцисс; y – вектор-столбец значений ординат; z – матрица значений функции;
Прежде всего зададим массивы X и Y . Затем сформируем матрицу значений функции Z
ij
(x
i
, y
j
), используя оператор цикла for. Здесь i – параметр цикла, который будет перебирать все значения массива X, а j – параметр цикла, который будет сопоставлять каждому значению массива X по очереди все значения массива Y .
Таким образом, сначала будут вычислены все значения функции Z при меняющемся Y (от первого до последнего значения в массиве) и первом значении массива X. Затем – при втором значении массива X и т. д. Напомним, здесь length – определяет количество элементов массива X или Y. Наконец, для построения поверхности обратимся к функции plot3d1
(аналог функции plot3d). Их отличие состоит в том, что plot3d строит поверхность и заливает ее одним цветом, а plot3d1 – поверхность, каждая ячейка которой имеет цвет, зависящий от значения функции в каждом соответствующем узле сетки.
Функция plot3d2 и является аналогом функции plot3d (не путать функции
plot3d-plot3d1-plot3d2), поэтому имеет такой же синтаксис:
plot3d2(x,y,z,)
Эти функции предназначены для построения поверхности, которая задается набором граней. Т. е. если функция plot3d по входным данным сможет построить лишь отдельно стоящие друг от друга плоские грани, то plot3d2 проинтерпретирует взаимное расположение этих граней в виде цельного геометрического тела.

16
При построении графиков поверхностей, заданных параметрически – x(u, v),
y(u, v)и z(u, v) – необходимо сформировать матрицы X, Y и Z одинакового размера. Для этого массивы u и v должны иметь одинаковый размер. После этого
1. Если x, y и z можно представить в виде произведения f(u) · g(v), то соответствующие X, Y и Z следует формировать в виде матричного умножения
f(u) на g(v).
2. Если x, y и z можно представить в виде одной функции f(u) или g(v), то в этом случае матрицы X, Y и Z следует записывать в виде f(u) · ones(size(v)) или
g(v) · ones(size(u)) соответственно.
Отметим также, что здесь linspace – функция, возвращающая массив с линейным приращением значений в заданном диапазоне. Например,
u=linspace(-%pi/2,%pi/2,40) значит, что параметр u линейно изменяется в диапазоне [−2π; 2π]. Число 40 устанавливает, что массив должен содержать ровно 40 значений, по умолчанию их 100.
Построенная функцией plot3d2 сфера представлена ниже:

17
5. Задания к работе
1. Изобразите график функции f(x).
2. Изобразите график функции в полярных координатах.

18 3. Изобразить линии, заданные параметрически с помощью функции param3d.
4. Построить график, заданный системой уравнений при помощи функции
plot3d2

19
ЛАБОРАТОРНАЯ РАБОТА №3
Тема: Численное интегрирование и дифференцирование
Цель работы: Цель работы: Освоить различные численные алгоритмы в функциях интегрирования и дифференцирования, реализованнные в Scilab.
1.Интегрирование по методу трапеций
В Scilab численное интегрирование по методу трапеций реализовано с помощью функции inttrap(x,y)
Эта функция вычисляет площадь фигуры под графиком функции y(x), которая описана набором точек (x, y). Параметр x является необязательным. Для функции inttrap(y) элементы вектора x принимают значения номеров элементов вектора y.
Этот интеграл легко сводится к табличному
, поэтому вычислить его можно вычислить по формуле Ньютона–Лейбница:
В Scilab это будет выглядеть следующим образом:
Теперь применим для отыскания заданного определенного интеграла метод
трапеций, суть которого состоит в следующем: для вычисления интеграла методом трапеций участок интегрирования разбивают на определенное количество равных отрезков, каждую из полученных криволинейных трапеций заменяют прямолинейной и вычисляют приближенное значение интеграла как сумму площадей этих трапеций.
Рассмотрим несколько вариантов решения данной задачи. В первом случае интервал интегрирования делится на отрезки с шагом 1, во втором 0.5 и в третьем 0.1. Не трудно заметить, что чем больше точек разбиения, тем точнее значение искомого интеграла:

20
Далее приведен пример использования функции inttrap с одним аргументом:
Как видим, в первом случае значение интеграла, вычисленного при помощи этой функции, неточно и совпадает со значением, полученным функцией
inttrap(x,y) на интервале [5; 13] с шагом 1. Т.е. мы нашли сумму площадей восьми прямолинейных трапеций с основанием h = 1 и боковыми сторонами, заданными вектором y.
Во втором случае, при попытке увеличить точность интегрирования, значение интеграла существенно увеличивается. Дело в том, что, уменьшив шаг разбиения интервала интегрирования до 0.1, мы увеличили количество элементов векторов x и y, и применение функции inttrap(y) приведет к вычислению суммы площадей восьмидесяти трапеций с основанием h = 1 и боковыми сторонами, заданными вектором y. Таким образом, в первом и втором примерах вычисляются площади совершенно разных фигур.
2. Интегрирование по квадратуре
Методы трапеций являются частными случаями квадратурных формул
Ньютона–Котеса, которые имеют вид: где H
i
–это некоторые константы, называемые постоянными Ньютона–Котеса.
Если для принять n = 1, то получим метод трапеций, а при n = 2 метод
Симпсона. Эти методы называют квадратурными методами низших порядков.
Для n > 2 получают квадратурные формулы Ньютона–Котеса высших
порядков. Вычислительный алгоритм квадратурных формул реализован в

21
Scilab функцией: integrate(fun, x, a, b), где fun – функция, задающая подынтегральное выражение в символьном виде;
x – переменная интегрирования, так же задается в виде символа;
a, b – пределы интегрирования, действительные числа;
Задача из предыдущего пункта: может быть решена следующим образом:
3.Интегрирование внешней функции
Наиболее универсальной командой интегрирования в Scilab является:
[I,err]=intg(a, b, name), где name – имя функции, задающей подынтегральное выражение (здесь функция может быть задана в виде набора дискретных точек
(как таблица) или с помощью внешней функции);
a и b – пределы интегрирования;
Теперь задача может быть решена следующим образом:
Допустим необходимо решить задачу:
Численное решение интеграла показано ниже:
4.Приближенное дифференцирование

22
Идея численного дифференцирования заключается в том, что функцию y(x), заданную в равноотстоящих точках x
i
(i = 0, 1, . . . , n) отрезка [a, b] с помощью значений y
i
= f(x
i
), приближенно заменяют интерполяционным полиномом
Ньютона, построенном для системы узлов x
0
, x
1
, . . . , x
k
(k меньше или равно n), и вычисляют производные y′ = f′(x), y′′ = f′′(x) и т. д.
На практике приближенное дифференцирование применяют в основном для функций, заданных в виде таблицы. В Scilab численное дифференцирование реализовано командой dy=diff(y,n), где y – значения функции y(x) в виде вектора вещественных чисел, n – порядок дифференцирования. Результат работы функции – вектор вещественных чисел dy, представляющий собой разности порядка n и интерполяционного полинома Ньютона
Рассмотрим работу функции на примере:
Решение данной задачи:
5. Вычисление производной функции в точке. Приближенное вычисление
частных производных.
Более универсальной командой дифференцирования является команда:

23
g=numdiff(fun,x), здесь fun – имя функции, задающей выражение для дифференцирования. Функция должна быть задана в виде y=fun(x), где x – переменная, по которой будет проводится дифференцирование. Результат работы функции – матрица
Рассмотрим пример:
Решение:
Частные производные
Задание таково:
Решение задачи:

24
6. Задания к работе
1. Вычислить интеграл одним из трех известных способов:
2. Для вариантов 1-7 вычислить значение производной функции в точке x=3, для вариантов 8-15 вычислить значение частных производных от функции нескольких переменных f(x,y,z) в точке (1,2,3):

25
ЛАБОРАТОРНАЯ РАБОТА №4
Тема: Нелинейные уравнения и системы в SciLab
Цель работы: Рассмотреть средства SciLab для нахождения корней нелинейных уравнений и систем.
1.Алгебраические уравнения
Любое уравнение P(x) = 0, где P(x) – это многочлен, отличный от нулевого, называется алгебраическим уравнением или полиномом. Всякое алгебраическое уравнение относительно x можно записать в виде a
0
x n
+a
1
x n-1
+· · ·+a n-1
x+a n
= 0, где a
0
не равно 0, n > 1 и a
i
– коэффициенты алгебраического уравнения n–й степени.
Например, линейное уравнение это алгебраическое уравнение первой степени, квадратное – второй, кубическое – третьей и так далее.
Решение алгебраического уравнения в Scilab состоит из двух этапов.
Необходимо задать полином P(x) с помощью функции poly, а затем найти его корни, применив функцию roots.
Итак, определение полиномов в Scilab осуществляет функция:
poly(a, "x", [" F"]),
где a – это число или матрица чисел, x – символьная переменная, F – необязательная символьная переменная, определяющая способ задания полинома. Символьная переменная F может принимать только два значения –
roots или coeff (соответственно r или c). Если F=c, то будет сформирован полином с коэффициентами, хранящимися в параметре a. Если же F=r, то значения параметра a воспринимаются функцией как корни, для которых необходимо рассчитать коэффициенты соответствующего полинома. По умолчанию F=r.Следующий пример отражает создание полинома p, имеющего в качестве корня тройку, и полинома f с коэффициентом 3:

26
Далее приведены примеры создания более сложных полиномов:
C полиномами возможно проведение символьных операций, таких как: сложение, вычитание, умножение, деление, возведение в степень. Например:
2. Решение алгебраических уравнений
Функция roots(p) предназначена для решения алгебраического уравнения.
Здесь p – это полином, созданный функцией poly и представляющий собой левую часть уравнения P(x) = 0.
Решим уравнение:
Для решения этой задачи необходимо задать полином p. Сделаем это при помощи функции poly, предварительно определив вектор коэффициентов V.
Обратите внимание, что в уравнении отсутствует переменная x в первой степени, это означает, что соответствующий коэффициент равен нулю:

27
Теперь найдем корни полинома:
Графическое решение задачи, показанное на рисунке, позволяет убедиться, что корни найдены верно:
3.Системы уравнений
Если заданы m уравнений с n неизвестными и требуется найти последовательность из n чисел, которые одновременно удовлетворяют каждому из m уравнений, то говорят о системе уравнений. Для решения систем уравнений в Scilab применяют функцию fsolve(x0,f),где x0 – начальное приближение, f – функция, описывающая левую часть уравнения y(x) = 0.

28
Графическое решение системы показывает, что она имеет две пары корней:
Окружность и гипербола пересекаются в точках [0.8; 0.6] и [−0.8;−0.6]. Эти значения приблизительны. Для того чтобы уточнить их применим функцию
fsolve.
В качестве начального приближения иногда указывают 0, однако появляется вероятность упустить одну пару корней.

29
4. Задания к работе
1. Найти корни полиномов, выполнить с полиномами операции сложения, вычитания, умножения.

30 2. Решить систему уравнений.

31
ЛАБОРАТОРНАЯ РАБОТА №5
Тема: Обработка экспериментальных данных
Цель работы: Освоить некоторые методы обработки экспериментальных данных с помощью пакета SciLab.
1.Метод наименьших квадратов
Метод наименьших квадратов позволяет по экспериментальным данным подобрать такую аналитическую функцию, которая проходит настолько близко к экспериментальным точкам, насколько это возможно.
Пусть в результате эксперимента были получены некоторые данные, отображенные в виде таблицы. Требуется построить аналитическую зависимость, наиболее точно описывающую результаты эксперимента.
Идея метода наименьших квадратов заключается в том, что функцию Y =f(x, a
0
,
a
1
, . . . , a
k
) необходимо подобрать таким образом, чтобы сумма квадратов отклонений измеренных значений y
i
от расчетных Y
i
была наименьшей:
Задача сводится к определению коэффициентов a
i
. Для реализации этой задачи в Scilab предусмотрена функция [a,S]=datafit(F,z,с), где F – функция, параметры которой необходимо подобрать; z – матрица исходных данных; c – вектор начальных приближений; a – вектор коэффициентов; S – сумма квадратов отклонений измеренных значений от расчетных.
Рассмотрим использование функции datafit на примере:
Зависимость потребляемой из сети мощности от входного напряжения:

32
Методом наименьших квадратов подобрать зависимость вида P = a
1
+a
2
U
+a
3
U
2
+
a
4
U
3
Далее приведено решение задачи с комментариями:
Итак, в результате работы функции datafit была подобрана аналитическая зависимость вида
, а сумма квадратов отклонений измеренных значений от расчетных составила 0.529.
Построение графика подобранной зависимости:
Графическая интерпретация задачи:

33
2. Регрессия и корреляция
Одной из наиболее часто используемых в методе наименьших квадратов функций является прямая, описываемая уравнением вида y = a
1
+ a
2
x, которая называется линией регрессии y на x. Параметры a
1
и a
2
являются
коэффициентами регрессии. Показатель, характеризующий тесноту линейной связи между x и y, называемый коэффициентом корреляции, рассчитывается по формуле:
Значение коэффициента корреляции удовлетворяет соотношению
Чем меньше отличается абсолютная величина r от единицы, тем ближе к линии регрессии располагаются экспериментальные точки. Если коэффициент корреляции близок к нулю, то это означает, что между x и y отсутствует линейная связь, но может существовать другая, нелинейная, зависимость.
Аналогом коэффициента корреляции r для нелинейных зависимостей является
индекс корреляции, рассчитываемый по формуле:

34 где y – экспериментальные значения, Y – значения, найденные методом наименьших квадратов, M
y
– среднее значение y. Индекс корреляции по своему абсолютному значению колеблется в пределах от 0 до 1. При функциональной зависимости индекс корреляции равен 1. В случае отсутствии связи R = 0. Если коэффициент корреляции r является мерой тесноты связи только для линейной формы, то индекс корреляции R – и для линейной, и для криволинейной. При прямолинейной связи коэффициент корреляции по своей абсолютной величине равен индексу корреляции.
Для расчета коэффициентов регрессии предназначена функция: a=regress(x,y) где x и y – экспериментальные данные, a – вектор коэффициентов линии регрессии a
1
и a
2
Рассмотрим работу этой функции на примере:
Данные о растворимости NaNO3 в зависимости от температуры воды:
Решение задачи:

35
Построение графика экспериментальных данных и линии регрессии:
Графическое решение задачи:
Для расчета коэффициента корреляции в Scilab также предназначена встроенная функция a=corr(x,y), где x и y –– экспериментальные данные.
3. Линейная интерполяция функций
Простейшая задача интерполирования заключается в следующем. На отрезке
[a; b] заданы точки x
0
, x
1
, x
2
, . . . , x
n
(всего n+1 точка), которые называют
узлами интерполяции, и значения некоторой функции f(x) в этих точках:
Требуется построить интерполирующую функцию F(x), принадлежащую известному классу и принимающую в узлах интерполяции те же значения, что и f(x):
Для решения подобной задачи довольно часто используют сплайн- интерполяцию (от английского слова spline – рейка, линейка). Один из наиболее распространенных вариантов интерполяции – интерполяция кубическими сплайнами. Кроме того, существуют квадратичные и линейные сплайны. В Scilab для построения линейной интерполяции служит функция:
y=interpln(z,x), где z – матрица исходных драных; x – вектор абсцисс; y – вектор значений линейного сплайна в точка x.

36
Далее приведен пример использования функции interpln. Здесь линейный сплайн применяется для решения знакомой задачи 11.1 из первого раздела
(метод наименьших квадратов):
Графическое решение задачи показано на рисунке.
4. Построение кубического сплайна
Построение кубического сплайна состоит из двух этапов: вначале вычисляются коэффициенты сплайна с помощью функции koeff=splin(x,y), а затем рассчитывается значения интерполяционного полинома в точке y=interp(t,x,y,koeff).
Функция d=splin(x,y) имеет следующие параметры: x – строго возрастающий вектор, состоящий минимум из двух компонент; y – вектор того же формата, что и x; koeff – результат работы функции, коэффициенты кубического сплайна.
Для функции Y=interp(X,x,y,koeff) параметры x, y и koeff имеют те же значения, параметр X – это вектор абсцисс, а Y – вектор ординат, являющихся значениями кубического сплайна в точках x.

37
Исходные данные к задаче:
Задачу можно решить так:
Графическая часть задачи представлена на рисунке:
5. Задания к работе
1. В результате эксперимента была определена некоторая табличная зависимость. С помощью метода наименьших квадратов определить линию регрессии, рассчитать коэффициент корреляции, подобрать функциональную зависимость заданного вида, вычислить коэффициент регрессии. Определить суммарную ошибку.

38

39 2. Для вариантов 1-7 найти приближенное значение функции при заданном значении аргумента с помощью функции линейной интерполяции. Функция задана таблично.

40
Для вариантов 8-15 найти приближенное значение функции при заданном значении аргумента с помощью сплайн-интерполяции. Функция задана таблично.

41
Контрольные вопросы
1. Перечислите основные элементы окна приложения SciLab
2. Что называют командной строкой?
3. В чем отличие зоны просмотра и зоны редактирования?
4. Что называют сессией в SciLab?
5. Самостоятельно опробуйте все команды, предназначенные для работы с файлами, настройки среды, редактирования команд текущей сессии и получения справочной информации.
6. Что такой файл-сценарий?
7. Как открывать Редактор?
8. Для чего применяется точка с запятой после команды?
9. Как выполнить операторы файла-сценария?
10. Что такое текстовый комментарий и для чего он нужен?
11. Самостоятельно введите несколько простых математических выражений.
12. Как определяются переменные в SciLab?
13. Какие ограничения накладываются на левую и правую части оператора присваивания?
14. Какая команда применяется для очистки значения перменных?
15. Что произойдет если команда не содержит знака присваивания?
16. Запишите несколько системных переменных SciLab.
17. На какие два класса делятся функции в SciLab?
18. Запомните элементарные встроенные математические функции в SciLab.
19. Самостоятельно создайте и применените функцию, вычисляющую площадь треугольника со сторонами
a, b и c по формуле Герона: (2 способа).


написать администратору сайта