0

这是我需要做的要点:在 python 中,我有一个参数函数 f(x(t,omega),y(t,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 的形式拥有 at . 如果您绘制此图,您会发现即使所有线条在技术上都存在,也很难从中获取大量信息。任何帮助深表感谢!

编辑:我得到了我需要的东西。对于因遇到类似问题而遇到此线程的任何人,我修改后的代码在很大程度上要归功于以下答案和一些进一步的搜索:

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()
4

1 回答 1

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()
于 2013-03-10T22:40:18.523 回答