Python 如何在施工期间消除瞬态?
我有一个制作图片的程序。但是我需要取消晋升的机会。我试着用t.trans和numpy来做,但是发生了一个错误 这是我的密码:Python 如何在施工期间消除瞬态?,python,Python,我有一个制作图片的程序。但是我需要取消晋升的机会。我试着用t.trans和numpy来做,但是发生了一个错误 这是我的密码: import numpy as np import scipy.integrate as integrate import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D с0 = 0.08 c1 = 10 c11=7 c3 = 3 m0=1 m1=2 m=m0/m1 t_trans=n
import numpy as np
import scipy.integrate as integrate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
с0 = 0.08
c1 = 10
c11=7
c3 = 3
m0=1
m1=2
m=m0/m1
t_trans=np.array((59, 100,5000))
def f(x):
f = ((-m)*x)+(1/2)*((m0+m1)/m1)*(abs(x+1.0)-abs(x-1.0))
return f
def dH_dt(H, t=0):
return np.array([(-c1/c3)*f(H[1]-H[0]),
(-1/c3)*(f(H[1]-H[0])+H[2]),
c3*H[1],
(-c11/c3)*f(H[4]-H[3]),
(-1/c3)*(f(H[4]-H[3])+H[5])+(с0/c3)*(H[1]-H[4]),
c3*H[4]])
t = np.linspace(1000, 1800, 5000)
H0 = [1, 1, 1, 1, 1, 1]
H, infodict = integrate.odeint(dH_dt, H0, t, full_output=True)
fig = plt.figure()
if t>t_trans:
plt.plot(H[:,0], H[:,2])
plt.show()
结果曲线:
我要删除的曲线部分:
您可以通过切片从绘图中排除
H
的前600个条目。我还稍微整理了一下您的代码,结果如下:
import numpy as np
import scipy.integrate as integrate
import matplotlib.pyplot as plt
def f(x, m0=1, m1=2):
m=m0/m1
f = ((-m)*x) + (1/2) * ((m0+m1)/m1) * (abs(x+1.0) - abs(x-1.0))
return f
def dH_dt(H, t=0, c0=0.08, c1=10, c11=7, c3=3):
return np.array([(-c1/c3) * f(H[1]-H[0]),
(-1/c3) *( f(H[1]-H[0]) + H[2]),
c3 * H[1],
(-c11/c3) * f(H[4]-H[3]),
(-1/c3) * (f(H[4]-H[3]) + H[5]) + (c0/c3) * (H[1]-H[4]),
c3 * H[4]])
t = np.linspace(1000, 1800, 5000)
H0 = [1, 1, 1, 1, 1, 1]
H, _ = integrate.odeint(dH_dt, H0, t, full_output=True)
fig = plt.figure()
plt.plot(H[600:,0], H[600:,2])
plt.show()
这是生成的图像:
晋升时刻的具体含义是什么?是否要根据t和t_trans之间的比较绘制H的某些元素?你想排除哪些时间步?是的,我想删除前600个时间步。我添加了两张图片,第一张是我拥有的,第二张是需要删除的。我想这是在前600个步骤上。主要的是要了解如何写下它,但你可以稍后再提取“错误发生”不是很具体