使用列表中的值绘制多个函数

时间:2013-03-10 19:49:04

标签: python

这是我需要做的要点:在python中,我有一个参数函数f(x(t,omega),y(t,omega))其中omega有五个特定值(非定期间隔) )。我想要做的是基本上在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,omega)和y(t,omega),我用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()

1 个答案:

答案 0 :(得分: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()