2017-12-20 4 views
1

ich eine Figur zu zeichnen versuchen, ich habe meine Variable und meine Funktion definiert, ich weiß nur nicht, warum es mir wie ein leeres Grundstück gibtPlotten eine Variable und eine Funktion

from __future__ import division 

import numpy as np 

import math 
import matplotlib.pyplot as plt 

num= 1e13 
nuM= 1e16 
N= 100 

def f(nuj): 
    return nuj**2 

for j in range(N): 
    nuj = num*(nuM/num)**(j/N) 
    print nuj 

print f(nuj) 
plt.xscale('log') 
plt.yscale('log') 
plt.xlim(1e10, 1e20) 
plt.ylim(1e27, 1e33)   
plt.plot(nuj, f(nuj)) 
plt.show() 
+0

In Ihrem Code NUJ ist ein Skalar. Es behält also nur einen einzigen Gleitkommawert nach der Schleife bei. Sie sehen also einen einzelnen Punkt in der Handlung. Deklariere nuj als ein Array von Nullen wie nuj = np.zeros (N) und füge dann einen Index in deine Schleifenanweisung ein wie nuj [j] = num * (nuM/num) ** (j/N). Dann sollten Sie die Plots richtig sehen. – SigmaPiEpsilon

Antwort

0

Sie in der Regel würden definieren die Werte, die direkt als numpy array gezeichnet werden sollen.

nuj = num*(nuM/num)**(np.arange(N)/N) 

Dies stellt sicher, alle Werte in der Handlung zu haben, anstatt nur einen einzigen.

from __future__ import division 
import numpy as np 
import matplotlib.pyplot as plt 

num= 1e13 
nuM= 1e16 
N= 100 

def f(nuj): 
    return nuj**2 

nuj = num*(nuM/num)**(np.arange(N)/N) 

plt.xscale('log') 
plt.yscale('log') 
plt.xlim(1e11, 1e18) 
plt.ylim(1e26, 1e33)   
plt.plot(nuj, f(nuj)) 
plt.show() 

enter image description here

+0

vielen Dank, es funktioniert –

+0

Ich habe nur eine Frage, nur um besser zu verstehen, wenn ich den Bereich für meine Nuj definieren, warum Python nicht alle Werte dazu gibt? Was, wenn ich den Plot-Code in die Schleife setze? es funktioniert immer noch nicht –

+0

Nicht sicher, was Sie mit "geben Sie alle Werte" gemeint. Im Code aus der Frage definierst du 'nuj' in jedem Schleifenschritt zu einer einzelnen Zahl. Nachdem die Schleife beendet ist, ist 'nuj' der Wert der letzten Schleifenstufe. Deshalb möchten Sie hier keine Schleife verwenden. – ImportanceOfBeingErnest

Verwandte Themen