2013-03-10 46 views
0

這是我需要做的要點:在python中,我有一個參數函數f(x(t,omega),y(t,omega)),其中Ω有五個特定值(非固定間隔)。我想要做的是基本上在同一個圖上爲這五個歐米茄值的每一個繪製這個函數f。使用列表中的值繪製多個函數

現在,我有一個工作代碼,但我認爲它可以更簡潔(我非常有興趣知道它可以更簡潔,因爲我想學習儘可能多的關於python從這個練習中),還有,我無法弄清楚如何在這裏修正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

最明顯的方式,以減少代碼的冗餘是使用for循環或列表理解:

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 2013-03-10 23:55:36

相關問題