|
Возможна ли разработка приложения на Octave с GUI? |
Задачи линейной алгебры
5.9 Задачи линейной алгебры в символьных вычислениях
Основы работы с символьными переменными в Octave описаны в п. 2.7. Рассмотрим работу с матрицами, заданными в символьных переменных и выражениях. Для определения символьной матрицы служит функция
(число строк, число столбцов, элементы матрицы).
Например:
>>> symbols >>> a = sym( "a" ); % Определение символьных переменных >>> b = sym( "b" ); >>> c = sym( "c" ); >>> d = sym( "d" ); >>> Matr=ex_matrix( 1, 3, a, b, c ) % Матрица строка Matr = [ [ a, b, c ] ] >>> Matr=ex_matrix( 4, 1, a, b, c, d ) % Матрица столбец Matr = [ [ a ], [ b ], [ c ], [ d ] ] >>> Matr=ex_matrix( 2, 2, a, b, c, d ) % Матрица 2 на 2 Matr = [ [ a, b ], [ c, d ] ] >>> Matr=ex_matrix( 3, 3, a, 0, b, c, 1, 1, d, 0, 2 ) % Матрица 3 на 3 Matr = [ [ a, 0.0, b ], [ c, 1.0, 1.0 ], [ d, 0.0, 2.0 ] ]
Над символьными матрицами определены операции сложения, вычитания, умножения.
Пример 5.18. Выполнить действия над матрицами (листинг 5.19).
>>> symbols >>> a = sym ( "a" ); % Определение символьных переменных >>> b = sym ( "b" ); >>> c = sym ( "c" ); >>> d = sym ( "d" ); % Определение матриц >>> A=ex_matrix ( 2, 2, a, b, c, d ) A = [ [ a, b ], [ c, d ] ] >>> B=ex_matrix ( 2, 2, d, b, c, a ) B = [ [ d, b ], [ c, a ] ] >>> C=A+B C = [ [ d+a, 2 * b ], [ 2 * c, d+a ] ] >>> D=A _ B D = [[ -d+a, 0 ], [ 0, d-a ] ] >>> C_D ans = [ [ - ( d -a ) * ( d+a ), 2 * ( d -a ) * b ], [ - 2 * ( d -a ) * c, ( d-a ) * ( d+a ) ] ]Листинг 5.19. Действия над символьными матрицами (пример 5.18).
К сожалению над символьными матрицами не определены операции вычисления определителя и обратной матрицы.
Для решения системы линейных алгебраических уравнений можно воспользоваться функцией
.
Пример 5.19. Решить систему линейных алгебраических уравнений
относительно переменных x и y (листинг 5.20).
>>> x = sym( "x" );
>>> y = sym( "y" );
>>> a = sym( "a" );
>>> b = sym( "b" );
>>> c = sym( "c" );
>>> d = sym( "d" );
>>> sols = symlsolve({ a * x+b * y==c, x+y==d },{ x, y })
sols =
(
[ 1 ] = -(a-b ) ^(-1) * ( d *b-c )
[ 2 ] = -(a-b ) ^( -1) * ( c-d*a )
)
Листинг
5.20.
Решение СЛАУ в символьном виде (пример 5.19).
Пример 5.20. Решить систему линейных алгебраических уравнений (листинг 5.21)

>>> x1 = sym( "x1" );
>>> x2 = sym( "x2" );
>>> x3 = sym( "x3" );
>>> sols = symlsolve({ x1+2*x2+5*x3==-9,x1-x2+3*x3==2,3* x1 -6*x2
-x3==25},{x1, x2, x3 })
sols =
(
[ 1 ] =2.0
[ 2 ] = -3.0
[ 3 ] = -1.0
)
Листинг
5.21.
Решение СЛАУ используя symlsolve (пример 5.20).