Seite 1 von 1

Slice-Operation (Schaubild)

Verfasst: Dienstag 22. Juni 2010, 15:04
von archilleus
Ich habe hier eine Aufgabe, bei der ich etwas hänge. Ich hoffe, ihr könnt mir n bisschen weiterhelfen. (erforderlich: numpy und pylab)
http://img251.imageshack.us/i/41151404.jpg/

Wie erzeuge ich die Darstellung nur jeden 10. Punktes in Aufgabe 2?

Code: Alles auswählen

print "Aufgabe 1"
from numpy import*
from pylab import* 
x=linspace(-2*pi, 2*pi, 1000)
a=sin(1/x)
b=arctan(x)
c=exp((-x**2)/(2*pi))*cos(8*x)
amin=min(a)
amax=max(a)
bmax=min(b)
bmin=max(b)
cmin=min(c)
cmax=max(c)

print "Die Minimalwerte sind a) %.4f, b) %.4f und c) %.4f" % (amin, bmin, cmin)
print "Die Maximalwerte sind b) %.4f, b) %.4f und c) %.4f" % (amax, bmax, cmax)


plot(x, a, label="sin(x)")
plot(x, b, label="arctan(x)")
plot(x, c, linestyle="dotted", linewidth=2.5, label="exp((-x**2)/(2*pi))*cos(8*x)") # Funktion c) wird ab hier geplottet.
xlabel ("x")
ylabel ("y")
title("Schaubilder der Funktionen")
legend(loc="lower right")
grid()
ylim(-1.5,1.5)
xlim(-2*pi,2*pi)
sleep(1)
print
print "Aufgabe 2"
print "siehe Schaubild"
x2=linspace(-2*pi, 2*pi, 100)
a2=sin(1/x2)
figure()
plot(x, a, color="blue", linestyle="dotted", linewidth=2.5, label= "Aufgabe 1a)")
plot(x2, a2, color="red", label="Aufgabe 2)")
xlim(-.5,.5)
ylim(-.4,.4)
title("gezoomt!")
legend()
grid()
show()

Re: Slice-Operation (Schaubild)

Verfasst: Dienstag 22. Juni 2010, 15:06
von Dav1d
Das wird dir helfen ;)

Code: Alles auswählen

>>> x = range(1000)
>>> x[::10]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710, 720, 730, 740, 750, 760, 770, 780, 790, 800, 810, 820, 830, 840, 850, 860, 870, 880, 890, 900, 910, 920, 930, 940, 950, 960, 970, 980, 990]

Re: Slice-Operation (Schaubild)

Verfasst: Dienstag 22. Juni 2010, 15:11
von archilleus
ich steh grad auf dem schlauch :? wie bau ich die range richtig in a2 und x2 ein? und wo liegt der denkfehler bei den "100"?
kannst mir bitte noch n bisschen weiterhelfen? hab die aufgabe vor langem bearbeitet und nehme sie jetzt wieder auf...

Re: Slice-Operation (Schaubild)

Verfasst: Dienstag 22. Juni 2010, 15:41
von BlackJack
@archilleus: `range()` baust Du da nirgends ein. Das "slicing" brauchst Du. Das ist jetzt aber echt zu trivial um es Dir da tatsächlich einzubauen. Lies Dir die Dokumentation zur "sclice"-Syntax durch und probier einfach mal ein wenig in einer Python-Shell herum. Ruhig auch direkt mit `x2` und `a2`. Von denen willst Du ja jeden 10. Wert haben.

Re: Slice-Operation (Schaubild)

Verfasst: Dienstag 22. Juni 2010, 16:58
von archilleus
tut mir leid, ich bin echt nicht die leuchte. mit der sufu find ich leider auch keine "dokumentation". hast du vllt nen link dazu?
jetzt erwirke ich nen syntax error mit:

Code: Alles auswählen

a2=sin(1/x2)
...
x2=linspace(-2*pi, 2*pi, 1000)
x3=x2[::10]
...
plot(x3, a2, color="red", label="Aufgabe 2)")
im shell-fenster klappt das prima, im kontext mit a2 nich -.-

Code: Alles auswählen

ValueError: x and y must have same first dimension
jetzt vertragen sich x3 und a2 nicht?


EDIT: sin(1/x3) natürlich statt x2.

DONE!

Re: Slice-Operation (Schaubild)

Verfasst: Dienstag 22. Juni 2010, 20:09
von HerrHagen
Der Fehler steht doch da: a2 und x3 haben nicht die selbe Größe.
Matplotlib braucht eine Liste von x- und eine von y-Koordinaten um einen Plot zu zeichnen. D.h. Jedes Paar stellt einen Punkt mit einer eindeutigen Koordinate dar. Was passiert nun wenn eine x-Koordinate vorhanden ist, aber kein y-Koordinate? Ein Fehler natürlich.
Damit es funktioniert muss also deine x und deine y-koordinaten-Liste die selbe Größe haben. D.h. du musst musst den slice auch auf a2 anwenden.
Nochmal: Matplotlib ist kein symbolischer Funktionsplotter. Matplotlib nimmt entsprechend nur eine Liste von Koordinaten und zeichnet Punkte (bzw. verbundene Punkte) an die entsprechende Stelle im Plot.

Re: Slice-Operation (Schaubild)

Verfasst: Dienstag 22. Juni 2010, 20:45
von EyDu
archilleus hat geschrieben:tut mir leid, ich bin echt nicht die leuchte. mit der sufu find ich leider auch keine "dokumentation". hast du vllt nen link dazu?
Der erste Treffer bei Google ;-)