求陣列最大最小值的數值方法

2021-09-29 17:07:24 字數 1443 閱讀 7453

給定乙個陣列a=[

ai

]a = [a_i]

a=[ai​

],求它的最大值或最小值,一般會用遍歷查詢或排序的方法,但其實可以直接用計算的方法求出陣列的最大最小值。

m ax

(a)=

lim⁡n→

∞a1n

+⋯+a

nn

nmax(a) = \lim_\sqrt[n]

max(a)

=n→∞

lim​na

1n​+

⋯+an

n​​max

(a)=

lim⁡β→

∞1

βlog⁡(

eβa1

+⋯+e

βan)

min(

a)

=lim⁡β

→−∞1

βlog⁡(

eβa1

+⋯+e

βan)

max(a) =\lim_\frac\log \left(e^+\cdots +e^ \right)\\ min(a) =\lim_ \frac\log \left(e^+\cdots +e^ \right)

max(a)

=β→∞

lim​β1

​log(e

βa1​

+⋯+e

βan​

)min

(a)=

β→−∞

lim​β1

​log(e

βa1​

+⋯+e

βan​

)證明也很簡單。

下面用程式來說明:

import numpy as np

defmax1

(a):

n =100return

pow(np.

sum(a**n),1

/n)def

max2

(a):

beta =

10return np.log(np.

sum(np.exp(beta*a)))

/beta

a = np.array(

[i for i in

range(10

)])+

0.001

print

(a)print

(max1(a)

)print

(max2(a)

)'''

[1.000e-03 1.001e+00 2.001e+00 3.001e+00 4.001e+00 5.001e+00 6.001e+00 7.001e+00 8.001e+00 9.001e+00]

9.001000691258799

9.001004540096037

'''

需要注意的是,這種近似方法容易出現數值溢位,使用時須謹慎

求陣列的最大值最小值

演算法陣列中的最大值和最小值 方法1 遍歷兩次求出最大值最小值 時間複雜度n 2 方法2 相鄰兩個數分為一組比較,大的放在偶數字,小的放到奇數字,然後在偶數字上找到最大值,在奇數字上找到最小值n 1.5 方法3 定義兩個變數max,min值,相鄰兩個數分為一組,比較出最大值和最小值,最大值和max比...

分治法求陣列最大最小值

常規的做法是遍歷一次,分別求出最大值和最小值,但我這裡要說的是分治法 divide and couquer 將陣列分成左右兩部分,先求出左半部份的最大值和最小值,再求出右半部份的最大值和最小值,然後綜合起來求總體的最大值及最小值。這是個遞迴過程,對於劃分後的左右兩部分,同樣重複這個過程,直到劃分區間...

求陣列的最大值與最小值

方法1 通過迴圈查詢陣列的最大值和最小值 minn a 0 maxx a 0 for int j 0 j i j 方法2 利用c 自帶的函式 max element 和 min element include include using namespace std intmain cout max ...