Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

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

Покупка
Артикул: 789840.01.99
Доступ онлайн
500 ₽
В корзину
Рассмотрены возможности системы компьютерной математики Scilab в области решения задач вычислительной математики. Приведены теоретический материал, примеры решения задач линейной алгебры и вычислительной математики. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы. Предназначено для бакалавров, обучающихся по направлениям подготовки 18.03.01 «Химическая технология», 28.03.02 «Наноинженерия», 09.03.02 «Информационные системы и технологии», изучающих дисциплины «Информатика». «Вычислительная математика», «Прикладная математика». «Методы оптимизации». Подготовлено на кафедре информатики и прикладной математики.
Титов, А. Н. Решение задач линейной алгебры и прикладной математики в среде Scilab : учебно-методическое пособие / А. Н. Титов, Р. Ф. Тазиева. - Казань : КНИТУ, 2020. - 100 с. - ISBN 978-5-7882-2814-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1900112 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство науки и высшего образования Российской Федерации 

Федеральное государственное бюджетное 

образовательное учреждение высшего образования 

«Казанский национальный исследовательский 

технологический университет» 

 
 
 
 
 
 
 

А. Н. Титов, Р. Ф. Тазиева 

 
 

РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОЙ  

АЛГЕБРЫ И ПРИКЛАДНОЙ  

МАТЕМАТИКИ В СРЕДЕ SCILAB 

 

 

Учебно-методическое пособие 

 
 
 
 

 

 
 
 
 
 
 

 

 

Казань 

Издательство КНИТУ 

2020 

УДК 004.42:51(076) 
ББК 32.97:я7 

Т45

Печатается по решению редакционно-издательского совета 
Казанского национального исследовательского технологического университета 

Рецензенты: 
д-р техн. наук, проф. М. Х. Хайруллин 
канд. экон. наук О. С. Семичева 

Т45 

Титов А. Н. 
Решение задач линейной алгебры и прикладной математики 
в среде Scilab : учебно-методическое пособие / А. Н. Титов, 
Р. Ф. Тазиева; Минобрнауки России, Казан. нац. исслед. технол. 
ун-т. – Казань : Изд-во КНИТУ, 2020. – 100 с. 

ISBN 978-5-7882-2814-3

Рассмотрены возможности системы компьютерной математики Scilab в области решения задач вычислительной математики. Приведены теоретический материал, примеры решения задач линейной алгебры и вычислительной математики. Для оценки уровня усвоения студентами пройденного материала предложены варианты заданий для самостоятельной работы. 
Предназначено для бакалавров, обучающихся по направлениям подготовки 18.03.01 «Химическая технология», 28.03.02 «Наноинженерия», 09.03.02 
«Информационные системы и технологии», изучающих дисциплины «Информатика», «Вычислительная математика», «Прикладная математика», «Методы 
оптимизации». 
Подготовлено на кафедре информатики и прикладной математики. 

ISBN 978-5-7882-2814-3
© Титов А. Н., Тазиева Р. Ф., 2020
© Казанский национальный исследовательский 

технологический университет, 2020

УДК 004.42:51(076) 
ББК 32.97:я7

О Г Л А В Л Е Н И Е

ВВЕДЕНИЕ ................................................................................................ 5 

1. РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОЙ АЛГЕБРЫ В СРЕДЕ SCILAB .... 7 

1.1. Простейшие операции с элементами массивов .......................... 7 

1.2. Матричные операции линейной алгебры ................................... 9 

1.3. Решение систем линейных уравнений в Scilab ........................ 16 

Задания для самостоятельной работы ........................................... 17 

2. РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ УРАВНЕНИЙ

В SCILAB ................................................................................................. 19 

2.1. Вычисление корней полинома ................................................... 19 

2.2. Решение трансцендентных уравнений в Scilab ........................ 20 

Задания для самостоятельной работы ........................................... 25 

3. АППРОКСИМАЦИЯ .......................................................................... 26 

3.1. Меры погрешности аппроксимации .......................................... 26 

3.2. Нахождение коэффициентов cj при точечной 

аппроксимации методом наименьших квадратов ........................... 27 

