草庐IT

scipy-optimize

全部标签

python - 使用 scipy.integrate 将布朗运动纳入粒子轨迹积分

我想在简单的线性粒子相互作用模型之上添加热波动。到目前为止(没有布朗运动)一切都使用scipy.integrate.odeint完成并且工作完美。因此,最好找到一种方法,通过使用scipy.integrate方法之一来包含随机运动。问题如下:使用Langevin热浴,我必须按如下方式更新粒子位置(x)和速度(v):x=x+v*dtv=v+(interaction_force*dt+random_force*dt)/质量其中:random_force=sqrt(constant/dt)*random_number我认为有两个问题:步长dt出现在random_force中。但是我不知道自适

python - 如何在 python 中使用 scipy 为树状图中的部分链接着色?

我可以在Python树状图中为标签着色,但我不知道如何为属于其标签的链接部分着色。我想做这样的事情:在Python中可以吗?这里我只给标签上色:importnumpyasnpimportmatplotlib.pyplotaspltimportscipy.cluster.hierarchyasscdists=np.array([[0,2,1,4],[2,0,3,5],[1,3,0,6],[4,5,6,0]])l=['a','b','c','b']Z=sc.linkage(dists,method='complete')d=sc.dendrogram(Z,labels=l)label_co

python - 与来自 Python/SciPy 的 "quad"和 "quadrature"集成

看完this和that,我想到“quad”和“quadrature”应该可以互换*,至少在语法方面。奇怪的是,它们似乎不是:fromscipy.integrateimportquadasq#fromscipy.integrateimportquadratureasqdefmyfunc(x):returnxdefintegr():returnq(myfunc,0,1)[0]printintegr()defmyfunc2(x,y):returnx+ydefintegr2(y):returnq(myfunc2,0,1,args=(y))[0]#returnq(myfunc2,0,1,args

python - Matlab filter() 与 SciPy lfilter()

根据他们的文档Matlabfilter()和SciPylfilter(),看起来它们应该是“兼容的”。但是我有一个问题,在Python中移植更大的Matlab代码,为此我得到了ValueError:objectoftoosmalldepthfordesiredarray。由于我想不出如何在不使它复杂化的情况下展示我的源代码,我将使用Matlab文档中提供的示例:data=[1:0.2:4]';windowSize=5;filter(ones(1,windowSize)/windowSize,1,data)我用Python翻译成:importnumpyasnpfromscipy.sign

python - scipy:基本说明

我并不理解coo_matrix、csr_matrix和csc_matrix之间的区别。文档确实提到coo_matrix对于算术运算效率不高,我们需要将其转换为csr或csc。我正在研究矩阵乘法。如果我只有一个coo_matrix并将其转换为csr或csv矩阵,我不明白幕后发生了什么。另外如果我有类似的东西A=array([[1,2,3,0,0,5],[5,0,0,1,2,0]])printcoo_matrix(A)打印(0,0)1(0,1)2(0,2)3(0,5)5这很酷。但是有没有办法,我可以直接输入我的矩阵作为打印的矩阵。类似于定义一个空COO矩阵,然后开始定义coo_matrix

python - 带有元数据的 scipy kdtree

我目前正在寻找一种方法来构建几个kd树以快速查询一些n维数据。但是,我在使用scipyKD树算法时遇到了一些问题我的数据由id->{data:somedata,coordinate:x,y}组成我希望能够根据坐标和k近邻的ID进行查询,并获得修复半径近邻的ID。从KDTree和cKDtree的scipy实现来看,这个是不可用的。我的其他选择是编写我自己的KD树,这不会那么好,因为我只是我,或者......? 最佳答案 从玩弄KDTree,看起来它坚持要将一个类似于对象的2Dnumpy数组提供给它的构造函数,但是API将索引返回到该数

python - 如何使用 numpy(和 scipy)查找函数的所有零点?

假设我在a和b之间定义了一个函数f(x)。这个函数可以有很多零点,也可以有很多渐近线。我需要检索此函数的所有零。最好的方法是什么?其实我的策略是这样的:我根据给定的点数评估我的函数我检测是否有符号变化我在改变符号的点之间找到零我验证找到的零是否真的是零,或者这是否是渐近线U=numpy.linspace(a,b,100)#evaluatefunctionat100differentpointsc=f(U)s=numpy.sign(c)foriinrange(100-1):ifs[i]+s[i+1]==0:#opositesignsu=scipy.optimize.brentq(f,U[

python - Scipy 稀疏矩阵 - 密集向量乘法性能 - block 与大型矩阵

我有许多scipy稀疏矩阵(目前为CSR格式),我需要将它们与密集的numpy一维向量相乘。该向量称为G:printG.shape,G.dtype(2097152,)complex64每个稀疏矩阵的形状都是(16384,2097152)并且非常稀疏。密度约为4.0e-6。我有一个包含100个稀疏矩阵的列表,称为spmats。我可以像这样轻松地将每个矩阵与G相乘:res=[spmat.dot(G)forspmatinspmats]这会按预期生成形状为(16384,)的密集向量列表。我的应用程序对性能相当关键,所以我尝试了一种替代方法,即首先将所有稀疏矩阵连接成一个大的稀疏矩阵,然后只使用

python - 使用索引和值将值添加到 Scipy 稀疏矩阵

我正在研究电力系统分析程序,我需要使用稀疏矩阵。有一个例程,我只使用以下调用填充稀疏矩阵:self.A=bsr_matrix((val,(row,col)),shape=(nele,nbus),dtype=complex)因为这个矩阵不会随时间改变。另一个矩阵确实会随着时间的推移而变化,我需要更新它。有没有办法,例如:co=[2,3,6]row=[5,5,5]val=[0.1+0.1j,0.1-0.2j,0.1-0.4j]我可以将它们添加到先前初始化的稀疏矩阵吗?怎样才是更Pythonic的方式来做到这一点?谢谢 最佳答案 您应该改

python - 如何在 Scipy 中定义具有时间延迟的 LTI 系统?

具有时间延迟的LTI系统的传递函数具有分子项exp(-Td*s),其中Td是时间延迟。在Matlab中,可以通过多种方式创建这样的LTI系统(例如,使用“s”运算符并直接设置指数项,或者通过设置inputdelayoutputdelay属性tf对象。)但是,我无法在ScipySignalLTI对象中找到任何方法来执行此操作。我也检查了Python控制系统库,但仍然找不到方法。我不想对时间延迟使用Pade近似,而是想为LTI系统设置准确的时间延迟。有谁知道如何在Scipy或任何其他外部Python库中实现这一点? 最佳答案 我检查了g