∑
수학
융합탐구 Web VPython 예시 5개 수학 · 예시 13차원 나선곡선과 매개변수 변화
해석 포인트 · 매개변수 방정식을 3차원 좌표로 바꾸고, 계수 변화에 따른 곡선의 형태를 비교한다.
Web VPython 3.2
scene.background = color.black
scene.range = 6
curve(color=color.cyan, radius=0.03)
c = curve(color=color.cyan, radius=0.03)
for i in range(600):
t = i*0.03
p = vector(3*cos(t), 3*sin(t), 0.08*t)
c.append(pos=p)수학 · 예시 2리사주 곡선의 3차원 확장
해석 포인트 · 서로 다른 진동수 비가 닫힌 곡선의 모양에 어떤 영향을 주는지 관찰한다.
Web VPython 3.2
scene.background = color.black
scene.range = 4
c = curve(color=color.yellow, radius=0.025)
for i in range(1200):
t = i*0.01
x = 3*sin(3*t)
y = 3*sin(4*t)
z = 1.5*sin(5*t)
c.append(pos=vector(x,y,z))수학 · 예시 3벡터 내적과 두 벡터 사이의 각
해석 포인트 · 두 벡터를 화살표로 나타내고 내적과 각도를 수치로 확인한다.
Web VPython 3.2
scene.background = color.white
a = vector(4,1,0)
b = vector(2,3,0)
arrow(pos=vector(0,0,0), axis=a, color=color.red)
arrow(pos=vector(0,0,0), axis=b, color=color.blue)
theta = acos(dot(a,b)/(mag(a)*mag(b)))
label(pos=vector(0,-1,0), text="angle = "+str(round(degrees(theta),2))+" deg",
color=color.black, box=False)수학 · 예시 4프랙탈 나무의 재귀 깊이 비교
해석 포인트 · 재귀 깊이에 따라 가지 수와 화면 복잡도가 어떻게 증가하는지 비교한다.
Web VPython 3.2
scene.background = color.black
scene.range = 8
def branch(p, v, depth):
if depth == 0: return
cylinder(pos=p, axis=v, radius=0.05*depth, color=color.green)
q = p + v
branch(q, rotate(v*0.72, angle=0.45, axis=vector(0,0,1)), depth-1)
branch(q, rotate(v*0.72, angle=-0.45, axis=vector(0,0,1)), depth-1)
branch(vector(0,-6,0), vector(0,3,0), 6)수학 · 예시 5함수 그래프와 접선의 기하적 의미
해석 포인트 · 곡선 위 한 점의 수치미분으로 접선 방향을 만들어 미분의 의미를 시각화한다.
Web VPython 3.2
scene.background = color.white
scene.range = 5
g = curve(color=color.blue, radius=0.02)
for i in range(-200,201):
x=i/40
y=0.2*x*x
g.append(pos=vector(x,y,0))
x0=2
y0=0.2*x0*x0
m=0.4*x0
curve(pos=[vector(x0-2,y0-2*m,0), vector(x0+2,y0+2*m,0)],
color=color.red, radius=0.025)⚛
물리학
융합탐구 Web VPython 예시 5개 물리학 · 예시 1포물선 운동
해석 포인트 · 중력가속도 아래에서 위치와 속도를 시간에 따라 갱신하고 궤적을 추적한다.
Web VPython 3.2
scene.background = color.black
ground=box(pos=vector(0,-0.1,0), size=vector(20,0.2,8), color=color.green)
ball=sphere(pos=vector(-8,0.3,0), radius=0.3, color=color.yellow, make_trail=True)
ball.v=vector(8,9,0)
g=vector(0,-9.8,0)
dt=0.01
while ball.pos.y >= 0:
rate(100)
ball.v += g*dt
ball.pos += ball.v*dt물리학 · 예시 2단진자 운동
해석 포인트 · 중력에 의해 진동하는 추의 운동을 수치적으로 계산한다.
Web VPython 3.2
scene.background=color.black
L=4
theta=0.8
omega=0
g=9.8
dt=0.01
pivot=vector(0,3,0)
bob=sphere(radius=0.3,color=color.yellow)
rod=cylinder(pos=pivot,radius=0.05,color=color.white)
while True:
rate(100)
alpha=-(g/L)*sin(theta)
omega += alpha*dt
theta += omega*dt
bob.pos=pivot+vector(L*sin(theta),-L*cos(theta),0)
rod.axis=bob.pos-pivot물리학 · 예시 3탄성 충돌
해석 포인트 · 운동량과 운동에너지 보존을 두 구의 충돌 전후 속도로 비교한다.
Web VPython 3.2
scene.background=color.black
a=sphere(pos=vector(-4,0,0),radius=0.5,color=color.red,make_trail=True)
b=sphere(pos=vector(4,0,0),radius=0.5,color=color.blue,make_trail=True)
a.v=vector(2,0,0); b.v=vector(-1,0,0)
dt=0.01
while True:
rate(100)
a.pos+=a.v*dt; b.pos+=b.v*dt
if mag(a.pos-b.pos) <= 1 and dot(a.v-b.v,a.pos-b.pos) < 0:
a.v,b.v=b.v,a.v물리학 · 예시 4감쇠 진동
해석 포인트 · 마찰 항이 있을 때 진폭이 감소하는 과정을 스프링-질량계로 관찰한다.
Web VPython 3.2
scene.background=color.black
m=1; k=4; c=0.35; dt=0.01
x=3; v=0
mass=box(pos=vector(x,0,0),size=vector(0.8,0.8,0.8),color=color.orange)
spring=helix(pos=vector(-4,0,0),axis=mass.pos-vector(-4,0,0),radius=0.35)
while True:
rate(100)
a=(-k*x-c*v)/m
v+=a*dt; x+=v*dt
mass.pos.x=x
spring.axis=mass.pos-vector(-4,0,0)물리학 · 예시 5파동 전파
해석 포인트 · 여러 점의 위상을 달리하여 횡파의 진행을 애니메이션으로 나타낸다.
Web VPython 3.2
scene.background=color.black
N=60
pts=[sphere(pos=vector(i*0.2-6,0,0),radius=0.06,color=color.cyan) for i in range(N)]
t=0
while True:
rate(60)
t+=0.05
for i,p in enumerate(pts):
x=i*0.2-6
p.pos=vector(x, sin(2*x-3*t), 0)🧬
생명과학
융합탐구 Web VPython 예시 5개 생명과학 · 예시 1개체군 로지스틱 성장
해석 포인트 · 환경수용력 K가 개체 수 변화에 미치는 영향을 시간축으로 시각화한다.
Web VPython 3.2
scene.background=color.white
g=graph(title="Logistic Growth", xtitle="time", ytitle="population")
f=gcurve(color=color.green)
N=10; r=0.8; K=100; dt=0.05; t=0
while t<15:
rate(100)
N += r*N*(1-N/K)*dt
f.plot(t,N)
t+=dt생명과학 · 예시 2DNA 이중나선 모형
해석 포인트 · 두 가닥의 위상차와 염기쌍 연결을 3차원 구조로 표현한다.
Web VPython 3.2
scene.background=color.black
scene.range=6
for i in range(120):
t=i*0.18
p1=vector(2*cos(t),0.12*i-6,2*sin(t))
p2=vector(2*cos(t+pi),0.12*i-6,2*sin(t+pi))
sphere(pos=p1,radius=0.08,color=color.red)
sphere(pos=p2,radius=0.08,color=color.blue)
if i%6==0:
cylinder(pos=p1,axis=p2-p1,radius=0.025,color=color.white)생명과학 · 예시 3먹이사슬 네트워크
해석 포인트 · 생물종을 노드로, 먹이 관계를 연결선으로 나타내 그래프 구조를 해석한다.
Web VPython 3.2
scene.background=color.white
A=sphere(pos=vector(-3,0,0),radius=0.5,color=color.green)
B=sphere(pos=vector(0,2,0),radius=0.5,color=color.orange)
C=sphere(pos=vector(3,0,0),radius=0.5,color=color.red)
for p,name in [(A,"Plant"),(B,"Rabbit"),(C,"Fox")]:
label(pos=p.pos+vector(0,0.8,0),text=name,box=False,color=color.black)
arrow(pos=A.pos,axis=B.pos-A.pos,color=color.black,shaftwidth=0.08)
arrow(pos=B.pos,axis=C.pos-B.pos,color=color.black,shaftwidth=0.08)생명과학 · 예시 4심장 박동 파형
해석 포인트 · 주기적 신호와 잡음을 더해 생체 신호의 특징을 단순 모델로 관찰한다.
Web VPython 3.2
scene.background=color.white
g=graph(title="Heartbeat Model",xtitle="time",ytitle="signal")
c=gcurve(color=color.red)
t=0
while t<20:
rate(120)
y=0.25*sin(2*pi*1.2*t)
if (t%0.83)<0.06: y+=1.2
c.plot(t,y)
t+=0.01생명과학 · 예시 5신경 신호 전달
해석 포인트 · 뉴런 축삭을 따라 신호가 이동하는 과정을 이동 구체로 단순화한다.
Web VPython 3.2
scene.background=color.black
axon=cylinder(pos=vector(-6,0,0),axis=vector(12,0,0),radius=0.12,color=color.white)
signal=sphere(pos=vector(-6,0,0),radius=0.3,color=color.yellow,make_trail=True)
while True:
rate(60)
signal.pos.x += 0.08
if signal.pos.x>6: signal.pos.x=-6🌍
지구과학
융합탐구 Web VPython 예시 5개 지구과학 · 예시 1지진파 P파와 S파 도달시간 비교
해석 포인트 · 서로 다른 전파 속도를 이용해 두 파의 도달시간 차이를 애니메이션으로 확인한다.
Web VPython 3.2
scene.background=color.black
source=sphere(pos=vector(-6,0,0),radius=0.3,color=color.red)
station=box(pos=vector(6,0,0),size=vector(0.4,1,1),color=color.white)
P=sphere(pos=source.pos,radius=0.18,color=color.yellow)
S=sphere(pos=source.pos,radius=0.18,color=color.cyan)
vp=5.5; vs=3.2; dt=0.01
while P.pos.x<6 or S.pos.x<6:
rate(100)
if P.pos.x<6: P.pos.x+=vp*dt
if S.pos.x<6: S.pos.x+=vs*dt지구과학 · 예시 2행성 내부 층 구조
해석 포인트 · 지각·맨틀·핵을 서로 다른 반지름의 구로 나타내 내부 구조를 3차원으로 이해한다.
Web VPython 3.2
scene.background=color.black
sphere(radius=3,color=color.blue,opacity=0.25)
sphere(radius=2.5,color=color.orange,opacity=0.35)
sphere(radius=1.4,color=color.red,opacity=0.55)
sphere(radius=0.7,color=color.yellow)
label(pos=vector(0,3.6,0),text="Earth Layers",box=False,color=color.white)
지구과학 · 예시 3판의 발산 경계
해석 포인트 · 두 판이 반대 방향으로 이동하면서 중앙에서 새로운 지각이 형성되는 과정을 단순화한다.
Web VPython 3.2
scene.background=color.black
left=box(pos=vector(-2,0,0),size=vector(4,0.5,5),color=color.blue)
right=box(pos=vector(2,0,0),size=vector(4,0.5,5),color=color.blue)
magma=box(pos=vector(0,-0.5,0),size=vector(0.6,1,5),color=color.red)
while True:
rate(60)
if left.pos.x>-5: left.pos.x-=0.01
if right.pos.x<5: right.pos.x+=0.01지구과학 · 예시 4대기압의 고도 변화
해석 포인트 · 지수적으로 감소하는 대기압을 그래프로 그려 모델의 변화를 확인한다.
Web VPython 3.2
scene.background=color.white
g=graph(title="Pressure vs Altitude",xtitle="Altitude(km)",ytitle="Pressure(relative)")
f=gcurve(color=color.blue)
for i in range(201):
h=i*0.05
P=exp(-h/8.5)
f.plot(h,P)지구과학 · 예시 5하천 분기 구조
해석 포인트 · 재귀 분기를 이용해 자연의 하천망과 자기유사 구조를 시각화한다.
Web VPython 3.2
scene.background=color.white
scene.range=7
def river(p,v,d):
if d==0: return
cylinder(pos=p,axis=v,radius=0.03*d,color=color.blue)
q=p+v
river(q,rotate(v*0.72,angle=0.38,axis=vector(0,0,1)),d-1)
river(q,rotate(v*0.72,angle=-0.52,axis=vector(0,0,1)),d-1)
river(vector(0,-5,0),vector(0,2.4,0),6)⚗
화학
융합탐구 Web VPython 예시 5개 화학 · 예시 1기체 분자의 무작위 운동
해석 포인트 · 상자 안에서 입자가 충돌하며 움직이는 모습을 통해 기체 운동론을 해석한다.
Web VPython 3.2
scene.background=color.black
L=5
box(pos=vector(0,0,0),size=vector(2*L,2*L,2*L),opacity=0.15)
atoms=[]
for i in range(25):
s=sphere(pos=vector(random()*6-3,random()*6-3,random()*6-3),radius=0.12,color=color.cyan)
s.v=vector(random()-0.5,random()-0.5,random()-0.5)*4
atoms.append(s)
dt=0.01
while True:
rate(100)
for s in atoms:
s.pos+=s.v*dt
for k in range(3):
if abs(s.pos[k])>L: s.v[k]*=-1화학 · 예시 2방사성 붕괴
해석 포인트 · 반감기에 따른 원자 수의 지수 감소를 그래프로 나타낸다.
Web VPython 3.2
scene.background=color.white
g=graph(title="Radioactive Decay",xtitle="time",ytitle="N")
c=gcurve(color=color.red)
N0=1000; half=3
for i in range(301):
t=i*0.05
N=N0*(0.5)**(t/half)
c.plot(t,N)화학 · 예시 3반응속도와 농도 감소
해석 포인트 · 1차 반응의 농도 변화를 시간에 따라 수치 적분한다.
Web VPython 3.2
scene.background=color.white
g=graph(title="First-order Reaction",xtitle="time",ytitle="Concentration")
c=gcurve(color=color.green)
A=1.0; k=0.35; dt=0.02; t=0
while t<15:
rate(100)
A += (-k*A)*dt
c.plot(t,A)
t+=dt화학 · 예시 4분자 진동 모형
해석 포인트 · 두 원자를 스프링으로 연결하여 결합 길이의 진동을 단순 모델링한다.
Web VPython 3.2
scene.background=color.black
a=sphere(pos=vector(-1,0,0),radius=0.5,color=color.red)
b=sphere(pos=vector(1,0,0),radius=0.5,color=color.blue)
bond=helix(pos=a.pos,axis=b.pos-a.pos,radius=0.18)
t=0
while True:
rate(60)
t+=0.05
x=1+0.3*sin(3*t)
a.pos.x=-x; b.pos.x=x
bond.pos=a.pos; bond.axis=b.pos-a.pos화학 · 예시 5결정 격자
해석 포인트 · 규칙적인 3차원 격자에 원자를 배치하여 결정 구조의 반복성을 관찰한다.
Web VPython 3.2
scene.background=color.black
scene.range=5
for x in range(-2,3):
for y in range(-2,3):
for z in range(-2,3):
sphere(pos=vector(x,y,z),radius=0.13,color=color.cyan)✦
천문학
융합탐구 Web VPython 예시 5개 천문학 · 예시 1태양-지구-달 운동
해석 포인트 · 지구 공전과 달의 공전을 동시에 갱신하여 계층적 궤도 운동을 관찰한다.
Web VPython 3.2
scene.background = color.black
scene.range = 10
sun=sphere(pos=vector(0,0,0),radius=1,color=color.yellow)
earth=sphere(radius=0.4,color=color.blue,make_trail=True)
moon=sphere(radius=0.15,color=color.white,make_trail=True)
t=0
while True:
rate(60)
t+=0.02
earth.pos=vector(6*cos(t),0,6*sin(t))
moon.pos=earth.pos+vector(1.2*cos(6*t),0,1.2*sin(6*t))천문학 · 예시 2타원 궤도와 케플러 운동
해석 포인트 · 타원 궤도를 따라 행성이 움직이는 단순 모델을 만들고 장반경·단반경의 영향을 비교한다.
Web VPython 3.2
scene.background=color.black
scene.range=8
sun=sphere(pos=vector(-1.5,0,0),radius=0.6,color=color.yellow)
planet=sphere(radius=0.25,color=color.cyan,make_trail=True)
a=6; b=4; t=0
while True:
rate(60)
t+=0.015
planet.pos=vector(a*cos(t),0,b*sin(t))천문학 · 예시 3쌍성계 공전
해석 포인트 · 두 별이 공통 질량중심 주위를 도는 모습을 통해 질량비와 궤도 반경 관계를 해석한다.
Web VPython 3.2
scene.background=color.black
A=sphere(radius=0.55,color=color.red,make_trail=True)
B=sphere(radius=0.35,color=color.blue,make_trail=True)
t=0
while True:
rate(60)
t+=0.02
A.pos=vector(2*cos(t),0,2*sin(t))
B.pos=vector(-4*cos(t),0,-4*sin(t))천문학 · 예시 4은하 회전 모형
해석 포인트 · 여러 별을 서로 다른 반경에 배치하고 각속도를 달리해 은하 회전을 단순화한다.
Web VPython 3.2
scene.background=color.black
stars=[]
for i in range(80):
r=1+5*random()
a=2*pi*random()
s=sphere(pos=vector(r*cos(a),0,r*sin(a)),radius=0.05,color=color.white)
stars.append([s,r,a])
while True:
rate(60)
for item in stars:
s,r,a=item
a+=0.01/sqrt(r)
item[2]=a
s.pos=vector(r*cos(a),0,r*sin(a))천문학 · 예시 5태양계 크기 비교
해석 포인트 · 행성 반지름을 축척해 나열하면서 크기 차이를 시각적으로 비교한다.
Web VPython 3.2
scene.background=color.black
names=["Mercury","Venus","Earth","Mars","Jupiter"]
r=[0.19,0.47,0.5,0.27,2.0]
x=-6
for name,rr in zip(names,r):
sphere(pos=vector(x,0,0),radius=rr,color=color.cyan)
label(pos=vector(x,-2.6,0),text=name,box=False,color=color.white)
x+=3⚙
공학
융합탐구 Web VPython 예시 5개 공학 · 예시 1PID 제어 개념 시뮬레이션
해석 포인트 · 목표 위치와 현재 위치의 오차를 이용해 P·I·D 제어의 역할을 관찰한다.
Web VPython 3.2
scene.background=color.white
target=4
x=0; v=0; e_old=0; integ=0
kp=2.0; ki=0.15; kd=0.8; dt=0.01
cart=box(pos=vector(x,0,0),size=vector(0.8,0.5,0.5),color=color.blue)
while True:
rate(100)
e=target-x
integ+=e*dt
deriv=(e-e_old)/dt
u=kp*e+ki*integ+kd*deriv
v+=u*dt
x+=v*dt
cart.pos.x=x
e_old=e공학 · 예시 2로봇 팔 2관절
해석 포인트 · 두 관절의 회전각을 변화시키며 끝점 위치가 어떻게 달라지는지 관찰한다.
Web VPython 3.2
scene.background=color.black
L1=3; L2=2
j1=cylinder(radius=0.12,color=color.orange)
j2=cylinder(radius=0.1,color=color.cyan)
t=0
while True:
rate(60); t+=0.03
a=sin(t); b=1.2*sin(1.5*t)
p1=vector(L1*cos(a),L1*sin(a),0)
p2=p1+vector(L2*cos(a+b),L2*sin(a+b),0)
j1.pos=vector(0,0,0); j1.axis=p1
j2.pos=p1; j2.axis=p2-p1공학 · 예시 3교량 하중 분산
해석 포인트 · 여러 지점에 작용하는 힘 벡터를 화살표로 표현하여 구조물 하중을 시각화한다.
Web VPython 3.2
scene.background=color.white
bridge=box(pos=vector(0,0,0),size=vector(10,0.4,2),color=color.gray(0.7))
for x in [-4,-2,0,2,4]:
arrow(pos=vector(x,2,0),axis=vector(0,-1.5,0),color=color.red,shaftwidth=0.12)
box(pos=vector(-4,-1,0),size=vector(0.8,2,2),color=color.blue)
box(pos=vector(4,-1,0),size=vector(0.8,2,2),color=color.blue)공학 · 예시 4드론 고도 제어
해석 포인트 · 목표 고도를 향해 올라가고 감쇠하는 단순 피드백 제어를 구현한다.
Web VPython 3.2
scene.background=color.black
drone=box(pos=vector(0,0,0),size=vector(1,0.2,1),color=color.cyan)
target=5; v=0; dt=0.01
while True:
rate(100)
error=target-drone.pos.y
a=1.8*error-1.2*v
v+=a*dt
drone.pos.y+=v*dt공학 · 예시 5프랙탈 안테나
해석 포인트 · 재귀적 선분 배치를 이용해 자기유사 안테나 형상을 3차원 공간에 생성한다.
Web VPython 3.2
scene.background=color.black
def antenna(p,v,d):
if d==0: return
cylinder(pos=p,axis=v,radius=0.035*d,color=color.yellow)
q=p+v
antenna(q,rotate(v*0.7,angle=pi/3,axis=vector(0,0,1)),d-1)
antenna(q,rotate(v*0.7,angle=-pi/3,axis=vector(0,0,1)),d-1)
antenna(vector(0,-4,0),vector(0,2.2,0),6)文
인문학
융합탐구 Web VPython 예시 5개 인문학 · 예시 1단어 빈도 막대 시각화
해석 포인트 · 텍스트 분석 결과를 3차원 막대로 나타내어 디지털 인문학의 데이터 표현을 체험한다.
Web VPython 3.2
scene.background=color.white
words=["AI","data","ethics","human"]
count=[8,5,7,4]
for i in range(len(words)):
box(pos=vector(i*2-3,count[i]/2,0),size=vector(1,count[i],1),color=color.blue)
label(pos=vector(i*2-3,-0.7,0),text=words[i],box=False,color=color.black)인문학 · 예시 2서사 분기 트리
해석 포인트 · 이야기의 선택지를 트리 형태로 표현해 분기 구조와 탐색 개념을 연결한다.
Web VPython 3.2
scene.background=color.white
nodes=[vector(0,3,0),vector(-2,1,0),vector(2,1,0),
vector(-3,-1,0),vector(-1,-1,0),vector(1,-1,0),vector(3,-1,0)]
for p in nodes: sphere(pos=p,radius=0.25,color=color.orange)
for a,b in [(0,1),(0,2),(1,3),(1,4),(2,5),(2,6)]:
cylinder(pos=nodes[a],axis=nodes[b]-nodes[a],radius=0.04,color=color.black)인문학 · 예시 3왕조 계보 시각화
해석 포인트 · 계층적 역사 자료를 트리 구조로 나타내 관계 중심의 해석을 시도한다.
Web VPython 3.2
scene.background=color.white
levels=[[vector(0,3,0)],[vector(-2,1,0),vector(2,1,0)],
[vector(-3,-1,0),vector(-1,-1,0),vector(1,-1,0),vector(3,-1,0)]]
for row in levels:
for p in row: sphere(pos=p,radius=0.22,color=color.cyan)인문학 · 예시 4철학 개념 관계망과 인문학 텍스트의 연결
해석 포인트 · 핵심 개념을 노드, 관련성을 간선으로 나타내 개념지도를 공간화한다.
Web VPython 3.2
scene.background=color.black
P=[vector(0,2,0),vector(-2,0,0),vector(2,0,0),vector(0,-2,0)]
N=["Reason","Freedom","Ethics","Knowledge"]
for p,n in zip(P,N):
sphere(pos=p,radius=0.3,color=color.yellow)
label(pos=p+vector(0,0.6,0),text=n,box=False,color=color.white)
for a,b in [(0,1),(0,2),(1,3),(2,3)]:
cylinder(pos=P[a],axis=P[b]-P[a],radius=0.035,color=color.white)인문학 · 예시 5시의 반복 리듬 시각화
해석 포인트 · 문장의 음절 또는 강세 패턴을 높이 변화로 나타내 반복 구조를 시각적으로 분석한다.
Web VPython 3.2
scene.background=color.white
pattern=[1,3,2,4,2,3,1,4]
for i,h in enumerate(pattern):
cylinder(pos=vector(i-4,0,0),axis=vector(0,h,0),radius=0.12,color=color.magenta)✚
의학
융합탐구 Web VPython 예시 5개 의학 · 예시 1약물 농도 감소
해석 포인트 · 반감기 모델을 이용해 체내 약물 농도의 시간 변화를 시각화한다.
Web VPython 3.2
scene.background=color.white
g=graph(title="Drug Concentration",xtitle="time",ytitle="C")
c=gcurve(color=color.blue)
C0=100; half=4
for i in range(401):
t=i*0.05
C=C0*(0.5)**(t/half)
c.plot(t,C)의학 · 예시 2심박수 이상 탐지
해석 포인트 · 정상 범위를 벗어난 값을 다른 색의 점으로 표시하여 조건 판정 과정을 시각화한다.
Web VPython 3.2
scene.background=color.white
g=graph(title="Heart Rate",xtitle="time",ytitle="bpm")
normal=gdots(color=color.blue,radius=3)
abnormal=gdots(color=color.red,radius=5)
data=[72,75,78,74,110,76,73,48,77,80]
for i,v in enumerate(data):
if 55<=v<=100: normal.plot(i,v)
else: abnormal.plot(i,v)의학 · 예시 3체온 변화 시뮬레이션
해석 포인트 · 체온이 목표값으로 회복되는 과정을 단순한 완화 모델로 표현한다.
Web VPython 3.2
scene.background=color.white
g=graph(title="Body Temperature",xtitle="time",ytitle="C")
c=gcurve(color=color.red)
T=39.5; normal=36.5; dt=0.05; t=0
while t<20:
T += -0.18*(T-normal)*dt
c.plot(t,T)
t+=dt의학 · 예시 4혈류 속도 프로파일
해석 포인트 · 혈관 단면에서 중심이 빠르고 벽면이 느린 포물선 속도 분포를 나타낸다.
Web VPython 3.2
scene.background=color.black
R=3
for i in range(-30,31):
r=i/10
if abs(r)<=R:
v=1-(r/R)**2
arrow(pos=vector(r,0,0),axis=vector(0,2*v,0),color=color.red,shaftwidth=0.04)의학 · 예시 5전염병 확산 SIR 단순 모델
해석 포인트 · 감염 가능자·감염자·회복자의 시간 변화를 세 곡선으로 비교한다.
Web VPython 3.2
scene.background=color.white
g=graph(title="SIR Model",xtitle="time",ytitle="ratio")
s1=gcurve(color=color.blue); s2=gcurve(color=color.red); s3=gcurve(color=color.green)
S=0.99; I=0.01; R=0; beta=0.6; gamma=0.18; dt=0.02; t=0
while t<40:
dS=-beta*S*I; dI=beta*S*I-gamma*I; dR=gamma*I
S+=dS*dt; I+=dI*dt; R+=dR*dt
s1.plot(t,S); s2.plot(t,I); s3.plot(t,R)
t+=dtΦ
철학
융합탐구 Web VPython 예시 5개 철학 · 예시 1결정론적 규칙과 무작위성 비교
해석 포인트 · 같은 초기값과 규칙을 갖는 운동과 무작위 운동을 나란히 두어 결정성과 우연성을 비교한다.
Web VPython 3.2
scene.background=color.black
a=sphere(pos=vector(-4,0,0),radius=0.25,color=color.cyan,make_trail=True)
b=sphere(pos=vector(4,0,0),radius=0.25,color=color.yellow,make_trail=True)
t=0
while True:
rate(60); t+=0.03
a.pos=vector(-4+2*cos(t),2*sin(t),0)
b.pos += vector((random()-0.5)*0.15,(random()-0.5)*0.15,0)철학 · 예시 2무한 반복과 종료 조건
해석 포인트 · 종료 조건이 있는 반복과 없는 반복의 차이를 시각적 상태 변화로 이해한다.
Web VPython 3.2
scene.background=color.white
ball=sphere(pos=vector(-5,0,0),radius=0.3,color=color.blue)
while ball.pos.x < 5:
rate(60)
ball.pos.x += 0.05
label(pos=vector(0,-1,0),text="Stopped by condition",box=False,color=color.black)철학 · 예시 3자기참조와 재귀 구조
해석 포인트 · 재귀적으로 작은 구조가 다시 같은 형태를 만드는 자기참조적 패턴을 관찰한다.
Web VPython 3.2
scene.background=color.black
def self_ref(p,s,d):
if d==0:return
box(pos=p,size=vector(s,s,s),opacity=0.25,color=color.cyan)
self_ref(p+vector(s*0.6,s*0.6,0),s*0.55,d-1)
self_ref(vector(-2,-2,0),3,7)철학 · 예시 4선택과 분기
해석 포인트 · 각 단계의 선택이 다른 경로를 만드는 의사결정 트리를 공간적으로 표현한다.
Web VPython 3.2
scene.background=color.white
root=vector(0,3,0)
children=[vector(-2,1,0),vector(2,1,0)]
sphere(pos=root,radius=0.3,color=color.orange)
for p in children:
sphere(pos=p,radius=0.3,color=color.cyan)
arrow(pos=root,axis=p-root,color=color.black,shaftwidth=0.05)철학 · 예시 5규칙 기반 세계의 예측 가능성
해석 포인트 · 단순한 운동 규칙에서 초기조건 변화가 결과 경로를 어떻게 바꾸는지 비교한다.
Web VPython 3.2
scene.background=color.black
balls=[]
for i,vx in enumerate([1.0,1.02,1.04]):
b=sphere(pos=vector(-5,i-1,0),radius=0.18,color=color.cyan,make_trail=True)
b.v=vector(vx,0.6+0.02*i,0)
balls.append(b)
dt=0.02
while True:
rate(60)
for b in balls:
b.pos+=b.v*dt
b.v.y-=0.3*dt