'2011/06/26'에 해당되는 글 3건

  1. 2011.06.26 Inverse Matrices
  2. 2011.06.26 4장 분석
  3. 2011.06.26 3장 Gate-Level Minimization
공부/선형대수2011. 6. 26. 23:16


Block multiplication
묶어서 곱하는 경우. 묶은 걸 요소하나로 보면 요소 하나 일때 곱셈이랑 같다. 자세한건 위키 참고.

출처 : 위키피디아 

Block matrix multiplication

A block partitioned matrix product can be formed involving operations only on the submatrices. Given an (m \times p) matrix \mathbf{A} with q row partitions and s column partitions


\mathbf{A} = \begin{bmatrix}
\mathbf{A}_{11} & \mathbf{A}_{12} & \cdots &\mathbf{A}_{1s}\\
\mathbf{A}_{21} & \mathbf{A}_{22} & \cdots &\mathbf{A}_{2s}\\
\vdots          & \vdots          & \ddots &\vdots \\
\mathbf{A}_{q1} & \mathbf{A}_{q2} & \cdots &\mathbf{A}_{qs}\end{bmatrix}

and a (p\times n) matrix \mathbf{B} with s row partitions and r column partitions


\mathbf{B} = \begin{bmatrix}
\mathbf{B}_{11} & \mathbf{B}_{12} & \cdots &\mathbf{B}_{1r}\\
\mathbf{B}_{21} & \mathbf{B}_{22} & \cdots &\mathbf{B}_{2r}\\
\vdots          & \vdots          & \ddots &\vdots \\
\mathbf{B}_{s1} & \mathbf{B}_{s2} & \cdots &\mathbf{B}_{sr}\end{bmatrix},

the matrix product


\mathbf{C}=\mathbf{A}\mathbf{B}

can be formed blockwise, yielding \mathbf{C} as an (m\times n) matrix with q row partitions and r column partitions. The matrices in your matrix \mathbf{C} are calculated by multiplying while you multiply:


\mathbf{C}_{\alpha \beta} = \sum^s_{\gamma=1}\mathbf{A}_{\alpha \gamma}\mathbf{B}_{\gamma \beta}.

 
Inverse = non singular
No Inverse = singular

즉, 역행렬을 가지면 정상이고 못가지면 이상한거란다. 무슨 기준이지?ㅋㅋ
아무튼 역행렬을 못가지는 행렬이 있다.
어떨때 못가질까? 첫번째는 고딩때 배웠던 determinant를 이용하는 것. 2x2일 때 ad-bc = 0 이면 역행렬이 없다.
두번째는 A 가 (a11, a12, a21, a22)가 (1,3,2,6)이라고 하자. determinant로는 0이 나오므로 역행렬을 못가진다. 진짜 그럴까?
얘가 역행렬을 가진다고 치자. 그러면 Ax = I 인 x가 있을 것이다. 자, column 벡터를 생각해보자. (1,3)이랑 (2,6) 벡터로 (1,0)이나 (0,1)을 표현할 수 있나? 없다. 따라서 A는 역행렬이 없다. column 벡터를 보면 역행렬을 왜 가질 수 없는지 알 수 있다.
마지막 세번째는 Ax = 0 에서 0이 아닌 vector x가 있으면 A는 역행렬을 못가진다. 이유는 뭘까? A의 역행렬을 가진다고 쳐보자. 그럼 Ax = 0 에서 양변에 A^-1 해주면 x = 0이다. 0이 아닌 벡터 x가 있다고 했는데 0이 나와버렸으니 모순이다.

The Gauss-Jordan Method
역행렬을 구하는 방법이다.
가우스 조단 방법을 모른다고 하고 2x2 역행렬을 구한다고 하면
AA^-1 = I 여기서 A^-1을 (a,b,c,d)로 놓고 A에서 A^-1의 각 컬럼을 곱하면 
식이 두개가 나온다. 하나는 결과가 (1,0) ,나머지는 (0,1)인 행렬식 두개. 두 식으로부터 역행렬을 구할 수 있다.
여기서 가우스 조단 방법은 두 식을 한번에 계산해버리는 거다.
일반화하면 가우스 조단 방법은 nxn 역행렬을 구할 때 n개 식을 한번에 하는 것임.
가우스 조단 방법을 적용하면 [A I] 가 [I A^-1]로 변하고 따라서 A^-1를 구할 수 있다. 즉, A를 I로 만들어주면 I는 A^-1가 된다. 그런데 왜 I가 A의 역행렬이 될까?
E[A I] -> [I ??]
A에 E를 곱하여 I가 되었다. 따라서 E는 A의 역행렬이다. '??'는 E에 I를 곱한 값이고 E x I = E다. 따라서 '??'는 A의 역행렬.
여기서 앞에서 배웠던 블럭 곱하기가 사용된 걸 체크! [A I]는 A와 I로 파티션이 나누어져 있다.

'공부 > 선형대수' 카테고리의 다른 글

Elimination with Matrices  (1) 2011.06.24
1장 Matrices and Gaussian Elimination (1)  (0) 2011.06.22


