도전 과제에 도움이 필요합니다.시뮬레이션 바운싱 플로팅
대기의 한도 인 250km에서 일정한 가속도 g = 8.87ms2로 공을 Venus에 떨어 뜨린 것으로 가정합니다. 볼의 동작을 1 시간 15 분 동안 모델링하십시오 (데이터 포인트에 두 번째 00 및 두 번째 4,500 포함). 초기 상태 후에 상태에 대한 5,000 번의 시뮬레이션을 시뮬레이션하십시오 (총 5,001 점). 시뮬레이션은 시간 (t) 및 높이 (y)에 대해 float64 numpy 배열을 사용해야합니다. 시간은 초로 표현되어야하며 높이는 미터로 표현되어야합니다.
바운싱을 시뮬레이트하기 위해 충돌 감지가 복잡 할 수 있으므로 가정을 간소화합니다. 볼의 높이가 0보다 작거나 같으면 우리는 시뮬레이트 중이며 이미 튀어 오르기 시작한 시간 단계 전에 볼이 바닥에 떨어 졌다고 가정합니다. 당신은해야한다 :
- 즉시 최대 대신 시뮬레이션
- 변화 이동 방향 (이전 타임 슬라이스에서의 속도의 90 % (0.9) 0
- 갱신에 그 속도를 높이 설정 아래)이 경우 -in, 지금은 현재의 속도, 즉, VC [I] = -0.9 사용하세요 * VC [i]를
공 정수 변수라는 반송에서 반사되는 횟수를 카운트.
제출시 적절한 치수 및 값의 배열 t 및 y와 bounces라는 int가 포함되어야합니다.
여기까지 내 코드입니다. 내 y 값이 올바르지 않다고합니다.
import numpy as np
import matplotlib.pyplot as plt
g=-8.87
t=np.linspace(0,4500,5001,dtype=np.float64)
v=np.zeros(5001)
y=np.zeros(5001)
bounces=0
y[0]=250000
for i in range(1,5001):
if y[i-1]+0.9*v[i-1]>0:
v[i]=v[i-1]+g*(0.9)
y[i]=y[i-1]+0.9*v[i-1]
if y[i-1]+0.9*v[i-1]<=0:
v[i]=-0.9*v[i]
y[i]=0
bounces+=1
는 y 값의 실수를 볼 수 없습니다 예를 볼 수 있어야한다. 그러나 튀는 + = 1은 들여 쓰기되어야합니다. – chasmani