主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。

행렬과마방진

행렬 정보

MATLAB®환경에서행렬은수로구성된사각배열입니다。경우에따라1×1행렬과행과열이하나뿐인행렬에는각각스칼라와벡터라는특별한의미가부여됩니다。MATLAB에서는숫자형데이터와숫자형이아닌데이터를모두여러가지방법으로저장할수있지만,처음에는대개모든것을행렬로간주하는것이가장좋습니다。Matlab의연산은최대한자연스럽게실행되도록설계되어있습니다。다른프로그래밍언어에서는수를한번에하나씩다루지만MATLAB에서는전체행렬을쉽고빠르게다룰수있습니다。이설명서전반에걸쳐사용되는행렬의좋은예는독일의예술가이자아마추어수학자인알브레히트뒤러가(Albrecht Durer)르네상스시대에만든판화인멜랑콜리아我(melencoliai)에서확인할수있습니다。

이이미지는수학기호체계로가득채워져있으며,자세히살펴보면오른쪽위코너에행렬이보일것입니다。이행렬은마방진으로알려져있습니다。뒤러가(杜勒)살던시대의많은사람들은이행렬에신비한속성이있다고생각했습니다。그리고오늘날에도연구해볼만한매우흥미로운특성이있는것으로밝혀졌습니다。

행렬 입력

Matlab을시작하기위한가장좋은방법은행렬을다루는방식을배우는것입니다。Matlab을시작하고각각의예제를따라진행하십시오。

다양한방법으로matlab에행렬을입력할수있습니다。

  • 명시적으로소의목록을입력합니다。

  • 외부데이터파일에서행렬을불러옵니다。

  • 내장함수를사용하여행렬을생성합니다。

  • 자신만의고유한함수로행렬을만들어파일에저장합니다。

먼저뒤러(丢勒)의행렬을해당소목록으로입력하는것부터시작하겠습니다。다음과같은몇가지기본규칙만따르면됩니다。

  • 행의소를공백이나쉼로구분합니다。

  • 세미콜론()을사용하여각행의끝을나타냅니다。

  • 전체소목록을대괄호([])로둘러쌉니다。

뒤러(丢勒)의행렬을입력하려면해당행렬을명령창에입력하면됩니다。

A = [16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]

그러면matlab에방금입력한행렬이` ` `시됩니다。

A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

이행렬은뒤러(丢勒)가제작한판화의숫자와일치합니다。한번입력된행렬은matlab작업공간에자동으로저장됩니다。이행렬은간단히一个로나타낼수있습니다。작업공간에一个라는행렬이만들어졌으므로이제이행렬의어떤부분이그토록흥미로운지살펴보겠습니다。과연무엇때문에신비하다고하는것일까?

합,전치,대각화

이미마방진의특별한속성이해당요소의합을다양하게구하는방법과관련이있다는것을알아채셨을수도있습니다。즉,행이나열을따라합을구하거나두개의주대각선을따라합을구하면항상동일한수치를얻게된다는것입니다。Matlab을사용하여이를확해보겠습니다。사용해볼첫번째명령문은다음과같습니다。

sum ()

Matlab에서는다음과같은결과를반환합니다。

Ans = 34 34 34 34 34

출력변수를지정하지않으면matlab에서는回答를뜻하는변수를사용하여계산결과를저장합니다。이제一个를구성하는열의합이포함된행벡터를계산했습니다。마방진각열의합은34로모두동일합니다。

행의합은어떻게구할수있을까?MATLAB은기본적으로행렬의열을처리하도록설정되어있으므로,행의합을구하는한가지방법은먼저행렬을전치하고,전치된상태의행렬에서열합을계산한다음결과를전치하는것입니다。

Matlab에는두개의전치연산자가있습니다。아포스트로피연산자(예:一个“)는켤레복소수전치를수행합니다。또한행렬을주대각선을기준으로뒤집,고행렬의복소수요소를구성하는허수성분의기호를변경하기도합니다。점-아포스트로피연산자(一个。”)는복소수소의기호에향을주지않으면서전치를수행합니다。실수소만포함되어있는행렬의경우에는두연산자가모두동일한결과를반환합니다。

따라서다음을실행하면

一个“

다음과같은결과가생성됩니다。

Ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1

또한다음을실행하면

sum()的

행의합이포함된열벡터가생성됩니다。

Ans = 34 34 34 34 34

이외에도행렬을이중으로전치하지않고행의합을구하는방법으로는总和함수의차원수를사용하는방법이있습니다。

金额(2)

다음과같은결과가생성됩니다。

Ans = 34 34 34 34 34

주대각선에있는소의합은总和함수와诊断接头함수를사용하여구할수있습니다。

诊断接头(A)

다음과같은결과가생성됩니다。

Ans = 16 10 7 1

또한

sum(诊断接头(A))

다음과같은결과가생성됩니다。

Ans = 34

소위반대각선(反对角)이라고하는다른대각선은수학적으로그다지중요하지않으므로MATLAB에는이대각선을위해사전에만들어진함수가없습니다。하지만원래그래픽스에사용하도록만들어진함수fliplr을실행하면행렬이왼쪽에서오른쪽으로뒤집어집니다。

sum(diag(fliplr(A))) ans = 34

지금까지뒤러(杜勒)의판화에나와있는행렬이실제로마방진이라는것을확인했습니다。이과정에서몇개의matlab행렬연산을샘플로수행해보았습니다。다음섹션에서는계속해서이행렬을사용하여MATLAB의추가적인기능을설명하겠습니다。

魔法함수

Matlab에는거의모든크기의마방진을생성하는함수가내장되어있는데,魔法이라는이름의함수입니다。

B =魔术(4)B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

이행렬은뒤러(杜勒)의판화에나와있는것과거의동일하며,모든“마방진“의속성을지니고있습니다。유일한차이점은두가운데열의위치가서로뒤바뀌어있다는점입니다。

B의가운데두열의위치를서로바꿔서뒤러의행렬一个처럼만들수있습니다。B의각행에대해다음과같이1,3,2,4로지정된순서로열을재배열합니다。

A = b (:,[1 3 2 4])
A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

행렬 생성

Matlab에서는네개의함수를사용하여기본행렬을생성합니다。

0

모든소가0임

모든소가1임

兰德

임의의소가균등분포됨

randn

임의의소가정규분포됨

다음은몇가지예입니다。

Z =零(2,4)Z = 00 00 00 0 F = 5*ones(3,3) F = 55 55 55 55 5 N = fix(10*rand(1,10)) N = 92 6 4 8 8 7 4 08 4 R = randn(4,4) R = 0.6353 0.0860 -0.3210 -1.2316 -0.6014 -2.0046 1.2366 1.0556 0.5512 -0.4931 -0.6313 -0.1132 -1.0998 0.4620 -2.3252 0.3792