Posted by skyjumps
공부/객체지향2011. 6. 26. 21:18


분석을 통해서 시스템이 실세계에서 잘 동작하도록.
시스템에서 문제를 찾고 해결방안을 찾는다.
유스케이스는 고객, 관리자, 동료개발자들에게 시스템을 설명하는데 쓰인다. 그래서 쉬운방식으로 작성되어야 하고
이런 유스케이스들과 분석을 통해서 실세계에서 어떻게 동작하는지 그들에게 보여준다.
분석을 통해서 문제를 발견하면 유스케이스에서 필요한 부분을 수정한다.

다시한번 위임 설명.
위임을 통해 프로그램을 느슨하게 결합시킬 수 있다. 객체들이 독립적으로 동작함을 의미. 객체의 변화가 다른 객체들에게 영향을 미치지 않도록 해준다.
 
분석을 통해 유스케이스를 잘 만든 다음 본문 분석을 통해 무엇을 클래스로 할 것인지에 대해 대략적인 방향을 잡는다. 본문 분석할 때 명사들은 대개 클래스이고 동사는 객체의 메소드이다. 대개 시스템 외부에 있는 명사들은 클래스가 되지 않는다.

클래스다이어그램
연관 - 한 클래스가 다른 클래스와 참조, 확장, 상속 등에 의해 연관되어 있음을 의미. 연관에 이용되는 속성은 목적클래스쪽 화살표위에 표시하며 클래스다이어그램에서 클래서 속성 넣는 곳에는 표시 안한다.
다중도 - 속성이 목적클래스 객체를 몇개까지 가질 수 있는지. '*' 라고 표시하면 무제한

클래스다이어그램는 시스템의 개요을 다른 프로그래머들에게 보여주기 위한 것이다. 타입정보를 정확히 알려주지 않고 메소드를 어떻게 작성해야하는지도 알려주지 않는다. 시스템의 전체 그림을 한눈에 보여준다. 

'공부 > 객체지향' 카테고리의 다른 글

6장 큰문제 해결하기  (0) 2011.06.29
5장 좋은디자인 = 유연한 소프트웨어  (0) 2011.06.28
3 요구사항 변경  (0) 2011.06.25
2장 요구사항 수집 (유스케이스)  (0) 2011.06.24
1장  (0) 2011.06.23


Posted by skyjumps
공부/논리설계2011. 6. 26. 01:28


카르노맵 - Boolean function을 최소화 하기 위해 사용하는 방식
카르노맵 만드는 법
http://blog.naver.com/PostView.nhn?blogId=nsesibong&logNo=60028521258&viewDate=&currentPage=1&listtype=0

카르노맵 특징
2의 지수승으로 묶는다.
묶는 방법에 따라 식이 여러개 나온다.
서로 인접하도록 만든다. ( 00, 01, 10, 11 이런식으로 비트가 하나만 바뀌도록)
항이 4개일때는 칸이 16X16인 맵이 2개 나온다. 두개를 따로 묶는 것으로 끝나지 않고 두 개가 겹쳤을 때 인접한지도 고려한다.

카르노맵을 Sum of product 방식으로 나타내었는데
product of sum의 방식으로 나타내려면 맵에서 0인 것을 묶으면 F'이 구해지고 이것을 complement를 해준다.

Don't care conditions
0이 되던지 1이 되던지 상관없는 minterms. 예를 들면 4bit binary code에서 0에서 9까지 표현하려고 하면 16개 중에서 6개는 필요가 없다. 얘네들을 이용해서 boolean function을 더 최소화할 수 있다. 1이라고 생각해도 되고 0이라고 생각해도 된다. 어차피 얘네들 output은 안쓰이니까 말이다. 최소화할 때 박스 더 크게 만들 수 있도록 도와준다.

AND, OR 회로는 NAND, NOR 회로로 바꿀 수 있다.
실제로 NAND와 NOR로 전기 컴포넌트를 더 만들기 쉽고, IC digital logic families의 basic gate이다.

NAND-AND 회로는 AND-NOR 회로로 서로 바꿀 수 있고
NOR-OR 회로는 OR-NAND 회로로 서로 바꿀 수 있다.

Exclusive-or function
Odd function이다. 즉, 1인 항이 홀수개이면 함수값이 1이다.
카르노맵을 그려보면 1의 갯수가 홀수개인 minterms만 1이 됨을 볼 수 있다.
이런 성질은 에러체크에 쓰인다. 전송중에 데이터가 손상되었다던지 해서 에러가 발생했을 경우 전송 전 패리티비트(1의 갯수가 홀수냐 짝수냐에 따라 값이 달라지는비트, 홀수패리티비트일때는 1의 갯수가 홀수일 때 1이다.)가 전송 후 패리티비트와 같은지 비교를 통해 에러의 발생여부를 알 수 있다. 
 

'공부 > 논리설계' 카테고리의 다른 글

4장 Combinational Logic  (0) 2011.06.28
2장 Boolean Algebra and Logic gate  (0) 2011.06.24
1장 Binary Systems  (0) 2011.06.22


Posted by skyjumps