- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试对方程进行积分
bg' = dmat*bg + releasevec.
Dmat
是一个 6x6 值数组,bg
是一个 6x1 向量。为了将 dmat
和 bg
相乘,我使用了点积。然后将 releasevec
添加到此产品。
我想在从零到三的时间跨度上对这个方程求积分。现在,下面的代码正在生成一个 f_results
,它是一个空数组,即没有结果。
一点背景是这段代码改编自 MATLAB ode 求解器(特别是 ode15s
)。 ode15s
的明显 Python 等价物是 scipy 的
ode.set_integrator('vode', method = 'bdf')
从时间跨度0到1,f_results
中产生的bg
结果应该是
[5.76068434946487e-16, 1.92039036486442e-14, 2.97732034735096e-21,
1.15568146353068e-18, 3.50848451366317e-19, 6.99348172634721e-27]
如您所见,这些 bg 结果与代码中提供的初始 bg
(bg0
) 值几乎没有区别。我知道 MATLAB 的 ode15s
求解器使用内部时间步长来执行积分,因此我认为可能需要在积分器中弄乱步长参数。
问题:为什么我的结果是一个空数组?我是否错误地设置了初始条件?我怎样才能生成我发布的下一组 bg
值?
如果我遗漏了任何相关信息或任何内容,请告诉我,我会尽快修复。
def ode_solv(t, bg, dmat, releasevec):
ydot[0] = dmat2[0].dot(bg) + releasevec[0]
ydot[1] = dmat2[1].dot(bg) + releasevec[1]
ydot[2] = dmat2[2].dot(bg) + releasevec[2]
ydot[3] = dmat2[3].dot(bg) + releasevec[3]
ydot[4] = dmat2[4].dot(bg) + releasevec[4]
ydot[5] = dmat2[5].dot(bg) + releasevec[5]
return ydot
ydot = np.zeros(6)
dmat2 = np.array([[-1960368.83845003, 58694.00323479, 39129.33548986, 1862545.49972536, 0.0, 0.0],
[58694.00323479, -1.89355617e+09, 0.0, 1231.23020241, 21038.6060172, 14025.7373448],
[39129.33548986, 0.68216154, -7.57402415e+09, 0.0, 0.0, 0.0],
[1862545.49972536, 0.0, 0.0, -9.28416441e+08, 0.0, 0.0],
[0.0, 21038.64595532, 0.0, 0.0, -1.15156310e+09, 0.0],
[0.0, 0.0, 14025.76397021, 0.0, 0.0, -5.97115916e+09]], np.float)
bg0 = [5.74717437413422e-16, 1.91588665922461e-14, 2.97070077781448e-21,
1.15297115567223e-18, 3.50025640453469e-19, 6.97793289948656e-27]
releasevec = [0.0, 0.0000363636, 0.0, 0.0, 0.0, 0.0]
t0 = 0.0
t1 = 3
f_results = []
soln = ode(ode_solv).set_integrator('vode', method='bdf', order=5)
soln.set_initial_value(t0, bg0)
soln.set_f_params(dmat2, releasevec)
while soln.t < t1:
soln.integrate(soln.bg)
f_results.append([soln.t, soln.bg])
print f_results
最佳答案
这一行不正确:
soln.set_initial_value(t0, bg0)
你把论点颠倒了。第一个参数必须是初始值;第二个(可选)参数是给出该值的时间。
还有一些其他问题:
soln.bg
更改为 soln.y
。soln.integrate(soln.bg)
行不正确。参数应该是下一个所需的 t
值。再看一下 the ode
docstring 中的示例.
关于python - 使用 `ode` 方法的 scipy 的 'vode' 求解器给出一个空数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31484341/
我在使用 cx_freeze 和 scipy 时无法编译 exe。特别是,我的脚本使用 from scipy.interpolate import griddata 构建过程似乎成功完成,但是当我尝试
是否可以通过函数在 scipy 中定义一个稀疏矩阵,而不是列出所有可能的值?在文档中,我看到可以通过以下方式创建稀疏矩阵 There are seven available sparse matrix
SciPy为非线性最小二乘问题提供了两种功能: optimize.leastsq()仅使用Levenberg-Marquardt算法。 optimize.least_squares()允许我们选择Le
SciPy 中的求解器能否处理复数值(即 x=x'+i*x")?我对使用 Nelder-Mead 类型的最小化函数特别感兴趣。我通常是 Matlab 用户,我知道 Matlab 没有复杂的求解器。如果
我有看起来像这样的数据集: position number_of_tag_at_this_position 3 4 8 6 13 25 23 12 我想对这个数据集应用三次样条插值来插值标签密度;为此
所以,我正在处理维基百科转储,以计算大约 5,700,000 个页面的页面排名。这些文件经过预处理,因此不是 XML 格式。 它们取自 http://haselgrove.id.au/wikipedi
Scipy 和 Numpy 返回归一化的特征向量。我正在尝试将这些向量用于物理应用程序,我需要它们不被标准化。 例如a = np.matrix('-3, 2; -1, 0') W,V = spl.ei
基于此处提供的解释 1 ,我正在尝试使用相同的想法来加速以下积分: import scipy.integrate as si from scipy.optimize import root, fsol
这很容易重新创建。 如果我的脚本 foo.py 是: import scipy 然后运行: python pyinstaller.py --onefile foo.py 当我启动 foo.exe 时,
我想在我的代码中使用 scipy.spatial.distance.cosine。如果我执行类似 import scipy.spatial 或 from scipy import spatial 的操
Numpy 有一个基本的 pxd,声明它的 c 接口(interface)到 cython。是否有用于 scipy 组件(尤其是 scipy.integrate.quadpack)的 pxd? 或者,
有人可以帮我处理 scipy.stats.chisquare 吗?我没有统计/数学背景,我正在使用来自 https://en.wikipedia.org/wiki/Chi-squared_test 的
我正在使用 scipy.odr 拟合数据与权重,但我不知道如何获得拟合优度或 R 平方的度量。有没有人对如何使用函数存储的输出获得此度量有建议? 最佳答案 res_var Output 的属性是所谓的
我刚刚下载了新的 python 3.8,我正在尝试使用以下方法安装 scipy 包: pip3.8 install scipy 但是构建失败并出现以下错误: **Failed to build sci
我有 my own triangulation algorithm它基于 Delaunay 条件和梯度创建三角剖分,使三角形与梯度对齐。 这是一个示例输出: 以上描述与问题无关,但对于上下文是必要的。
这是一个非常基本的问题,但我似乎找不到好的答案。 scipy 到底计算什么内容 scipy.stats.norm(50,10).pdf(45) 据我了解,平均值为 50、标准差为 10 的高斯中像 4
我正在使用 curve_fit 来拟合一阶动态系统的阶跃响应,以估计增益和时间常数。我使用两种方法。第一种方法是在时域中拟合从函数生成的曲线。 # define the first order dyn
让我们假设 x ~ Poisson(2.5);我想计算类似 E(x | x > 2) 的东西。 我认为这可以通过 .dist.expect 运算符来完成,即: D = stats.poisson(2.
我正在通过 OpenMDAO 使用 SLSQP 来解决优化问题。优化工作充分;最后的 SLSQP 输出如下: Optimization terminated successfully. (Exi
log( VA ) = gamma - (1/eta)log[alpha L ^(-eta) + 测试版 K ^(-eta)] 我试图用非线性最小二乘法估计上述函数。我为此使用了 3 个不同的包(Sc
我是一名优秀的程序员,十分优秀!