3.3. Решение задачи аппроксимации в Scilab. Функция datafit ..... 29 

3.4. Неполиномиальная регрессия .................................................... 34 

3.5. Проверка адекватности модели объекту исследования .......... 36 

Задания для самостоятельной работы ........................................... 40 

4. ИНТЕРПОЛЯЦИЯ ............................................................................... 42 

4.1. Линейная интерполяция ............................................................. 43 

4.1.1. Функция interpln ................................................................ 43 

4.1.2. Функция linear_interpn ...................................................... 44 

4.2. Построение интерполяционных полиномов в Scilab ............... 52 

4.2.1. Решение задачи интерполяции с помощью функции 

datafit ............................................................................................ 52 

4.2.2. Решение задачи интерполяции без использования 

функции datafit ............................................................................. 54 

4.3. Интерполяция сплайнами ........................................................... 57 

4.3.1. Сплайн-интерполяция в Scilab ......................................... 59 

4.3.2. Специальные функции Scilab для сплайн- 

интерполяции .............................................................................. 61 

4.3.3. Нахождение уравнений сплайнов .................................... 68 

4.3.4. Функция smooth ................................................................. 75 

4.4. Обратная интерполяция .............................................................. 78 

Задания для самостоятельной работы ........................................... 83 

5. ОПТИМИЗАЦИЯ ................................................................................ 84 

5.1. Решение задач безусловной оптимизации. Функция optim .... 84 

5.2. Решение задач линейного программирования. Функция 

karmarkar ............................................................................................. 89 

5.3. Решение задач квадратичной оптимизации. Функция qld ...... 93 

Задания для самостоятельной работы ........................................... 97 

ЛИТЕРАТУРА ......................................................................................... 98 

ВВЕДЕНИЕ 

Система компьютерной математики Scilab в настоящее время получила достаточно широкое распространение в вузах ввиду ее очевидных преимуществ перед своими более мощными и дорогостоящими 
аналогами: Matlab, Mathcad и др. Основными преимуществам системы 
являются, прежде всего, ее бесплатность, сравнительно небольшой 
объем, относительная простота в использовании. Появилось и достаточное количество публикаций о возможностях системы и принципах 
работы с ней. Из числа известных авторам публикаций на данную тему 
следует отметить работы [1‒4]. Все они, как правило, содержат материал по широкому кругу вопросов применения пакета. Авторов данного учебно-методического пособия, прежде всего, интересовали основные возможности системы в области численных методов и решения 
задач линейной алгебры. Несмотря на имеющиеся в литературе примеры решения указанных задач, многие полезные функции системы 
остались не рассмотренными. Не облегчает понимание и имеющаяся 
в справке Scilab информация на английском языке о работе таких функций, как, например, interpln, linear_interpn, datafit, interp, smooth, qld.  
В известных авторам источниках не указаны частые ошибки, 
к которым могут привести неправильное применение функций, например неудачный выбор начального приближения при решении уравнений или построении аппроксимирующих кривых. 
Авторы поставили перед собой цель: собрать имеющуюся в литературе информацию по указанным вопросам и издать ее в виде отдельного пособия, дополнив его не переведенной информацией из справочной системы Scilab (версия 6.0.2) на эту тему. Авторы надеются облегчить восприятие изложенного в справочном разделе системы материала, 
снабдив пособие большим количеством примеров и пояснений к ним. 
Пособие включает в себя пять разделов. В первом разделе рассматриваются вопросы, связанные с операциями над матрицами: 
нахождение определителей матриц, обратных матриц, векторов собственных значений и т. д., а также рассмотрены способы решения систем линейных уравнений в среде Scilab. Во втором разделе показано, 
как решаются алгебраические, трансцендентные уравнения и системы 
нелинейных уравнений с помощью функций roots и fsolve. В третьем 
разделе рассмотрены способы решения задач одномерной аппроксимации полиномами и другими функциями. В четвертой части приведено 

