본문 바로가기

Engineer/Juila9

[Julia] 기본2 - 2. 코드 최적화하는 법 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. 줄리아 언어를 최적화 시키는 방법 ◆ TYPES AND TYPE STABILITY 타입과 타입안정성(?) 구조체를 만들때 타입을 정의를 명확히 하는 것이 속도가 빠르다. 구조체 요소의 타입을 정의하는 3가지 방법을 비교해 볼 것이며, 아래와 같다. mutable struct Cube length width height end volume(c::Cube) = c.length * c.width * c.height mutable struct Cube_typed length::Float64 width::Float64 height::Float64 end volume(c::Cube_typed) = c.length * c.width * c.height mutable.. 2021. 10. 29.
[Julia] 기본2 - 1. 구조체 기본 정의법(outer/inner constructor) 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. 코드를 좀 심오하게 짜보려하니 구조체(struct)를 정의하는 법 먼저 궁금해졌다. 데이터를 뭉터기로, 효율적으로 다루기 위해서는 필수이니까. CONSTRUCTOR 일단 여타 다른 코드들과 비슷하게 정의한다. 특징이라면 형식을 정해주지 않아도 된다는 정도이다. 물론 데이터 형식을 정의할 수도 있다. 뒤에 나온다. struct Foo firstMass secondMass end 이렇게 구조체를 정의하고 이 구조체를 이용해 변수를 할당하면 . 으로 구조체 요소에 접근할 수 있다. myFoo = Foo(100,10) print("Mass of my first foo = ", myFoo.fisrtMass) #>> Mass of my second foo = 10.. 2021. 10. 12.
[Julia] 기본1 - 6. 행렬식 해 구하기 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. 기본편은 이 글이 마지막 글이며, 링크에 보간법, 수치적분법, FFT 관련 내용도 있으니 참고바랍니다. 수치해석을 하려면 이제 행렬을 푸는 방법을 알아야한다. 얼마나 빠르고 정확하게 행렬식의 해를 구할 수 있는가는 수치해석의 처음과 끝이다. FEM을 풀던 FDM, FVM, 등 뭐를 풀던 똑같다. EXAMPLE PROB. LAPLACIAN EQU. 예제 라플라시안 방정식 자 격자를 M+1개로 나눈다. 즉 포인트는 M+2개가 되겠다. (0,1,2..., M, M+1) 그리고 Uxx를 2차 중앙 차분을 하면 아래와 같다. 각 경계조건은 알파와 베타이니까, u0 = alpha, u_(m+1) = beta로 놓고 행렬식을 정리하면 다음과 같다. 자 여기서 h는 .. 2021. 10. 11.
[Julia] 기본1 - 5. 행렬 가지고 놀기! 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. 일단 수치해석을 하려면 사용하는 언어의 행렬사용법을 찐하게 알고 있어야한다. 효율이 생명인데 행렬(어레이)자체를 비효율적으로 계산하고 있으면 도루묵이기 때문이다. INITIALIZING ARRAYS 행렬정의! 직접 정의는 여느 프로그래밍언어와 비슷하다. A = [1 2 3; 1 2 4; 2 2 2] A = [1 2 3; 1 2 4; 2 2 2] 요런 식이다. 근데 백터랑 행렬이랑 좀 객체 유형이 달라진단다. 아래 예시를 보자 V1 = [4.0, 5, 6] # 3-element VECTOR (Float64) V2 = [4.0; 5; 6]# 3-element VECTOR (Float64) M1 = [4.0 5 6]# 1x3 Matrix(Float64) 콤마.. 2021. 10. 11.
[Julia] 기본1 - 4. 함수 사용하기 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. Juila는 JIT(Just-In-Time) 컴파일러라서 더 높은 효율을 내려면 컴파일을 미리해놓는것이 좋다. 그렇게 하려면, 함수로 만들어 놓으면 빠르다! 그럼 함수를 만드는 법을 알아보자. BASIC FUNCTION 기본 함수 아래의 이차 급수(Quadratic Series)를 구하는 함수를 예로 들어 보자. function sum_series(n) x = 0 for k in 1:n x = x + (1/k)^2 end return x end 99위 코드를 실행한 뒤 실행했던 REPL터미널에서 위 함수를 실행해 보자. 굳 잘 작동한다. ARRAY FUNCTIONS AND THE DOT OPERATOR 어레이 함수와 닷연산 스칼라 값에만 적용하는 것이 .. 2021. 10. 11.
[Julia] 기본1 - 3. 반복문(Loop 문) 사용하기 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. SIMPLE FOR LOOP 간단한 반복문 반복문은 다음과 같이 파이썬에 end가 붙은 요상한 짬뽕 방법이다. for iterator in range excute_statements(iterator) end 예를 들어서 100,000개의 (1/x)^2을 더하면 다음과 같다. x=0 for k in 1:100000 x = x + (1/k)^2 end 이 예시에서 우리가 알 수 있는 것은, 포문에서 반복되는 정수는 1:100000 따위로 콜론을 사용하면 되고, 제곱수는 ^를 사용하면 된다는 것이다. NESTED FOR LOOPS 다중? 중첩? 반복문 다른 언어에 비해 신기한 구문을 가지고 있다. 배워왔던 언어들을 가지고 반복문을 여러겹 겹쳐 사용했을때는 보.. 2021. 10. 11.