Если я попытаюсь построить одну и ту же функцию с двумя разными диапазонами переменных (второй содержит другой), Я получаю два разных графика.
Функция:
Код: Выделить всё
tData = np.linspace(0,2,11)
yData = np.array([0.99, 0.81, 0.71, 0.55, 0.50, 0.42, 0.24, 0.32, 0.17, 0.26, 0.19])
def dydt(t,y,beta):
return -beta*y
def funD(y0, beta, tData, yData):
res = solve_ivp(dydt, [tData[0],tData[-1]], [y0], t_eval=tData, args=(beta,),rtol=1e-6, method='RK45')
err = 0
for i in range(tData.shape[0]):
err = err + (yData[i]-res.y[0,i])**2
return err
Первый сюжет:
Код: Выделить всё
ygrid = np.linspace(0,2,100)
betagrid = np.linspace(0,2,100)
z = np.ones((100,100))
for i in range(100):
for j in range(100):
z[i,j] = funD(ygrid[i], betagrid[j], tData, yData)
fig, ax = plt.subplots()
cnt = ax.contour(ygrid,betagrid,z,1000)

Второй сюжет:
Код: Выделить всё
ygrid = np.linspace(0,2,100)
betagrid = np.linspace(0,4,100)
z = np.ones((100,100))
for i in range(100):
for j in range(100):
z[i,j] = funD(ygrid[i], betagrid[j], tData, yData)
fig, ax = plt.subplots()
cnt = ax.contour(ygrid,betagrid,z,1000)

I пробовал их перекрывать, но они не совпадают.
Код: Выделить всё
ygrid = np.linspace(0,2,100)
betagrid = np.linspace(0,2,100)
z = np.ones((100,100))
for i in range(100):
for j in range(100):
z[i,j] = funD(ygrid[i], betagrid[j], tData, yData)
ygrid1 = np.linspace(0,2,100)
betagrid1 = np.linspace(0,4,100)
z1 = np.ones((100,100))
for i in range(100):
for j in range(100):
z1[i,j] = funD(ygrid1[i], betagrid1[j], tData, yData)
fig, ax = plt.subplots()
cnt = ax.contour(ygrid,betagrid,z,100)
cnt1 = ax.contour(ygrid,betagrid,z1,100,alpha=0.5)
Я попробовал и с более простой функцией:
Код: Выделить всё
def func(x,y):
return x**2+y**2
ygrid = np.linspace(0,2,100)
betagrid = np.linspace(0,2,100)
z = np.ones((100,100))
for i in range(100):
for j in range(100):
z[i,j] = func(ygrid[i], betagrid[j])
ygrid1 = np.linspace(0,2,100)
betagrid1 = np.linspace(0,4,100)
z1 = np.ones((100,100))
for i in range(100):
for j in range(100):
z1[i,j] = func(ygrid1[i], betagrid1[j])
fig, ax = plt.subplots()
cnt = ax.contour(ygrid,betagrid,z,100)
cnt1 = ax.contour(ygrid,betagrid,z1,100,alpha=0.5)
сюжет
Подробнее здесь: https://stackoverflow.com/questions/787 ... ge-changes