большое количество примеров решения задач интерполяции полиномами и кубическими сплайнами (функции interpln, linear_interpn, datafit, 
interp и smooth). В пятой главе рассмотрены возможности системы 
Scilab в области одномерной и многомерной оптимизации: решение задач одномерной и многомерной безусловной оптимизации (функция 
opt), решение задач линейного программирования (функция karmarkar), 
решение задач квадратичного программирования (функция qld).  
Материал, изложенный в пособии, использовался при проведении лабораторных занятий по информатике, обработке экспериментальных данных, теории вероятностей и математической статистике, 
вычислительной и прикладной математике. При изложении материала 
предполагалось, что читатель имеет базовые представления о работе 
в среде Scilab. Используемая в пособии версия среды Scilab 6.0.2. 

1. РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОЙ АЛГЕБРЫ В СРЕДЕ
SCILAB

1.1. Простейшие операции с элементами массивов

В этом разделе будут рассмотрены вопросы работы с элементами 
одномерных и двумерных массивов – векторами и матрицами. 
Задать вектор в Scilab можно следующим образом: b=[2 4 -5 6]. 
При обращении к элементам вектора нужно учитывать, что нумерация 
всегда начинается с 1, т. е. b(1) – это 2, b(3) – это -5 и т. д. Элементы 
вектора (как и элементы строки матрицы) разделяются запятой или пробелом. Количество элементов вектора b можно определить так: 
n=length(b). В приведенном примере n=4. Запись c=[2;4;-5;6] означает 
вектор-столбец. При решении некоторых задач (например, при построении графиков функций, решении систем линейных уравнений, выводе 
на печать результатов вычислений) необходимо следить за правильностью использования векторов: нужен ли нам вектор-столбец или вектор-строка. В противном случае система может выдать сообщение об 
ошибке. Запись b' означает транспонирование вектора: вектор-строка 
становится вектором-столбцом и наоборот. 
Элементы матрицы можно задать так: а=[2 1 4;5 -1 5] или в две 
строки: 
a=[2 1 4 
  5 -1 5]; 
Оба способа задания матрицы эквивалентны и означают ввод матрицы 

    

В системе Scilab элементы матрицы принято записывать следующим образом: a(3, 7), a(n, m). Первое число в скобках – это номер 
строки, второе – номер столбца. Для того чтобы определить количество 
строк (n) и столбцов (m) матрицы a, можно воспользоваться функцией 
size: [n, m]=size(a).  Значение функции length применительно к матрице 
даст общее число ее элементов, т. е. n·m. 
Чтобы возвести все элементы приведенной выше матрицы, 
например, в квадрат, нужно записать: a.^2. Результатом будет матрица 
4.
1.   16.
25. 1.   25.

  2. 1 .  4.
 5. 1 . 5. .
a
æ
ö
= ç
÷
è
ø

При попытке сделать это так: a^2, будет выдано сообщение об 
ошибке: «Неверный размер входного параметра №1: ожидалась квадратная матрица». 
Дело в том, что оператор «^» применительно к матрице в этом 
примере означает умножение матрицы на себя. В этом случае матрица 
должна быть квадратной. Выражение a*b означает умножение массива 
a на массив b. Если а и b – матрицы, количество строк первой матрицы 
должно равняться количеству столбцов второй. Пример: 
clc 
a=[2 4 6;-1 4 -2];d=[2 3;-1 2;6,1];c=a*d;disp(c,'c=') 
Результат: 
c= 
36. 20.
-18.   3.

Найдено произведение матриц: 
 

Ниже приведены некоторые специальные операторы для работы 
с матрицами: 
a(: , j) – j-й столбец матрицы a; 
a(i , :) – i-я строка матрицы a; 
a(j : k) – элементы aj, aj+1, …, ak; 
a( : ) – записывает все элементы массива a в виде столбца; 
a(m , :) =[ ] – удаляет из матрицы строку m; 
a' – транспонированная матрица а; 
prod(a) – произведение элементов массива; 
prod(a, dim) – произведение элементов столбцов (dim=1) или 
строк (dim=2) ; 
sum(a) – сумма элементов массива – вектора или матрицы; 
sum(a, dim) – сумма элементов столбцов (dim=1) или строк 
(dim=2). 
Пример применения приведенных выше операторов: 
a=[2 3 6;3 1 -4]; 
d=a';c=prod(a);e=prod(a, 2);f=sum(a);  
g=sum(a, 1); u=a(: , 2);b=a(1 , :); 
s=a(2 : 5);t=a( : );a(1 , :)=[ ]; disp(d,'d=',c,'c=',e,'e=',f,'f=') 
disp(g,'g=',u,'u=',b,'b=',s,'s=',t,'t=',a,'a=') 
f=   11. 

2
3
2  4   6
36
20
1 2
.
1 4
2
18 3
6
1

æ
ö
æ
ö
æ
ö
ç
÷
× =
ç
÷
ç
÷
ç
÷
è
ø
è
ø
ç
÷
è
ø

e=   36. 
-12.
c=  -432.
d=
2. 3.
3. 1.
6. -4.
 a=   3.   1.  -4. 
 t= 2   3.   3.   1.   6.  -4. 
 s=   3.   3.   1.   6. 
 b=   2.   3.   6. 
 u= 
   3. 
   1. 
 g=   5.   4.   2. 
Примечание: для экономии места значения переменных t и s 
в приведенных ответах записаны в виде строки, хотя результатом являются столбцы. 

1.2. Матричные операции линейной алгебры 

Покажем, как в Scilab можно вычислять определители матриц, их 
ранг, норму, обратные матрицы и совершать другие преобразования. 
Для этого предназначены следующие функции: 
o det(a) – возвращает определитель квадратной матрицы а;
o rank(a) – возвращает ранг матрицы;
o inv(a) – возвращает матрицу, обратную матрице а;
o norm(a) – возвращает норму матрицы а;
o cond(a) – возвращает число обусловленности матрицы а по второй
норме. Эквивалентно выражению norm(a)*norm(a^(-1)); 
o spec(a) – возвращает вектор собственных значений матрицы а.
Пример 1.1. Вычислить определитель матрицы d, ранг матрицы c,
матрицу, обратную к матрице x. 

 

2  9 9 4 
1
2
3
0
3
2
1
2 -3 12 8
 d
,
2
3
8
7 ,
1
0
2 .
4 8 3 -5
1 1
1
1
4
1
3
1 2 6 4

c
x

æ
ö
æ
ö
æ
ö
ç
÷
ç
÷
ç
÷
ç
÷
=
=
=
ç
÷
ç
÷
ç
÷
ç
÷
ç
÷
ç
÷
è
ø
è
ø
è
ø

Решение. 
В командном окне в строках ввода набираем: 
--> d=[2 9 9 4;  2 -3 12 8;  4 8 3 -5;  1 2 6 4]; 
--> c=[1, -2, -3, 0;  2, 3, 8, 7;  -1, 1, 1, -1]; 
-->x=[3 2 1;  1 0 2;  4 1 3]; 
--> x1=det(d),  x2=rank(c),  x3=inv(x) 
В строках вывода получаем: 
x1 =       147. 
x2 =        2. 
x3 =   -0.4    -1.    0.8 
1.
1.     -1.
0.2     1.    -0.4
Если необходимо преобразовать исходную матрицу в матрицу с 
другим количеством строк и столбцов, используют функцию matrix.
Входные и выходные матрицы должны иметь одинаковое количество 
элементов. Преобразуем, например, матрицу с размерности 3×4 в матрицу размерности 6×2: 
--> c=[1, -2, -3, 0;  2, 3, 8, 7;  -1, 1, 1, -1];matrix(c,6,2) 
 ans  = 
1. -3.
2. 8.
-1.   1.
-2.   0.
3. 7.
1. -1.
Для создания матрицы размерности nxm, состоящей из единиц, 
используют функцию ones: ones(n,m). Если мы хотим создать единичную матрицу e того же размера, что и матрица с, можно записать: 
e=ones(c): 
--> e=ones(c) 
 e  = 
1. 1.   1.   1.
1. 1.   1.   1.
1. 1.   1.   1.
--> e=ones(2,2) 
 e  = 
1. 1.
1. 1.

Доступ онлайн
500 ₽
В корзину