在实现一个数值优化算法时,我在Python中遇到了一些相当奇怪的行为:在对函数域中的一些值应用Six-hump cambel back function之后,一些结果的计算结果是“复数”。你知道吗
计算数字的代码非常简单:
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
以及上述函数返回正常浮点值的一些数字:
x1 x2 Result
1 2 52.9
1.4 -2 48.04232245707135
为什么会发生这种情况?我能做些什么来修复它?你知道吗
代码在python3.3.2下运行。你知道吗
表达式
x1 ** (4 / 3)
将变量x1
取4/3
的幂。当x1
为负时,result of the expression has 3 roots; 2 of them are complex。Python正在为您选择“主根”,这在本例中很复杂。你知道吗参见this question了解想法。你知道吗
相关问题 更多 >
编程相关推荐