A = [1, 2, 3; 4, 5. 6]
        B = [3, 0, 1; -1, 2, -2]

로 주어진 두 2x3 행렬 A, B 에 대하여

        2A, 3B. 2A + 3B. 2A - 3B,
        A의 첫째 행, B의 둘째 행, A의 첫째 행과 B의 둘째 행의 3배의 합,
        A의 첫째 행 첫째 열 요소, B의 둘째 행 셋째 열 요소, 
        A의 첫째 행 첫째 열 요소의 5배와 B의 둘째 행 셋째 열 요소의 차

를 각각 구하는 방법을 여러 가지 도구

        Mathematica, Maxima, Octave, Scipy

들을 각각 이용하여 알아본다.
,


* Mathematica 를 이용하여 행렬 계산하기 (스칼라배, 합, 차 등)




* Maxima 를 이용하여 행렬 계산하기 (스칼라배, 합, 차 등)





* Octave 를 이용하여 행렬 계산하기 (스칼라배, 합, 차 등)
** Octave 소스
A = [1, 2, 3; 4, 5. 6]
B = [3, 0, 1; -1, 2, -2]
2*A, 3*B, 2*A + 3*B, 2*A - 3*B
A(1,:), 3*B(2,:), A(1,:)+3*B(2,:)
5*A(1,1), B(2,3), 5*A(1,1)-B(2,3)


** Octave 명령 창에서 행렬 A, B 생성하기



** Octave 명령 창에서 기본적인 행렬 계산 (스칼라배, 합, 차 등)




* Python 2.7 & Scipy를 이용하여 행렬 계산하기 (스칼라배, 합, 차 등)
** 파이썬 소스
import numpy as np
import scipy as sp
from scipy import *
A = mat( "[1, 2, 3; 4, 5, 6]" )
B = mat( "[3, 0, 1; -1, 2, 3]" )
A; B
2*A; 3*B; 2*A + 3*B; 2*A - 3*B
A[0]; 3*B[1]; A[0] + 3*B[1]
5*A[0,0]; B[1, 2]; 5*A[0,0] - B[1, 2


** 위의 소스를 파일로 저장시키지 않고, Python 인터프리터 실행 창에서 한 줄씩 입력한다.




* Lua 5.1.4 & LuaMatrix 0.2.9 를 이용하여 행렬 계산하기 (스칼라배, 합, 차 등)
   (참고1: LuaMatrix 는 http://lua-users.org/wiki/LuaMatrix 에서 구할 수 있음)
   (참고2: http://numlua.luaforge.net/ 에서 numlua 패키지를 받아서 설치해도 된다.)
**  Lua 소스

--// Filename: TestMatrix-01.lua
-- //                Using the matrix class given at http://lua-users.org/wiki/LuaMatrix
-- //  Execute:  lua TestMatrix-01.lua

local matrix = require "lua_matrix"

function printMatrix(msg, a)
    if type(a) == "number" then
        print( msg .. a )
        return
    end
    if type(msg) == "string" and #(msg) > 0 then
        print( msg .. "[ ")
    end
    print( a:tostring() .. " ]" )
end

function matrix.getRow(a, k)
    local n = #a[1]
    return matrix.subm(a, k, 1, k, n)
end

function matrix.row(a, k)
    local n = #a[1]
    return matrix.subm(a, k, 1, k, n)
end

function matrix.col(a, k)
    local n = #a
    return matrix.subm(a, 1, k, n, k)
end

local A, B, C, D

-- instantiate of matrices
A = matrix:new({{1, 2, 3}, {4, 5, 6}})
printMatrix( "A = ", A )
B = matrix:new({{3, 0, 1}, {1, 2, -2}})
printMatrix( "B = ", B )
printMatrix( "B + B = ", B + B )
printMatrix( "B - B = ", B - B )
printMatrix( "B:transpose() * B = ", B:transpose() * B )
printMatrix( "3 * B = ", 3 * B )
printMatrix( "0.1 * B = ", 0.1 * B )
local x, y = matrix.size(B)
print( "matrix.size(B) = ".. x .. "x" .. y)

C = matrix.copy( 2*B )
printMatrix( "C = ", C )
C = (3*B):copy()
printMatrix( "C = ", C )

printMatrix( "2*A = ", 2*A )
printMatrix( "3*B = ", 3*B )
printMatrix( "2*A + 3*B = ", 2*A + 3*B )
printMatrix( "2*A - 3*B = ", 2*A - 3*B )
print( "B:getelement(2,3) = ".. B:getelement(2,3))
print( "More simply, B[2][3] = ".. B[2][3])
print( "5*A:getelement(1,1) - B:getelement(2,3) = ".. (5*A:getelement(1,1) - B:getelement(2,3)))
print( "More simply, Simply, *A[1][1] - B[2][3] = ".. (5*A[1][1] - B[2][3]))
printMatrix( "matrix.subm(A, 1, 1, 1, 3) = ", matrix.subm(A, 1, 1, 1, 3))
printMatrix( "matrix.subm(B, 2, 1, 2, 3) = ", matrix.subm(B, 2, 1, 2, 3))
printMatrix( "matrix.row(B, 2) = ", matrix.row(B, 2))
printMatrix( "3*matrix.getRow(B, 2) = ", 3*matrix.getRow(B, 2))
printMatrix( "More simply, 3*matrix.row(B, 2) = ", 3*matrix.row(B, 2))
printMatrix( "matrix.col(B, 2) = ", matrix.col(B, 2))
printMatrix( "B/2 = ", B/2 )
printMatrix( "1/2*B = ", 1/2*B )

--[[
Execute Result:
A = [
1       2       3
4       5       6 ]
B = [
3       0       1
1       2       -2 ]
B + B = [
6       0       2
2       4       -4 ]
B - B = [
0       0       0
0       0       0 ]
B:transpose() * B = [
10      2       1
2       4       -4
1       -4      5 ]
3 * B = [
9       0       3
3       6       -6 ]
0.1 * B = [
0.3     0       0.1
0.1     0.2     -0.2 ]
matrix.size(B) = 2x3
C = [
6       0       2
2       4       -4 ]
C = [
9       0       3
3       6       -6 ]
2*A = [
2       4       6
8       10      12 ]
3*B = [
9       0       3
3       6       -6 ]
2*A + 3*B = [
11      4       9
11      16      6 ]
2*A - 3*B = [
-7      4       3
5       4       18 ]
B:getelement(2,3) = -2
More simply, B[2][3] = -2
5*A:getelement(1,1) - B:getelement(2,3) = 7
More simply, Simply, *A[1][1] - B[2][3] = 7
matrix.subm(A, 1, 1, 1, 3) = [
1       2       3 ]
matrix.subm(B, 2, 1, 2, 3) = [
1       2       -2 ]
matrix.row(B, 2) = [
1       2       -2 ]
3*matrix.getRow(B, 2) = [
3       6       -6 ]
More simply, 3*matrix.row(B, 2) = [
3       6       -6 ]
matrix.col(B, 2) = [
0
2 ]
B/2 = [
1.5     0       0.5
0.5     1       -1 ]
1/2*B = [
1.5     0       0.5
0.5     1       -1 ]
--]]





 

Posted by Scripter

댓글을 달아 주세요