Я написал простую программу на Python для решения простых гармонических осцилляторов, используя как метод Эйлера, так и аналитический метод, но кажется, что две кривые подходят идеально (я не уверен, как и почему?, Поскольку они должны были отличаться). Поскольку эти кривые идеально подходят, я не смог провести различие между этими двумя кривыми. Несмотря на то, что они подходят, есть ли способ выделить их, используя функции matplotlib. Спасибо

import matplotlib.pyplot as plt
import math as m
g=9.8
v=0.0   #initial velocity
h=0.01  #time step
x=5.0   #initial position
w=m.sqrt(10.0)

t=0.0
ta,xa,xb=[],[],[]

while t<12.0:
    ta.append(t)
    xa.append(x)
    xb.append(5*m.cos(w*t))

    v=v-(10.0/1.0)*x*h    #k=10.0, m=1.0
    x=x+v*h
    t=t+h
plt.figure()
plt.plot(ta,xa,ta,xb,'bo--')
plt.xlabel('$t(s)$')
plt.ylabel('$x(m)$')
plt.show()
2
Quantum Mechanics 29 Май 2017 в 07:19

2 ответа

Лучший ответ

Одним из способов является изменение цвета и уменьшение непрозрачности одного графика:

plt.plot(ta,xa)
plt.plot(ta,xb,c='red',alpha=.5)

Вместо:

plt.plot(ta,xa,ta,xb,'bo--')

enter image description here

При увеличении: введите описание изображения здесь

Вы также можете разбросать одно и построить другое:

plt.plot(ta,xa)
plt.scatter(ta,xb,c='red',alpha=.3)

enter image description here

0
Vinícius Aguiar 29 Май 2017 в 04:37

Вы можете вызвать метод plot дважды, например

plt.plot(ta, xa, 'bo--')
plt.plot(ta, xb, 'gs')
0
0605002 29 Май 2017 в 04:35