2017-12-20 3 views
0

다양한 환경에서 재료의 온도를 시뮬레이션하고 있습니다. 온도 대 시간의 플롯을 만들고 싶습니다. 온도가 일정한 온도에서 추가로 5도 정도 온도가 떨어지면 온도 변화율이 관찰됩니다. 처음에는 다음과 같았습니다 :반복적 인 프로세스를 가진 파이썬의 조건문

for i in range(1,len(t)): 
    te[i] = te[i-1] + f(te[i-1])*dt  

시간이 감소하는 곡선을 그리는데 사용되었습니다. 저는 지금 플롯에 두 부분을 만들고 싶습니다. 내 플롯의 x 값은 t입니다. y 값은 Te입니다. Te가 80 미만인 시간이 지나면 모든 Te 값을 5 씩 줄이고 싶습니다. 일반적으로 IDL을 사용하므로 T의 라인을 따라 뭔가를 말합니다 (t = 80). 이것은 내가 지금까지 가지고있는 것입니다. 분명히 구문이 완전히 틀렸고, i 값은 시간 값이 아닌 인덱스입니다.

t80 = t where Te <= 80.0 

for i in range(1,t80): 
    te[i] = te[i-1] + f(te[i-1])*dt 

for i in range(t80,len(t)): 
    te3[i] = te3[i-1] + f(te3[i-1])*dt - 5 

아무도 내가 파이썬에서 t80을 정의하는 방법을 알고 있습니까?

+0

마지막 공식은 맞습니까? 't80' 이후 5도 _once_ 또는 그 이후의 모든 step_에서 온도를 줄이려면 확실하지 않습니다. –

+0

또한 하나의 온도가 80 이하로 떨어지면 80 이하로 떨어지며 그렇지 않은 경우 다시 80 이상으로 올라가면 (다시 한 번 떨어지면) 어떻게됩니까? –

+0

본질적으로 나는 그것이 뜨겁거나 온도가 내려갈 때까지 냉각되는 액체를 가지고있다. 이 동작을 설명하는 함수를 정의했습니다. 차가운 액체를 넣은 후 온도가 5도 떨어집니다. – Louise

답변

1

온도가 80도 아래로 떨어지면 온도가 으로 5도 더 감소합니다. 이 맞다면, 당신은 단순히 for 루프에 if 조건을 추가 할 수 있습니다 대신 온도가 액체 후 모든 단계 부어 된 에서 추가로 5 개도에 의해 드롭해야하는 경우

cooling_liquid_poured = False 
for i in range(1,len(t)): 
    te[i] = te[i-1] + f(te[i-1])*dt 
    if te[i] < 80 and not cooling_liquid_poured: 
     te[i] -= 5 
     cooling_liquid_poured = True 

, 그냥 제거 변수를 확인하고 if te[i] < 80을 확인하십시오.

관련 문제