3D 프린터와 이변량 정규분포

3D 프린터

라즈베리파이 기반 회로질의 가장 어려운점은 케이싱을 하는게 매우 어렵다는 것이다. 그래서 다이소 같은 곳에 가서 여성분들 잡동사니 넣어두는 아크릴 상자를 만든 회로의 케이스로 쓰던지 혹은 초등학생 필통에 구멍을 뚫어서 만들곤 했다. 아크릴 상자의 경우 적당한 구멍을 뚫기 위해 시도를 하다가 상자가 깨지는 경우가 99%였고, 초딩 필통도 종이 필통이 아니면 엄두도 나지 않는 작업이었다.

 

851312867_2391981967945975441
뭐 그나마 위와 같은 케이싱은 절반의 성공이다.

매번 케이스에 대한 고민을 하다  약 한달 동안의 고민 끝에 3D 프린터 구매를 했다.

이런 저런 필요 작업들을 직접 모델링 하다가 문득 평면상으로밖에 본적이 없는 이변량 정규분포를 직접 만져보고 싶다는 생각이 들었다. ㅎㅎ

 

이변량 정규분포

$\mu =[\mu _1,\mu _2]^ T$이고 $\Sigma = \begin{bmatrix} \sigma _{11} & \sigma _{12} \
\sigma _{21} & \sigma _{22} \end{bmatrix}$인 이변량 정규분포의 밀도함수는 아래와 같다.

\[p(z_1,z_2) =\frac{1}{2 \pi \sigma _1 \sigma _2 \sqrt
{1-\rho ^2}} \exp \left[ -\frac{1}{2(1-\rho ^2)} \ \left[
\left(\frac{z_1-\mu _1}{\sigma _1}\right)^2 -2 \rho \left(
\frac{z_1-\mu _1}{\sigma _1} \right) \left( \frac{z_2-\mu
_2}{\sigma _2} \right)+ \left(\frac{z_2-\mu _2}{\sigma
_2}\right)^2 \right] \right]\]

위 식에 따라서 $\mu =[0,0]$이고 $\Sigma=[1.5,0.9;0.9,2.0]$인 이변량 정규 분포를 3D 형태로 그리면 아래의 R코드와 같다.

library(mvtnorm)

x<-y<-seq(-4,4,len=40) 

g<-function(a,b) { 
  dmvnorm(x=cbind(a,b),sigma=matrix(c(1.5,0.9,0.9,2.0), ncol = 2)) 
} 
z<-outer(x,y,g) 
persp(x,y,z,  theta = 30, phi = 30, col = "lightblue") 

plot of chunk unnamed-chunk-1

이렇게 구해진 3차원 평면을 r2stl 패키지로 stl 파일로 변환해 cura로 슬라이싱을 하고 3D 프린터로 출력한다.

library(r2stl)
r2stl(x,y,z, filename = 'bivariated_normal.stl')

수분간의 프린팅 결과 아래와 같은 실사 이변량 정규분포를 얻을 수 있었다.

851322772_4280155288463990334

 

851331113_15601067541784371701

 

앞으로 종종 재미난 분포들은 이렇게 출력을 해봐서 직접 만져볼 생각이다. ㅋ

 

 

 

CC BY-NC 4.0 3D 프린터와 이변량 정규분포 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.