2013-03-10 6 views
0

이것은 내가해야하는 요점입니다. 파이썬에서 필자는 오메가가 5 개있는 파라 메트릭 함수 f (x (t, omega), y (t, omega) 특정 값 (비정규 간격). 제가하고자하는 것은 기본적으로 오메가의 다섯 가지 값 각각에 대해 동일한 플롯에이 함수 f를 플롯하는 것입니다.목록에있는 값을 사용하여 여러 함수를 그려야합니다.

이제는 작동 코드가 있지만 더 간결해질 수 있다고 생각합니다. (그리고 저는 어떻게하면 더 간결해질 수 있는지 알고 싶습니다. 왜냐하면 제가 할 수있는 한 많은 것을 배우기를 원하기 때문입니다. 이 운동에서), 또한 x (t, omega)의 범위를 수정하는 방법을 알 수 없습니다! 이 마지막 지점이 가장 문제가됩니다.

여기 내 "작업"코드 :

x=linspace(0,10,100) 
H0=71 
omega0=1.01 
Rc=0.5*(omega0/(omega0-1))*(1-cos(x)) 
tc=(0.5/H0)*(omega0/(omega0-1)**(3/2))*(x-sin(x)) 
plot(tc,Rc) 
omega0=1.1 
Rc=0.5*(omega0/(omega0-1))*(1-cos(x)) 
tc=(0.5/H0)*(omega0/(omega0-1)**(3/2))*(x-sin(x)) 
plot(tc,Rc) 
omega0=1.5 
Rc=0.5*(omega0/(omega0-1))*(1-cos(x)) 
tc=(0.5/H0)*(omega0/(omega0-1)**(3/2))*(x-sin(x)) 
plot(tc,Rc) 
omega0=2.0 
Rc=0.5*(omega0/(omega0-1))*(1-cos(x)) 
tc=(0.5/H0)*(omega0/(omega0-1)**(3/2))*(x-sin(x)) 
plot(tc,Rc) 
omega0=3.0 
Rc=0.5*(omega0/(omega0-1))*(1-cos(x)) 
tc=(0.5/H0)*(omega0/(omega0-1)**(3/2))*(x-sin(x)) 
plot(tc,Rc) 
show() 

당신이 볼 수 있듯이, TC 및 Rc를 내 X (t, 오메가)와 y (t, 오메가)의 역할과 나는 같은 x를 사용했습니다 내 파라 메트릭 변수, 왜냐하면 ... 글쎄, 나는 이미 tc 형식을 가지고있다. 이것을 플로팅하면 모든 라인이 기술적으로 존재하더라도 많은 정보를 얻는 것이 어렵다는 것을 알 수 있습니다. 어떤 도움을 많이 주시면 감사하겠습니다!

편집 : 필요한 것을 얻었습니다. 그들은 비슷한 문제를 가지고 있기 때문에이 스레드를 통해 오는 누군가를 위해, 아래의 답변을 몇 가지 더 검색에 많은 부분에서 내 수정 된 코드 감사는 다음과 같습니다

import numpy as np 
import pylab as pl 
from pylab import * 

x=linspace(0,50,1000) 
H0=71 #units km/s/Mpc 
omegas = [1.01,1.1,1.5,2.0,3.0] 
Rcs = [0.5*(omega0/(omega0-1))*(1-cos(x)) for omega0 in omegas] 
tcs = [(0.5/H0)*(omega0/(omega0-1)**(3/2))*(x-sin(x)) for omega0 in omegas] 
for pair in zip(tcs,Rcs): 
     pl.plot(pair[0],pair[1]) 
pl.xlim(0,0.55) 
pl.ylim(0,60) 
pl.show() 

답변

0

코드에서 중복을 줄일 수있는 가장 분명한 방법은을 사용하는 것입니다 반복 또는 목록 이해를위한 :

x=linspace(0,10,100) 
H0 = 71 
omegas = [1.01,1.1,1.5,2.0,3.0] 
rcs = [0.5*(omega0/(omega0-1))*(1-cos(x)) for omega0 in omegas] 
tcs = [(0.5/H0)*(omega0/(omega0-1)**(3/2))*(x-sin(x)) for omega0 in omegas] 
for pair in zip(tcs,rcs): 
    plot(pair[0],pair[1]) 
show() 
+0

어떤 차이가 있습니까? for 루프를 구현하려고하는데 구문을 가져올 수 없었습니다 ... 이것은 완벽합니다. 정말 고마워요. – CBerard14

관련 문제