프로그래밍:julia

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
프로그래밍:julia [2026/03/24 16:13] – created admin프로그래밍:julia [2026/03/24 16:19] (current) admin
Line 1: Line 1:
-=====julia 소개=====+======소개======
  
 julia는 python의 편리함과 c의 속도를 두루 갖춘 언어이다. julia는 python의 편리함과 c의 속도를 두루 갖춘 언어이다.
Line 7: Line 7:
 대신 python 라이브러리를 그대로 불러와서 사용한다면, 속도는 기대하지 말자... 대신 python 라이브러리를 그대로 불러와서 사용한다면, 속도는 기대하지 말자...
  
-=====목차=====+======목차======
  
-[[:1. julia 다운로드 및 julia 전용 에디터]]+=====설치=====
  
-[[:2패키지 설치와 import 방법]]+julia는 https://julialang.org/ 에서 받을 수 있다.
  
-[[:3. 간한 선형대수]]+설치시 기본 설치경로는 C:\Users\"사용자 이름"\AppData\Local\Julia-1.1.0 이다. 
 + 
 +1.1.0은 이 글 작성 기준으로 최신버전이며, 업데이트시 숫자가 바뀔 수 있다. 
 + 
 +참고 사항으로 AppData는 기본적으로 숨겨져 있는 폴더이므로, 폴더 옵션에서 숨김 파일 표시를 하여 표시를 하든지, 경로명을 어딘가 저장해 둔 뒤 직접 디렉토리로 접근하도록 하자. 
 + 
 +=====전용 에디터===== 
 +julia 코드 작성을 위해서는 atom을 설치하면 된다. 
 + 
 +정확히 얘기하면 julia 전용 에디터는 아니다. 범용으로도 쓸 수 있다. 다만, julia 코드 작성을 위한 툴을 제공하는 것이 현재는 atom 밖에 없을 뿐이다. 
 + 
 +atom은 https://atom.io/ 에서 다운 받을 수 있다. 
 + 
 +atom도 julia와 마찬가지로 AppData에 설치된다. 참고사항으로는 설치 시에 next 버튼을 누른다든지, 약관에 I agree를 체크할 일이 없다. 
 + 
 +atom을 깔았다고 끝난 것이 아니다. 
 + 
 +atom의 설치가 끝난 후, atom을 실행한 후, Settings 탭에서 Install 패널로 들어다. 
 + 
 +그 후에, uber-juno 를 검색하여 설치해준다. 
 + 
 +설치가 끝나면 메뉴 항목에 julia가 보일 것이다. 
 + 
 +거기서 start julia를 클릭해주면 밑에 REPL 창에 julia가 실행된 모습이 보인다. 
 + 
 +uber-juno의 기능인지 atom의 고유기능인지 모르지만(아마 uber-juno 패키지의 기능일 것이라 예상다) 한 라인에 대고 shift+enter를 해주면 그 라인의 실행 결과를 편집창에서 즉각적으로 보여준다. 
 + 
 +코드 전체의 실행결과를 알고 싶다면, ctrl+shift+enter를 눌러주면 REPL창에 실행결과가 출력된다. 
 + 
 + 
 +=====패키지 설치 방법===== 
 +패키지 설치는 
 + 
 +<Code:Julia> 
 +using Pkg 
 +Pkg.add("받을 패키지명"
 +</Code> 
 + 
 +을 편집창에서 타이핑한 후 실행해주면 된다. 
 + 
 +혹은 julia창에서 직접 
 + 
 +<Code:Julia> 
 +using Pkg 
 +</Code> 
 +<Code:Julia> 
 +Pkg.add("받을 패키지명"
 +</Code> 
 + 
 +이런 식으로 한 줄씩 입력해도 된다. 
 + 
 +=====패키지 사용===== 
 +위의 예에서 이미 예상했을 수도 있지만, 받은 패키지는 using 으로 사용할 수 있다. 
 + 
 +<Code:Julia> 
 +using 패키지명 
 +</Code> 
 + 
 + 
 +=====예시===== 
 +수치해석으로 근을 구하는 패키지 중에 NLsolve 라는 패키지가 있다. 
 + 
 +이를 사용하기 위해서는 우선 
 + 
 +<Code: Julia> 
 +using Pkg 
 +Pkg.add("NLsolve"
 +</Code> 
 +로 패키지를 받아준 후 
 + 
 +<Code: Julia> 
 +using NLsolve 
 +</Code> 
 + 
 +라고 해주면 된다. 
 + 
 +using 대신 import를 써도 무방하지만, import로 사용하게 되면 패키지명.함수명 으로 함수에 접근을 해야한다. using을 사용하면 함수명만으로도 패키지 안의 함수에 접근할 수 있다. 
 + 
 +다만 패키지를 만든 사람이 패키지명 없이 그 함수를 사용할 수 있게끔 만들어야 한다. 
 + 
 +만약 패키지명 없이 사용할 수 없도록 만들어져 있다면, C:\Users\사용자명\.julia\packages 내에서 설치한 패키지를 찾아 .jl 형식의 소스코드를 열어서 수정해서 사용해도 될 것이다. 
 + 
 +<Code:Julia> 
 +using Pkg 
 +Pkg.add("LinearAlgebra"
 +</Code> 
 + 
 +선형대수 계산을 하기 위해서는 LinearAlgebra 패키지를 설치해준 후 using을 해주어야 한다. 
 + 
 +<Code:Julia> 
 +using LinearAlgebra 
 + 
 +A = [1 2; 3 4]
 +lambda, vec = eigen(A); 
 +print(lambda) 
 +print(vec) 
 +</Code> 
 +$$ 
 +A = \begin{pmatrix} 
 +1 & 2\\ 
 +3 & 4\\ 
 +\end{pmatrix} 
 +$$ 
 +를 만든 후 eigen() 함수로 고유값과 고유벡터를 구하고 각각을 출력하는 코드이다. 
 + 
 +<Code:Julia> 
 +A = [1 2; 3 4]
 +</Code> 
 +는 
 +<Code:Julia> 
 +A = [1 2 
 +3 4]; 
 +</Code> 
 +로 해도 똑같은 결과를 얻는다. 
 + 
 +세미콜론(;)의 경우 터미널 환경에서 출력값을 보이지 않기 위해 사용하는 것이다. 
 + 
 +고유 벡터만을 구하고 싶다면 eigvecs() 함수를, 고유값만을 얻고 싶다면 eigvals() 함수를 사용하면 된다. 
 +첫번째 고유벡터만을 얻고 싶다면 eigvecs(A)[:,1]을 하면 된다. 
 +왼쪽 고유 벡터를 얻고 싶다면 inv(eigvecs(A))를 하면 된다. 
 + 
 +행렬 곱의 경우 
 +<Code:Julia> 
 +A = [1 2; 3 4]; 
 +B = [2 3; 4 5]; 
 +M = A*B 
 +</Code> 
 +하면 
 +$$\begin{pmatrix} 
 +1 & 2\\ 
 +3 & 4 
 +\end{pmatrix} 
 +\begin{pmatrix} 
 +2 & 3\\ 
 +4 & 5 
 +\end{pmatrix} 
 +
 +\begin{pmatrix} 
 +10 & 13\\ 
 +22 & 29 
 +\end{pmatrix} 
 +$$ 
 +로 일반적인 행렬곱의 결과가 나온다. 
 + 
 +전치(Transpose)는 A' 으로 쓴다. 
 + 
 + 
 +무작위 추출의 경우 
 +<Code:Julia> 
 +using Pkg 
 +Pkg.add("StatsBase"
 +</Code> 
 + 
 +로 StatsBase 패키지를 설치한 후 using을 해주어야 한다. 
 + 
 +<Code:Julia> 
 +using StatsBase 
 + 
 +x = 1:10; 
 +sample(x) 
 +</Code> 
 + 
 +하면 1부터 10까지 공차가 1인 등차수열이 x에 들어가고 
 +sample(x)를 하면 x의 요소를 균일한 가중치로 무작위 복원 추출을 한다. 
 + 
 +만약 가중 복원 추출을 원하면 
 +<Code:Julia> 
 +using StatsBase 
 + 
 +x = 1:10; 
 +weights = rand(10); # [0, 1) 의 범위에서 난수 10개 생성 후 1차원 배열로 만듦 
 +sample(x, Weights(weights)) 
 +</Code> 
 + 
 +이렇게 코드를 짜면 된다. 
 + 
 +여러 개의 표본을 균일한 가중치로 뽑고 싶으면 
 +<Code:Julia> 
 +using StatsBase 
 +x = 1:10 
 +sample(x,n) 
 +</Code> 
 +으로 n에 원하는 숫자를 넣으면 된다. 
 + 
 +비균일 가중치로 여러개를 뽑고 싶다면 
 +<Code:Julia> 
 +using StatsBase 
 + 
 +x = 1:10; 
 +weights = rand(10); # [0, 1) 의 범위에서 난수 10개 생성 후 1차원 배열로 만듦 
 +sample(x, Weights(weights), n) 
 +</Code> 
 + 
 +을 하면 된다. 
 + 
 +마지막으로 비복원 추출을 원하면 
 +<Code:Julia> 
 +using StatsBase 
 + 
 +x = 1:10; 
 +weights = rand(10); # [0, 1) 의 범위에서 난수 10개 생성 후 1차원 배열로 만듦 
 +sample(x, replace = false) 
 +</Code> 
 +이렇게 replace = false 를 넣어주면 된다. 
 + 
 + 
 +======참조====== 
 +  * https://en.wikibooks.org/wiki/Introducing_Julia/Modules_and_packages
  
-[[:4. 주어진 배열에서 무작위 추출]] 
  • 프로그래밍/julia.1774336402.txt.gz
  • Last modified: 2026/03/24 16:13
  • by admin