python沿插值轴不同的数组长度?

2024-09-24 20:33:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python插值函数来获得给定x的值y,但是我得到了错误“raise ValueError”(“x和y数组沿插值轴的长度必须相等”,即使我的数组大小和形状都相等(根据我在代码中使用.shape时得到的结果)。我对编程还很陌生,所以我不知道如何检查数组中还有哪些不同之处。这是我的代码:

s = []

def slowroll(y, t):

    phi, dphi, a = y
    h = np.sqrt(1/3. * (1/2. * dphi**2 + 1/2.*phi**2))
    da = h*a
    ddphi = -3.*h*dphi - phi

    return [dphi,ddphi,da]


phi_ini = 18.
dphi_ini = -0.1
init_y = [phi_ini,dphi_ini,1.]
h_ini =np.sqrt(1/3. * (1/2. * dphi_ini**2. + 1/2.*phi_ini**2.))

t=np.linspace(0.,20.,100.)

from scipy.integrate import odeint

sol = odeint(slowroll, init_y, t)

phi = sol[:,0]
dphi = sol[:,1]
a=sol[:,2]
n=np.log(a)
h = np.sqrt(1/3. * (1/2. * dphi**2 + 1/2.*phi**2))

s.extend(a*h)
x = np.asarray(s)
y = np.asarray(t)
F = interp1d(y, x, kind='cubic') 

print F(7.34858263)

Tags: 代码initnpsqrt数组inida插值
1条回答
网友
1楼 · 发布于 2024-09-24 20:33:23

在添加了所需的导入之后,我无法在版本2.7.12中复制您的错误。您运行的是什么python版本?在

import numpy as np
from scipy.interpolate import interp1d

s = []

def slowroll(y, t):

    phi, dphi, a = y
    h = np.sqrt(1/3. * (1/2. * dphi**2 + 1/2.*phi**2))
    da = h*a
    ddphi = -3.*h*dphi - phi

    return [dphi,ddphi,da]


phi_ini = 18.
dphi_ini = -0.1
init_y = [phi_ini,dphi_ini,1.]
h_ini =np.sqrt(1/3. * (1/2. * dphi_ini**2. + 1/2.*phi_ini**2.))

t=np.linspace(0.,20.,100.)

from scipy.integrate import odeint

sol = odeint(slowroll, init_y, t)

phi = sol[:,0]
dphi = sol[:,1]
a=sol[:,2]
n=np.log(a)
h = np.sqrt(1/3. * (1/2. * dphi**2 + 1/2.*phi**2))

s.extend(a*h)
x = np.asarray(s)
y = np.asarray(t)
F = interp1d(y, x, kind='cubic') 

print F(7.34858263)

输出: 2.11688518961e+20

相关问题 更多 >