본문 바로가기

수치해석7

[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] 기본 - 2. VSCode로 줄리아 시작하기 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. 이제 줄리아 개발환경을 만들고 VSCode를 이용해서 "Hello, world!"를 출력할 차례다. 자! 이제 시작이야. INSTALLING JULIA AND VSCODE 줄리아 VSCode 설치 아직 줄리아를 설치하지 않았다면 링크에 들어가 다운로드하자. 윈도우 / 맥OS / 리눅스계열의 운영체제를 모두 지원한다. 혹시, VSCode가 없다면 링크를 통해 설치하길 바란다. 그리고 VSCode에서 줄리아를 사용할 수 있도록 extension도 설치해야한다. 아래처럼 VSCode에서 추가할 수 있다. Starting The Julia REPL 줄리아 REPL터미널 실행 위 설치를 마쳤다면, VSCode에서 줄리아 REPL(read-eval-print lo.. 2021. 10. 7.
[Julia] 기본 - 1.줄리아 언어로 수치해석 하기 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. WHY 왜 줄리아 인가? 줄리아는 고성능이고, 범용 오픈소스 언어다. JIT(just in time) 컴파일러로 C/Fortran 급 속도를 지니며, Matlab/Python 마냥 쉽다. 그러니까 줄리아를 사용해야한다. FEATURES 몇 가지 특징 줄리아 특징은 많은데, 공학/과학 분야에서 관심가질만한 내용은 아래와 같다. JIT 컴파일 가능! 컴파일러/인터프리터/JIT 개념을 공부해보자(아직부족) 아무튼 한행씩 분석하지 않고 java/C# 마냥 중간언어로 바꿔 준다. 이 특징은 특히 크로스 플랫폼이라는 강점이 있는데, 아직 사용 안해봐서 잘 모르겠다. 배우다보면 알겠지. 컴파일된 프로그램마냥 빠르단다. 선택적 입력? 이건 사용하기 전에는 잘 모를거같.. 2021. 10. 5.
비정형 수직격자 체계 LSC2 (Z / Sigma / S-Z grid 와 비교) 기존 유한요소, 즉 비정형 수평격자 체계 수치해석에 채택되던 수직격자는 Z, Sigma, Rho 등이 일반적이다. 그리고 이들을 적절히 조합한 Sigma-Z도 사용된다. 비정형 격자 체계에 수직층을 더하면 삼각기둥(혹은 사각기둥)의 프리즘 모양의 계산셀이 생긴다. 프리즘의 각 3면은 수평유동이, 위아래 면은 수직유동이 일어난다. 하지만 지형이 가파른 지역에서는 이 기둥들이 계단모양을 이루게 되며, 수평유동이 막히고 이로인해 수직유동이 과대평가되기 마련이다. 이를 해결하기위한 노력으로 수직격자에도 비정형격자 개념을 들고온 LSC2 격자가 개발된다. ■ 비정형 수직격자, LSC2 아이디어는 간단해 보인다. 수평 노드들마다 각각의 sigma 층을 주고, 층의 개수가 차이나니 그림에 보이는 것과 같이 degen.. 2021. 1. 22.