0
eng3 = [solve(eng==(k-1)*md*Vm^2/(2*Patm*Vc*(Pc-Pc^(1/k))),Vc,solution_dict=1) for Pc in  xrange(2,10)]

我正在尝试自动化圣人数学中一些效率图的过程,并且我有这个公式。Matplotlib.pyplot想要一个值列表。我要么得到一个列表中的字典,如下所述,要么得到一个如下形式的列表:

List:
[[Vc == (5231100000/35166511904977)], [Vc == (111907000000/1692075843832947)], [Vc == (364112000000/8911538005781703)], [Vc == (753818000000/25992803547821049)], [Vc == (138358000000/6222694018119437)], [Vc == (659020000/36808310575981)], [Vc == (25902500000/1736640592770261)], [Vc == (59144000000/4642920082445667)]]

Dictionary:    
[[{Vc: 1743700000/105499535714931}], [{Vc: 319775000/43516062236099}], [{Vc:  34670000000/7636845816518169}], [{Vc: 41083500000/12749600170083701}], [{Vc: 1703720000/689628024927753}], [{Vc: 25247000000/12691109152994019}], [{Vc: 44767000000/27012747987604137}], [{Vc: 5993300000/4234372317920577}]]

我想取这些分数,将它们转换为它们的数值近似值,并在 sage math[python] 中创建一个包含这些值的列表。该n()函数会将分数转换为小数,但我不确定如何隔离值以将其提供给n().

4

1 回答 1

1

该列表来自solve,但问题实际上是一个纯 Python 问题。要获得其中的每一个,如果调用了列表Vlist,您可以这样做

[v[0].rhs().n() for v in Vlist]

而对于字典来说有点麻烦

[v[0].values()[0].n() for v in Vlist]

这种构造被称为“列表理解”。这些假设您确实对每个都有单一的解决方案!如果格式不同(例如,如果你得到类似的东西Vc == 2*Vc^2)那么你必须更聪明。

背景 - 显然这个 ask.sagemath.org 问题是相关的。

于 2012-08-29T12:11:33.883 回答