2016-05-26 8 views
1

alle.Generating Point Sets für gegenseitige Funktion

Ich schreibe eine Funktion, die die Punkte erzeugt, um eine reziproke Funktion zu zeichnen. Hier ist der Code:

def genRecp(xValrange=3, shiftHoriz=0, shiftVert=0, vertStrech=1, horizStrech=1): 
    #setup variables for processing 
    xrangeP = xValrange 
    xrangeN = xrangeP - xrangeP * 2 
    vals = [] 
    #start adding values to array 
    while xrangeN <= xrangeP: 
     curX = xrangeN 
     if curX == 0: 
      xrangeN += 1 
      continue 
     #generate y values 
     curY = vertStrech * (1/(horizStrech * curX - shiftHoriz)) + shiftVert 
     newVal = [curX, curY] 
     #add value to array 
     vals.append(newVal) 
     #LOOOOOOP! 
     xrangeN +=1 
    return vals 

Der Code scheint in Ordnung, aber wenn ich den folgenden Befehl ausführen:

genRecp() 

Ich erhalte diese Ausgabe: [[-3, -1], [-2, -1], [-1, -1], [1, 1], [2, 0], [3, 0]] die eindeutig kein Array von Basispunkten für eine reziproke Funktion.

Was mache ich falsch? Vielen Dank im Voraus.

Antwort

0

Ihre Standardparameterwerte sind alle Ganzzahlen und die Zeile, die curY berechnet, verwendet die Ganzzahldivision /. Damit werden die berechneten Werte zu einer Ganzzahl gerundet.

Tun Sie etwas, um Ihre Werte nicht ganzzahlig zu machen, nämlich Gleitkomma, zwingen Sie Ihre Werte zu schweben, indem Sie den Zähler und den Nenner in die Typumwandlungsfunktion float() einschließen. Oder vielleicht ändern Sie die 1 Konstante in dieser Zeile zu 1.0.

+0

Vielen Dank für den Hinweis. Nachdem alle Werte in float geändert wurden, hat alles geklappt. – bendacoder

+0

Wenn Sie meinen, dass Sie nur die Standardwerte geändert haben, empfehle ich, dass Sie darüber hinausgehen. Der Aufrufer kann alle ganzzahligen Parameter verwenden, was zu ganzzahligen Koordinaten führen kann. –