라벨이 Python인 게시물 표시

Pharos University ME 253 Fluid Mechanics II - ppt video online download

Pharos University ME 253 Fluid Mechanics II - ppt video online download : External External Flows Bodies in motion, experience fluid forces and moments. Examples include: aircraft, automobiles, buildings, ships, submarines, turbo machines. Fuel economy, speed, acceleration, stability, and control are related to the forces and moments. Airplane in level steady flight: drag = thrust & lift = weight.

원의 수학적 표현, Bresenham Circle

이미지
--- --- 이전 포스팅 에서 직선인 경우 Bresenham Algorithm 을 다루었다. 이는 래스터화 시키는 알고리즘이다. 원에서도 해당 알고리즘이 적용 가능하다. 하지만, 해상도의 문제점을 가지고 있다. Bresenham Algorithm 직선의 경우 우측 이동(E), 우상측 이동 (NE)이동을 통해 묘사하였다. 원의 경우는 우측이동 (E) 와 우하측 이동(SE) 이동을 통해 해당 알고리즘을 적용해볼 수 있다. NE와 SE이동은 직선과 곡선의 차이점이 아니라, 기울기에 따라 달라지는 것이다. 원의 경우 8 대칭을 가지고 있다. 이 중 2번째 파이에(y,x) 해당하는 것을 묘사하는 것이 좋다. 만약 1번째 파이(x,y)에 해당하는 경우를 사용한다면, 기울기가 큰 경우가 있어 알고리즘 구현이 애매하다는 것을 알 수 있다. 원의 방정식은 다음과 같이 표현한다. Implict F ( x , y ) = x 2 + y 2 − r 2 F ( x , y ) > 0 → ( x , y )  Outside F ( x , y ) < 0 → ( x , y )  Inside F(x,y)= x^2+y^2-r^2 \\ F(x,y) >0 \to (x,y) \text{ Outside} \\ F(x,y) <0 \to (x,y) \text{ Inside} F ( x , y ) = x 2 + y 2 − r 2 F ( x , y ) > 0 → ( x , y )  Outside F ( x , y ) < 0 → ( x , y )  Inside 여기에서 마찬가지로, Outside에 해당하는 경우 Inside로 들어오기 위하여 SE 방향으로 이동, Inside인 경우 outside 방향인 E 방향으로 이동하면 된다. { F ( M ) ≥ 0 → S E F ( M ) < 0 → E \begin{cases} F(M) \ge 0 \to SE \\ F(M) <0 \to E \end{cases}...

직선의 수학적 표현 및 Bresenham Algorithm with Python 코드

이미지
 Line characterizations 직선은 1차원으로 일정한 기울기를 가진다는 특성이 있다. 직선의 수학적 표현 방법으로는 Explicit 하게 또는 Implicit 하게 표현할 수 있다.  2차원인 경우 다음과 같이 나타낸다. Explicit $$ y= mx+B$$ impicit $$ F(x,y)=ax+by+c=0$$ 두 개의 표현 방법은 실질적으로 같은 식이 된다. 수학적으로는 차이는 있지만, 방정식을 세우고 푸는데 있어서는 동일하다. $$ \\dy= y_1-y_0 \\ dx= x_1-x0 \\ y=\frac{dy}{dx}x+B$$ 우리는 Computing 하기 편하게 하기 위해서 위의 관계들을 조금 더 여러가지 관계식으로 알아두는 것이 좋다. $$ (dy)x+(-dx)y+(dx)B =0 \\ \therefore F(x,y)=(dy)x+(-dx)y+(dx)B \\ where, \, A=dy, B=-dx , C=Bdx $$  만약 2개의 점이 주어진다고 보았을 때, 2 점 사이에 존재하는 점은 다음과 같이 표현한다.  $$ P(t)=(1-t)P_0 + tP_1 $$  이러한 관계를 가지는 것을 Affine Set에 있다고 본다. <출처 : Lecture 2 - Convex set (oopy.io) > 대략적인 파이썬 코드를 가지고 그려보면, 다음과 같이 P0와 P1 사이에 점들이 존재하는 것을 알 수 있다. 여기서 P0는 1,1에 존재하고 P1은 2,2로 설정하였다.  Bresenham Algorithm Bresenham Algorithm은 Line Rasterization 시켜서 그리는 알고리즘이다. 쉽게 말하면, 선을 Pixel 처럼 나타낸다. 이는 앞으로 이미지를 픽셀처럼 나타내기 위한 기초적인 알고리즘 이다. 출처 :  Bresenham's line algorithm - Wikipedia Pixel의 좌표계는 정수만 허용하므로, 정수에 해당하는 값만 잘 맞추어 가져...

3D Gaussian Distribution with python

이미지
Multivariate Gaussian distributions are widely used in machine learning. However, that distributions are not easily understood. This post covers how to visualize 2d multivariate distributions with python. 3D Gaussian Distribution can help you to understand that easily. Case I (independent) \begin{align}Let \, \mu_x= \begin{bmatrix}0 \\ 0\\ \end{bmatrix}, cov =R= \begin{bmatrix}1 & 0\\ 0 & 1\\ \end{bmatrix}\end {align} In this case we know multivariate Gaussian distribution is given by p(x)=\frac{1}{\sqrt{(2\pi)^n}det R} exp(-\frac{1}{2}(x-\mu_x)^TR^{-1}(x-\mu_x)) . The result represents the result when both x_1 and x_2 are independent probabilities. The shape of a circle indicates that the probabilities are randomly distributed. The shape relates to off-diagonal matrix elements. 3d surface indicates probability of combination of two variables such as (0,1), (0,0)-Very high, or (2,2)-very low. Let’s think second case (off-diagonal elements is not zero) Case II The def...

파이썬 클래스 (Class, self, __init__)

이미지
파이썬 클래스 정의 파이썬 클래스 (class)는 함수보다 더 상위 개념을 정의할 때 사용합니다. 함수는 여러가지 반복적인 일을 한번에 처리하기 위해서 사용합니다. 그렇다면, 클래스는 더 많이 사용할 때, 사용하게 됩니다. 조금 더 정확하게 말하면 클래스는 데이터와 데이터를 조작하는 함수의 묶음입니다. 실질적으로 이해를 돕기 위해서 말씀 드리면, class의 라는 메모리 주소를 저장해 두고, 이 주소를 계속 링크 걸면서 사용하는 것입니다. 그림 1. 파이썬 클래스 정의 Self 및 __init__ 역할 먼저 클래스 정의하는 Class name을 정해줍니다. 여기서 init 이라는 함수를 초기에 정해주는데, 이는 class에 무언가 Factor들이 들어올 때, 초기 값을 설정해주는 과정이 됩니다. 해당 부분은 파이썬의 기초 메쏘드입니다. Class 내에서 모든 Method를 정의할 떄는 Self 를 먼저 넣어줘야 합니다. self 의 역할은 주소를 불러줄 수 있도록 도움을 줍니다. 클래스를 정의하고 사용할 때, 간편하게 사용하도록 만들어 주는 것을 인스턴스 라고 합니다. 그림 1의 경우에는 inst가 인스턴스가 됩니다. 그러면 inst 라는 인스턴스에 초기 값으로 inst.factor1에는 factor1이 저장이 되고, inst.factor2에는 factor2가 저장이 됩니다. 클래스 사용 (인스턴스) 조금 더 정확한 예시를 가지고 풀어보겠습니다. 간단한 초기 값을 가지고 연산하는 예시로는 다음과 같이 정해줄 수 있습니다. 그림 2. 단순 계산. Global 변수의 대체 이 정도로는 무언가 쓸모 있어 보이진 않죠?? Global 변수 대신에, 인스턴스에 값을 저장해서 지속적으로 update하는 방식으로 사용해줄 수 있습니다. 저는 Global 변수를 정의하는 것을 선호하지 않기 때문에 class를 정의하고 사용하는 것은 굉장히 매력적으로 보입니다. 그림 3. Global 변수의 대체사용 그림 3의 경우 Global 변수 대신에 합을 계속적으로 업데이트 ...