簡體   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