graf
Hej!
Skriver in följande kod. Vill att den ska plotta en enda graf med alla punkter som loopen gör, men istället kommer det upp flera fönster med en punkt i varje. Vill alltså att det ska vara EN graf med flera punkter och en linje enligt det som jag skrivit. Hur gör jag det och varför blir det inte så?
#Eulers stegmetod
import matplotlib.pyplot as plt
dy = lambda x,y: y*2
xi=0
xf=1
h=0.2
n=int((xf-xi)/h)
x=0
y=1
for i in range(1,n+1):
y = y + dy(x,y) * h
x = x + h
plt.plot(x,y,'o')
plt.show()
Varför blir det inte så: För du skickar bara ett x och ett y till plot-funktionen, och sen ropar på show. Sen upprepas detta via loopen. Det ger många bilder med en punkt uppritad i varje.
Lägg istället alla x-värden i en lista, och alla y i en annan lista (i samma ordning, dvs så att varje punkt har sina koordinater på samma index i båda listor). Kalla sen på plt.plot en enda gång, men ge den båda listor.
Skaft skrev:Varför blir det inte så: För du skickar bara ett x och ett y till plot-funktionen, och sen ropar på show. Sen upprepas detta via loopen. Det ger många bilder med en punkt uppritad i varje.
Lägg istället alla x-värden i en lista, och alla y i en annan lista (i samma ordning, dvs så att varje punkt har sina koordinater på samma index i båda listor). Kalla sen på plt.plot en enda gång, men ge den båda listor.
Hej, tack för svaret! Gjorde som nedanstående kod istället, med listor, men nu blir det så att jag får flera grafer där de succesivt får fler och fler punkter. Så jag får liksom inte ut en enda graf bara.
#Eulers stegmetod
import math
import matplotlib.pyplot as plt
dy = lambda x,y: y*2
f = lambda x: math.exp(2*x)
xi=0
xf=1
h=0.1
n=int((xf-xi)/h)
x=0
y=1
x_lista = []
y_euler = []
y_analys = []
for i in range(1,n+1):
x_lista.append(x)
y_euler.append(y)
y_analys.append(f(x))
y = y + dy(x,y) * h
x = x + h
plt.plot(x_lista,y_euler,x_lista,y_analys)
plt.show()
Har aldrig gjort listor förut så antar att nåt blivit fel med det. Vet dock inte vad.
Nu plottar du inne i for-loopen.
Dr. G skrev:Nu plottar du inne i for-loopen.
Jahaaa haha nu blev det rätt! Stort tack!