繁体   English   中英

Python中的对称对数刻度数组

[英]Symmetrical log scale array in python

我正在尝试求解一维非线性泊松方程(电荷分布取决于电势)。 我一直将其视为最小化问题,并一直使用scipy.optimize模块中的fsolve函数。

从质上我得到了一个合理的答案,但我注意到它随阵列中点之间的距离而变化。 这是合理的,因为解(及其导数)是指数的。 如果解决方案在定义问题所在的空间边界附近受影响最大。

看起来,“求解”完成其计算所需的时间随着数组中点的数量而急剧增加。 我一直在研究使用numpy的'logspace'函数帮助使用非线性间距的选项。 但是,此功能仅在阵列的一侧提供更紧密的间距。 我一直在尝试使用'logspace'生成两个数组并将它们连接起来,但是没有设法获得所需的结果。

为了澄清,我需要一个在[0,x]范围内的数组(x是一些浮点值),其中数组点之间的间距随着它们接近0或x而变小。 关于如何做到这一点的任何建议?

以下应该为您提供0到1之间的对数刻度间距,以便您可以根据需要对其进行缩放。 我提供了两个解决方案,带有和不带有边界值。

import numpy
import math

#set number of spaces: num=?
logrange = numpy.logspace(0,math.log10(11),num=6)

#including boudary points
inclusive = numpy.hstack([logrange -1,21-logrange[-2:0:-1],20])/20
print(inclusive)

#excluding boundary points
exclusive = numpy.hstack([logrange[1:] -1,21-logrange[-2:0:-1]])/20
print(exclusive)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM