Функции наиболее часто применяемые для решения СЛАУ.
Основные функции для работы с матрицами рассмотрены в статье Массивы в Scilab.
Специальные функции для работы с матрицами рассмотрены в статье Специальные матричные функции в Scilab.
Ниже остановимся на функциях, которые могут полезны, в том числе, для решения задач линейной алгебры.
Характериститики матрицы
Найдём определитель матрицы A: функция det() в Scilab
A = [1 0 3; 2 7 1; 0 4 1];
d = det(A); Найдём ранг матрицы A: функция rank() в Scilab
A = [1 0 3; 2 7 1; 0 4 1];
r = rank(A); Найдём норму матрицы: функция norm(A,option) в Scilab
option - число или строка. Принимает значения:2 - вычисляет 2-ю норму матрицы (её наибольшее сингулярное значение).1 - вычисляет 1-ю норму матрицы (её наибольшая сумма в столбцах).'inf' - вычисляет бесконечную норму матрицы (её наибольшая сумма в строках).'fro' - вычисляет евклидову норму матрицы (корень из суммы квадратов всех элементов матрицы).
A = [1 0 3; 2 7 1; 0 4 1];
nrm2 = norm(A, 2);
nrm1 = norm(A, 1);
nrm_inf = norm(A, 'inf');
nrm_fro = norm(A, 'fro');Найдём число обусловленности матрицы A по 2-й норме: функция сond() в Scilab
A = [1 0 3; 2 7 1; 0 4 1];
с = сond(A); Функции для решения систем линейных уравненений
Найдём собственные значения и собственные вектора матрицы A: функция spec() в Scilab
A = [1 2; -1 4];
[V, z] = spec(A);
z =
-0.8944272 + 0.i -0.7071068 + 0.i
-0.4472136 + 0.i -0.7071068 + 0.i
V =
2. + 0.i 0. + 0.i
0. + 0.i 3. + 0.i Найдём обратную матрицу к A: функция inv() в Scilab
A = [1 0 3; 2 7 1; 0 4 1];
Ai = inv(A); Если появляется ошибка Задача вырождена, значит определитель исходной матрицы равен или близок к нулю
B = [1 2 3;1 4 5;1 6 7];
Bi = inv(B); Решаем СЛАУ A*x+b=0: функция linsolve(A,b) в Scilab
1) Решим систему линейных алгебраических уравнений привычного вида:
Для начала её нужно привести к виду, который принимает Scilab - перенести вектор свободных членов влево:
Теперь определим вид матрицы А и вектора b:
Зададим матрицу и вектор-столбец в Scilab и решим его силами полученную СЛАУ:
A = [2 1; 1 -2];
b = [-1; -3];
X = linsolve(A, b); Получим красивый ответ:
2) Если СЛАУ имеет бесконечное число решений, Scilab выведет только одно из них.
Решим систему линейных алгебраических уравнений вида:
Зададим матрицу и вектор-столбец в Scilab:
A = [1 -3; 2 -6];
b = [-1; -2];
X = linsolve(A, b); Получим одно из возможных решений:
3) Если возникает ошибка Конфликтующие линейные ограничения, значит система не имеет решений.
Решим систему линейных алгебраических уравнений вида:
Зададим матрицу и вектор-столбец в Scilab:
A = [1 -1;2 -2];
b = [1;-1];
X = linsolve(A, b); Получим ошибку: ВНИМАНИЕ: Конфликтующие линейные ограничения.
Чтобы убедиться, что в матрице системы есть ЛНЗ строки или столбцы, потребуется приведение матрицы к ступенчатому виду.
Приводим систему линейных уравнений к ступенчатому виду: функция rref(A) в Scilab
Приведём матрицу к треугольной форме методом Гаусса:
A = [1 0 3; 2 7 1; 0 4 1];
rref(A, b); Функции разложения матрицы
Треугольное разложение матрицы A = L*U: функция lu() в Scilab
A = [1 2 3; 2 7 1; 2 4 1];
[L, U] = lu(A)Разложение матрицы на ортогональную и верхне-треугольную A = Q*R: функция qr() в Scilab
A = [1 2 3; 2 7 1; 2 4 1];
[L, U] = lu(A)Основные функции для работы с матрицами рассмотрены в статье Массивы в Scilab.




