2016-09-15 44 views
0

我試圖在python中生成一個圖來確定行星的速度,V = sqrt(GM/r)。我的做法是這樣的:用「R」的最大和最小的值已經被賦予TypeError:不支持的操作數類型爲/:'float'和'list',無法解析

r = range (57909227, 5906440628, 10000000) 

我可以「R」產生幾百點。 G和M的值也被給出。我的代碼看起來是這樣的:

import sys 
import os 
import numpy 
import matplotlib.pyplot as plt 
from pylab import * 

G=6.67*10**(-11) 
M=2.0*10**30 

radial_distance = range (57909227, 5906440629, 10000000) 




for distance in radial_distance: 
    plt.plot(radial_distance, ((G*M)/distance)**0.5, '*') 
plt.show() 

返回我下面的錯誤:

File "generate_list.py", line 20, in <module> 
    plt.plot(radial_distance, ((G*M)/distance)**0.5, '*') 
    File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3154, in plot 
    ret = ax.plot(*args, **kwargs) 
    File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py", line 1812, in inner 
    return func(ax, *args, **kwargs) 
    File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 1424, in plot 
    for line in self._get_lines(*args, **kwargs): 
    File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 386, in _grab_next_args 
    for seg in self._plot_args(remaining, kwargs): 
    File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 364, in _plot_args 
    x, y = self._xy_from_xy(x, y) 
    File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 223, in _xy_from_xy 
    raise ValueError("x and y must have same first dimension") 
ValueError: x and y must have same first dimension 

請幫我修正這個錯誤。

+0

'range'返回一個值列表。您不能通過列表 – Li357

+0

將範圍(1,100,10)劃分爲列表[1,11,21,31,41,51,61,71,81,91]。你不能劃分一個浮點數和一個列表。你究竟在做什麼? –

+0

我必須生成幾百個距離值,然後使用這些值來繪製V的函數,那麼生成r值然後在函數中使用的最有效方法是什麼? – bhjghjh

回答

2

您需要的是在列表中將元素表達式應用於表達式,然後將結果列表傳遞給plot。

y = [((G*M)/x)**0.5 for x in radial_distance] 
plt.plot(radial_distance, y) 
相關問題