首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在C语言中cexp(+infinity+I*infinity)=+/-infinity+I*NaN?

为什么在C语言中cexp(+infinity+I*infinity)=+/-infinity+I*NaN?
EN

Stack Overflow用户
提问于 2013-07-06 22:27:47
回答 2查看 230关注 0票数 6

如果我们看一下C语言的委员会草案:n1570,特别是关于复数数学函数行为的Annex G,我们可以看到复数指数在无穷远具有以下行为:

代码语言:javascript
复制
cexp(+infinity+I*infinity)=+/-infinity+I*NaN
(where the sign of the real part of the result is unspecified).

我的问题是:为什么?

从数学的角度来看,如果我们以相同的方式接近实部和虚部的无穷大,则极限是一个复数无穷大(例如,参见Wolfram Alpha ),它对应于无穷大的模和未定义的变元。

此外,如果我们观察cexp函数的行为,它的实部和虚部相当类似(请参阅Wolfram Alpha上的3D图)。

所以,我会期待:

代码语言:javascript
复制
cexp(+infinity+I*infinity)=+/-infinity+/-I*infinity

而不是:

代码语言:javascript
复制
cexp(+infinity+I*infinity)=+/-infinity+I*NaN

我知道这是有很好的理由的,但我不明白。有人能给我解释一下背后的逻辑吗?

编辑:以下是链接的摘要:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-08 00:28:28

njuffa,http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf链接的文档中确实给出了动机:

7.3.9.4 cproj函数

在复杂数学中通常使用两种拓扑:具有无限连续体的复平面和具有单一无穷大的Riemann球面。复平面更适合于超越函数,Riemann球面更适合于代数函数。具有多个无穷大的复杂类型为复杂平面提供了一个有用的(尽管不完美的)模型。cproj函数通过将所有无穷大映射到一个来帮助对Riemann球体建模,并且应该在任何操作之前使用,特别是比较,这可能会对任何其他无穷大产生虚假结果。

请注意,具有一个无限部分和一个NaN部分的复数值被视为无穷大,而不是NaN,因为如果一个部分是无限的,则该复数值是无限的,而与另一部分的值无关。出于同样的原因,如果cabs的参数包含无限部分和NaN部分,则返回无穷大。

在G.5.1中也有类似的说法:

...为了支持one-infinity模型,C99将至少有一个无穷大部分的任何复数值视为复数无穷大(即使另一部分是NaN),并保证操作和函数遵循无穷大的基本属性,并提供cproj函数将所有无穷大映射到规范无穷大。..。

相关的搜索词是" Riemann“,如Riemann sphere中的”Riemann“,这是具有单个无穷大的扩展复平面的数学模型,在Mathematica / Wolfram Alpha中使用,但在数学中并不通用。

票数 2
EN

Stack Overflow用户

发布于 2013-07-07 08:08:29

NaN的一个原因是没有表示这个无穷大值所采用的“方向”。用真实的数字,lim a->inf : exp(a) -> + infinity。定义明确的方向给出了原因的直观含义:

1/(+0) = +inf1.0 / (-0.0) = -inf和:

1/(+inf) = +01/(-inf) = -0

将其扩展到复杂平面:cexp([-]inf + b.I) = [-]inf.{cos(b) + I.sin(b)}

即使结果具有无限大小,仍然存在方向的概念,例如,if b = - PI/2 -> cexp(+inf + b.I) = +inf.(-I)

如果为b = [-]inf,则接近无穷大的方向是不确定的。方向的数量是无限的,cos(b)sin(b)的值是未定义的。毫不奇怪,如果参数是无穷大,则实值cos[f|l]sin[f|l]函数将返回NaN

恐怕这不是一个非常正式的回答--只是对这个想法的一种“感觉”。我的理解是,这种行为还有其他很好的原因,比如在复杂分析中使用分支切割。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17503876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档