공학 계산에 필요한 파이썬 기본 모듈

2025. 3. 22. 15:54공학/컴퓨터

728x90

파이썬 모듈 개념의 기능과 특징을 처음 살펴보기 위해, 먼저 키워드와 같은 방식으로 다섯 가지 모듈을 설명합니다. 모듈 대신에, 라이브러리라는 용어도 보통 사용합니다. 파이썬의 기능은 간단한 본보기 프로그램을 사용하여 가장 잘 설명할 수 있습니다. 물론, 여기서 표시된 소스 코드를 이해할 필요는 없습니다. ;

 

1) NumPy

 

NumPy(numerical Python)를 사용하면 광범위한 수치 계산을 수행할 수 있습니다. 예를 들어, 복소수를 포함한 선형 방정식 시스템을 풀 수 있습니다. 다음은 간단한 벡터 미적분 프로그램을 보여줍니다.

import numpy as np
A=np.array([1, 2, 3])
B=np.array([4, 5, 6])
print("Vector A:",A)
print("Vector B:",B)
print("Total A+B:",A+B)
print("Product A*B:",A*B)
print("Cross product :",np.cross(A,B))
print("Scalar product:",np.dot(A,B))

 

출력

Vector A: [1 2 3]
Vector B: [4 5 6]
Total A+B: [5 7 9]
Product A*B: [ 4 10 18]
Cross product : [-3  6 -3]
Scalar product: 32

 

2) Matplotlib

 

Matplotlib 사용하면 수학 함수, 히스토그램, 그리고 여러 가지 다른 유형의 도표를 표시할 수 있을 뿐 아니라 물리적 과정을 시뮬레이션하고 애니메이션화할 수 있습니다. 그래픽 디자인 옵션은 매우 다양하고 세부적인 면에서 풍부합니다. 다음 코드는 다항식의 함수 그림의 간단한 예를 보여줍니다.

import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-2,6,0.01)
y=x**3-7*x**2+7*x+15
plt.plot(x,y)
plt.show()

 

출력

3) SymPy

 

Sympy(Symbolic Python)를 사용하면 적분이나 미분을 기호로 계산하거나 미분 방정식을 기호로 풀 수 있습니다. 수학 용어의 단순화도 가능합니다(그 외에도 다양한 기능이 있습니다). 목록 1.3은 기호적 미분과 적분의 간단한 예를 보여줍니다.

from sympy import *
x=symbols("x")
y=x**3-7*x**2+7*x+15
y_1=diff(y,x,1)
y_2=diff(y,x,2)
y_3=diff(y,x,3)
Y=integrate(y,x)
print("1. Derivative:",y_1)
print("2. Derivative:",y_2)
print("3. Derivative:",y_3)
print(" Integral :",Y)

 

출력

1. Derivative: 3*x**2 - 14*x + 7
2. Derivative: 2*(3*x - 7)
3. Derivative: 6
 Integral : x**4/4 - 7*x**3/3 + 7*x**2/2 + 15*x

 

4) SciPy

 

SciPy(Scientific Python)를 사용하면 수치로 미분, 적분을 풀거나 미분 방정식을  풀 수 있습니다. SciPy는 포괄적이고 다재다능합니다. 다음은 수치적 적분 프로그램의 간단한 예를 보여줍니다.

import scipy.integrate as integral
def f(x):
    return x**2
A=integral.quad(f,0,5)
print("Area A=",A[0])

 

출력

Area A= 41.66666666666666

 

4) VPython

 

VPython을 사용하면 3D 뷰에서 필드를 표시하거나 3D 공간에서 필드의 움직임을 애니메이션으로 만들 수 있습니다. 버전 7부터는 프로그램이 시작되면 표준 브라우저에 애니메이션이 표시됩니다. 다음 코드는 튀는 공의 애니메이션을 프로그래밍하는 방법을 보여주는 예입니다.

from vpython import *
r=1. #radius
h=5. #height
scene.background=color.white
scene.center=vector(0,h,0)
box(pos=vector(0,0,0),size=vector(2*h,r/2,h), color=color.green)
ball = sphere(radius=r, color=color.yellow)
ball.pos=vector(0,2*h,0) #drop height
ball.v = vector(0,0,0) #initial velocity
g=9.81
dt = 0.01
while True:
    rate(100)
    ball.pos = ball.pos + ball.v*dt
    if ball.pos.y < r:
        ball.v.y = -ball.v.y
        else:
            ball.v.y = ball.v.y - g*dt

 

출력

 

728x90