簡體   English   中英

Python數學表達式中對“復雜”類型的意外提升

[英]Unexpected promotion to 'complex' type in Python math expression

在實現數值優化算法的過程中,我在Python中遇到了一些相當奇怪的行為:在對函數域的某些值應用Six-hump cambel back函數后 ,一些結果會評估為“復雜”數字。

評估數字的代碼非常簡單:

def f(x1, x2):   
    return ((4 - 2.1 * x1 ** 2 + x1 ** (4 / 3)) * x1 ** 2 + x1 * x2 +
            (-4 + 4 * x2 ** 2) * x2 ** 2)

以下是上述函數返回復數的一些數字:

x1                    x2                   Result
-1.30423635697717    -1.750915750915751    27.13078459548355-2.099189473463638j
-0.28677817116347226  0.3413919413919415  -0.20277691810793963-0.013469483248785653j
-1.105725796606031   -0.5816849816849816   0.8001125335594826-1.2106597512385535j

以及上述函數返回正常float的一些數字:

x1   x2  Result
1    2   52.9
1.4 -2   48.04232245707135

為什么會發生這種情況,我該怎么做才能解決這個問題?

代碼在Python 3.3.2下運行。

表達式x1 ** (4 / 3) 4/3 x1 ** (4 / 3)將變量x1取為4/3的冪。 x1為負數時, 表達式結果有3個根; 其中2個很復雜 Python正在為您選擇“主要根”,在這種情況下這很復雜。

看到這個問題的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM