본문 바로가기

전체 글

(291)
[Colab] Colab과 구글 드라이브 연동 Colab에는 파이썬 관련 코드를 작성할 수 있다. 그렇지만 모든 코드를 전부 노트 안에 작성할 수는 없기 때문에, 해당 코드들을 py 파일에 작성한 후 해당 코드를 import 하기 원할 수 있다. 이 경우 직접 파일을 로드하는 방법도 있으나, 세션이 만료될 때마다 파일을 업로드 해야하므로 로컬에서 파일 관리를 잘 해야 한다. google drive을 사용하는 경우, 해당 드라이브에 마운트하여 마치 로컬 PC인 것처럼 사용할 수 있다. 사용법 드라이브를 마운트할 노트를 연다. 좌측의 폴더 버튼을 누르고, 드라이브 버튼을 누른다. 위 버튼을 누르게 되면 아래와 같은 코드가 작성되며, 키를 받아오라고 한다. 링크를 통해 키를 받아온 후 빈칸에 채워넣는다. 다만 현재 바로 파일을 쓸 수 있는 것은 아니다. ..
[수치해석 17] Runge kutta법 미분방정식(differential equation) : 미지의 함수 및 해당 함수의 도함수로 구성되는 방정식 상미분 방정식(ordinary DE) : 하나의 독립변수에 대한 도함수를 포함하는 미분 방정식 편미분 방정식(partial DE) : 둘 이상의 독립변수에 대한 편도함수를 포함하는 미분방정식 미분방정식에서 차수(order) 은 가장 높은 도함수의 차수를 의미한다. 초기값 문제 특정 방정식을 미분하게 되면 원 방정식의 상수부 C가 해당 과정에서 소실된다. 이때 미분된 방정식을 적분한다고 해도 추가적인 조건 없이는 소실된 상수부 C는 알 수 없다. 이때 상미분 방정식의 경우 해를 구하기 위해 적분을 진행하는데, 이 경우 위 설명과 마찬가지로 원래 방정식의 상수에 해당하는 적분 상수 C는 구할 수 없다..
[수치해석 16] 수치미분 미분 독립변수 x와 종속변수 y 및 f(x) 가 존재할 때, 독립변수의 변화에 대한 종속변수의 변화를 고려하자. 차분 근사는 다음과 같다. 이때 Δx 가 0에 접근하게 되면, 차분은 도함수가 되고, 이는 xi에서의 전선의 기울기에 대응된다. 테일러 급수 전개를 이용한 도함수 근사 테일러 급수는 다음과 같은 모습을 가진다. 테일러 급수를 이용한 도함수의 근사는 테일러 급수의 항을 변형하여 우리가 원하는 f(n)(x)을 구하는 것을 목표로 한다. 전진 차분 근사 ( forward difference by forward expansion ) xi 에 대해 xi+1을 구하는 식을 이용하여 근사하는 방법. i 의 인덱스가 증가한다고 해서 전진 전개(forward expansion) 이라고 한다. 해당 결과로 나오..
[React] Portal 리액트는 기본적으로 하나의 html 파일만 사용한다. 이때 특별한 조작을 하지 않는다면, 우리가 선언한 모든 컴포넌트들은 id = 'root' 인 실제 DOM상에 존재하는 노드의 자식이 된다. 그런데 경우에 따라 하나의 노드 아래에서 모든 것을 조작하는 대신, 여러개의 노드에서 컴포넌트들을 별개로 작동하도록 만들고 싶을지도 모른다. 이 경우 Portal을 이용한다. Portal의 이용 방법은 다음과 같다. import ReactDOM from 'react-dom'; ReactDOM.createPortal(component, real_obj) Portal을 생성하는 createPortal은 react-dom 안에 있다. 이제 원하는 컴포넌트를 index.js 파일에서 render을 사용하듯이 사용하면 된다..
[수치해석 15] 방정식의 적분 수치적으로 적분하게 되는 데이터는 테이블 형태와 함수 형태로 나뉜다. 테이블 형태는 정해진 이산 개수의 데이터에 기반하여 적분하게 되고, 함수는 함수 식에 기반하여 생성된 점을 이용하여 적분하게 된다. 수식에 대한 Newton-Cotes 알고리즘 합성 사다리꼴 공식 및 Simpson 공식은 함수에 대해서도 적용할 수 있으나, 구간이 크게 증가함에 따라 반올림 오차가 역으로 증가하여 오차가 더 높아지는 현상이 발생한다. 따라서, 높은 효율성 및 작은 오차가 필요한 경우 부적합하다. 파이썬 알고리즘 from typing import Callable def TrapEq(f : Callable[[float], float], n: int, a:float, b:float): ''' @params f : 사용되는 함..
[React] useState Hook 리액트는 웹 페이지에 동적인 느낌을 부여한다. 이때, 해당 페이지가 동적으로 작동하기 위해서는 해당 페이지를 수시로 업데이트 해야 하는데, 만약 이 업데이트를 단순히 while 루프로 구현한다면, 성능적인 부분에서 심각한 오버헤드가 발생할지도 모른다. 또한, 웹사이트는 보통 특정 정보를 지니고 있는 경우가 대부분인데, 리액트는 프론트엔드 단에서 작동하기 때문에, 이러한 정보를 사용자의 환경에서 지니고 있어야 한다. 이러한 다양한 이유에 기반하여 리액트는 State, 즉 상태를 프론트엔드 단에서 관리한다. State? 프로그램에서 State를 정의하는 방법은 상황에 따라 다양할 수 있지만, 가장 간단한 수준에서는 변수를 의미한다. 해당 흐름에서 State의 변화는 프로그램 내 변수들의 변화를 의미한다. 리..
[수치해석 14] Newton-Cotes 적분 공식 정적분 독립 변수 x에 대한 함수 f(x)의 구간 x = a 부터 x = b 까지의 적분으로, a ~ b 범위에서 곡선 f(x)와 x 사이에 이루는 면적(단 부호가 존재)이 정적분 I 에 해당한다. 수치적분 정적분은 적분을 수식에 의한 해석적 방법을 통해 구하는 과정이라 할 수 있다. 그러나 모든 상황에서 해당 방법이 가능한 것은 아니므로, 이산적인 점을 통해 측정 값만으로 적분을 구해야 하는 경우가 있고, 이때 수치적분이 사용된다. 즉 수치적분은 구체적 수식 대신에 이산적인 점과 측정값을 통해 적분을 수행하는 방식이다. Newton-Cotes 적분공식 가장 많이 사용되는 수치적분 방식으로, 복잡한 함수 및 데이터를 다항식의 형태로 대체하는 방식으로, 원래 함수식이나 데이터를 여러 소구간으로 나누어, 해..
[React] 컴포넌트 리액트의 컴포넌트는 자바스크립트로 구현된다. 이때 최근 리액트에서는 클래스 기반 컴포넌트보다는 함수형 컴포넌트를 좀 더 권장하는 추세인데, 해당 컴포넌트는 프로그래머가 구현하기 쉽도록 JSX 등을 통해 syntactic sugar 을 제공하고 있으나, 본질적으로는 단순한 함수이다. 이런 특성을 이해하면 리액트의 몇몇 특징을 이해하기 좋다. JSX는 Syntactic Sugar이다 웹을 어느정도 작동시키기 위해서는 html 및 자바스크립트가 필요하다. 이때 자바스크립트는 보통 논리 부분을 설계하고 구성하는데 사용되고, html은 시각적인 UI 부분을 구성하는데 사용된다. 따라서 웹 개발자의 입장에서는 UI를 구성하는데 표준처럼 사용하는 html을 그대로 사용할 수 있는 것이 좋을 것이다. JSX는 이런 흐..