2017-12-21 13 views
1

수치 솔루션의 정확성과 이것이 선택한 timestep의 값에 따라 어떻게 달라지는지를 보여 드리고자합니다.여러 timestep 값에 대해 여러 개의 그림 생성

def f(te3): 
    y3 = -r3*(te3 - te_surr) #y is the derivative 
    return y3 


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

이 수치 해석은 플롯 : 수치 용액에 다음 코드를 사용하여 제조된다

plt.plot(t3,te3) 

는 원래 DT 0.1가되도록 선택 하였다.

dt2 = 0.05 
dt3 = 0.025 
dt4 = 0.01 
dt5 = 0.005 
dt6 = 0.001 

다음, 0.05, 0.01, 등 그러나 내가 수동으로 DT의 각 값을 입력 이외의 내 코드로이를 구현하는 방법을 확실하지 오전 : 나는 시간 단계의 서로 다른 값을 생성하는 다양한 플롯을 보여주기 위해 노력하고 있어요 각 dt 값에 대해 위에 표시된 코드를 변경하는 등. 이 값을 목록이나 배열로 저장할 수있는 방법이 있나요?이 값을 플롯 (plot)하는 데 사용할 수 있습니까?

답변

1

dt에 대해 te3을 보유하는 사전을 사용할 수 있습니다. 예를 들어 :

dt_values = [0.05, 0.025, 0.1, 0.05, 0.001] 

my_te3 = {0.05:[1,2,3], 0.025:[1,2,3]} 

for i, dt in zip(range(1, len(my_te3[0.05])), dt_values): 
    my_te3[dt][i] = my_te3[dt][i-1] + f(my_te3[dt][i-1])*dt 

그런 다음, 플롯, 당신은 루프의 열쇠가 필요합니다 itervalues는 파이썬 2.7에서 작동

for te3 in my_te3.itervalues(): 
    plt.plot(t3,te3) 

하는 것으로. Python 3의 경우 .values을 대신 사용하십시오.

+0

음모를 꾸미려고 할 때 "x와 y의 첫 번째 치수가 같아야합니다"라는 메시지가 표시됩니다. 이유는 무엇입니까? –

+0

't3'와'te3'는 같은 크기가 아닙니다. 플롯하기 위해서는 동일한 수의 구성 요소가 있어야합니다. – gabra