如何解决如何在 MATLAB、Python 和 C 中有效地计算大型复数值?
我在使用 MATLAB 时遇到一个问题,计算 sinh(a + b * i)
(例如 1000+1i
),其中 i
是虚数单位,a
,{{ 1}} 是 double" 类型无法处理的相当大的值。当然我可以通过 Wolfram 或 Fortran 计算该函数,但我确实需要一种通用语言来与此计算一起进行 GPIB 通信。
在向一些人询问这个问题后,我被告知 Python 或 C 有一种称为“大浮点数”的类型。但是他们都不能告诉我它的精度和最大值是多少,更不用说效率了。那么任何人都可以提出解决方案吗?或者也许有另一种语言可以处理这个问题(计算大型复杂和 GPIB 会话)。
解决方法
您可以使用 Julia:
julia> a = BigFloat("1e10")
1.0e+10
julia> b = BigFloat("1e500")
1.000000000000000000000000000000000000000000000000000000000000000000000000000004e+500
julia> sinh(a + b * im)
1.43445592092543814302692567115470616209662482064997303227590320999972133381932e+4342944818 + 5.194323395284352151694584377260055302504830707661913916785283453158333278974902e+4342944818im
但正如其他人评论的那样,正如您在此示例中看到的那样,sinh
随着复数的实部快速增长,因此 a
不能太大。 (使用a = 1e10
,结果已经达到10^4342944818
!)
FWIW,在 Julia 中,写成一个整数,最大的 BigFloat
大约有 1,388,255,822,130,839,282 位:
julia> prevfloat(typemax(BigFloat))
5.875653789111587590936911998878442589938516392745498308333779606469323584389875e+1388255822130839282
另外,我不知道这个结果有多准确。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。