当前位置: 首页 > 知识库问答 >
问题:

使用scipy ode解算器时的尺寸值错误

越宣
2023-03-14

当前尝试运行以下代码

import numpy as np

from scipy.interpolate import interp1d

from scipy.integrate import ode


def dydt(t,y,tsi,rho):

    Lambda      = 10^-4
    beta        = 0.0065
    lambda2      = 0.08

    rho = interp1d(tsi,rho, fill_value = 'extrapolate')


    #one group delayed precursor
    dydt1 = (-lambda2*y[0] + beta*y[1])
    #power
    dydt2 = (((rho(t)-beta)/Lambda)*y[1]+(lambda2*y[0])/Lambda)
    return dydt1, dydt2


x = 21

dt = 1

tsi=np.arange(0,x,dt)
dt = [1]

rho=np.ones(x)*0.0025
y0= [1,0]
t0 = [0,x-1]


sol = []

i = ode(dydt)

i.set_integrator('dopri5')

i.set_initial_value(t0,y0)

i.set_f_params(tsi,rho)


for t in tsi[1:]:

    i.integrate(i.t+dt)

    sol.append(i.y)

但是,我最终犯了一个错误:

runfile('C:/Users/-/Desktop/-.py',wdir='C:/Users/-/Desktop')回溯(最后一次调用):

文件“C:\Users---\Desktop---.py”,第46行,在i.integrate(i.t dt)中

文件“C:\Users---\anaconda3\lib\site packages\scipy\integrate\u ode.py”,第432行,在integrate self中。f_参数,赛尔夫。雅克(美国)

文件“C:\Users---\anaconda3\lib\site packages\scipy\integrate_ode.py”,第1172行,运行元组(self.call_args)(f_参数,))

ValueError:第0个维度必须为2,但得到0(未定义)。

我在网上遵循了一个类似的例子,但主要的区别是,我在函数中返回2个方程,我的两个参数是数组。我试图使用odeint和solve_ivp,但他们给出了非常不准确的答案。

非常感谢。

共有1个答案

夏涵畅
2023-03-14

再次检查线路

i.set_initial_value(t0,y0)

在文档中,时间参数排在第二位(因为它是一个默认值为0的可选参数)。初始时间是一个标量,而不是元组。

您应该只定义一次内插函数,然后只将其作为参数传递,甚至将其作为全局对象。

sol.append(i.y)

也可能不做你认为它做的事情,在向量值的情况下,它构建了一个引用的相同副本的数组i. y。使用i.y.copy()生成从求解器内部删除的副本。

 类似资料:
  • 主要内容:jQuery 尺寸方法,jQuery 尺寸,jQuery width() 和 height() 方法,实例,jQuery innerWidth() 和 innerHeight() 方法,实例,jQuery outerWidth() 和 outerHeight() 方法,实例通过 jQuery,很容易处理元素和浏览器窗口的尺寸。 jQuery 尺寸方法 jQuery 提供多个处理尺寸的重要方法: width() height() innerWidth() innerHeight() ou

  • 在CSS中,通过 width 和 height 属性来定义一个盒子的宽度和高度,可以用长度值或百分比来设置,不允许负值。使用百分比时,根据父元素的宽度进行计算盒子的宽度,根据父元素的高度进行计算盒子的高度。 如果一个盒子没有显式定义 width 属性,则宽度的计算结果跟定位类型相关:静态定位或相对定位的盒子,其宽度为父元素宽度的100%;绝对定位和浮动的盒子,其宽度根据所包含内容自动扩展,最大宽度

  • CSS 尺寸 (Dimension) 属性允许你控制元素的高度和宽度。同样,它允许你增加行间距。 更多实例 设置元素的高度 这个例子演示了如何设置不同元素的高度。 使用百分比设置图像的高度 这个例子演示了如何使用百分比值设置元素的高度。 使用像素值来设置元素的宽度 本例演示如何使用像素值来设置元素的宽度。 设置元素的最大高度 此示例演示如何设置元素的最大高度。 使用百分比来设置元素的最大宽度 本例

  • 问题内容: 我对(N,)维数组和(N,1)维数组之间的转换有疑问。例如,y是(2,)维。 但是下面将显示y2为(2,1)维。 在不复制的情况下将y2转换回y的最有效方法是什么? 谢谢汤姆 问题答案: 为此工作 还请注意,除非需要复制新形状(在这里不需要这样做),否则它不会复制数据:

  • 问题内容: 我想选择数组的某些元素,然后根据这些值执行加权平均计算。但是,使用过滤条件会破坏数组的原始结构。形状已变成一维数组。这对我来说毫无用处,因为并非所有这些元素以后都需要组合在一起(而是它们的子数组)。如何避免这种变平? 问题答案: 查看 http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html 为了保持相同的

  • 我已经和https://github.com/commonsguy/cwac-camera 创建了我的自定义CameraFragment和自定义CameraHost。 我已经重写了getPictureSize和getPreviewSize。通过这两种方法,我能够找出可以使用的大小。我的总体想法是拍摄一幅方形图像,并在拍摄前预览它。 我一直在测试,没有设备返回正方形格式的大小,所以我想最好的方法是选