问题标签 [complex-numbers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4999 浏览

python - Python增强分配问题

我遇到了关于 python 增强分配的一些有趣的事情+=

a += b如果 a 是“更简单”的数据类型,似乎并不总是自动进行数据类型转换,而a = a + b似乎总是有效

转换完成的情况

未完成转换的情况

之后a += ba保持为整数矩阵,而不是复矩阵

我以前认为a += b是一样的a = a + b,它们在底层实现上有什么区别?

0 投票
2 回答
1554 浏览

c++ - GDB - 访问复数的实部和虚部

调试使用(C 或 C++)的程序时,将gdb复数显示为_M_value = xxx + yyy*I(类型为complex double)。

在调试时,我需要打印该数字乘以一个因子。

以下不起作用

我明白了Argument to arithmetic operation not a number or boolean

此外,我无法访问实部和虚部,因此我可以编写一个 gdb 宏来执行上述操作。我目前的解决方案是编写一个用于操作复杂值和数组的 C 函数,并从 gdb 调用该函数。不知何故,这感觉不对。

0 投票
3 回答
2187 浏览

c - 试图除以复数,除以零

我正在尝试下面的程序来划分复数,它适用于复数,但当分母为实数时(即复数部分为零)则无效。ratio = b->r / b->i ;当复数部分b->i为零时(在实分母的情况下) ,在这一行中除以零。

我该如何解决这个问题?以及为什么程序员这样做,而不是更直接的复杂除法规则

维基百科的规则似乎更好,这里不会发生除以零错误。我错过了什么?为什么程序员不使用维基百科公式?

谢谢

0 投票
3 回答
11581 浏览

c++ - float2 和 cuComplex 有什么区别,使用哪个?

我试图弄清楚如何在我的主机和设备代码中使用复数。我遇到了cuComplex(但找不到任何文档!)并且float2至少在 CUDA 编程指南中得到了提及。

我应该使用什么?在 的头文件中cuComplex,看起来函数是用声明的,__host__ __device__所以我假设这意味着在任何一个地方都可以使用它们。

我的原始数据正在从文件中读入,std::complex<float>所以我真的不想弄乱它。我想为了在 GPU 上使用复杂的值,我必须从原始复制complex<float>cuComplex?

0 投票
1 回答
903 浏览

c - 有没有更好的方法来读取 C 中的复杂二进制数据?

我用 C 编写了一些代码来读取包含复数的二进制文件。它有效,但我对我需要执行的演员阵容感到不舒服。有没有更好的办法?速度在我的程序中至关重要(我通过将代码从 C++ iostreams 更改为 C stdio 函数,使执行时间加倍)。也可以做得更快吗?

这是我的代码:

convert_complex 函数反转单个复数的字节顺序。我对此更不舒服,但我不希望我的问题变得太大。

0 投票
1 回答
536 浏览

c++ - 复杂的运算符重载

这个复杂的重载函数有什么问题?

0 投票
5 回答
2401 浏览

c++ - 更改复数输出格式

C++ 标准库中有complex<>一个模板,它有一个重载的 << 运算符,因此它以 (real_part, im_part) 格式输出复数。我需要更改该运算符对复数的行为,以便将输出格式更改为完全不同的格式。具体来说,我需要输出格式为real_part\tim_part. 我怎么做?

0 投票
3 回答
2518 浏览

c#-4.0 - 如何在 C# 中进行快速复杂算术运算

我现在正在处理一个 C# Fractal Generator 项目,该项目需要大量的复数算术,我正在尝试想办法加快数学运算速度。下面是一组简化的代码,它使用三种数据存储方法中的一种来测试 Mandelbrot 计算的速度,如TestNumericsComplexTestCustomComplex和所示TestPairedDoubles。请理解 Mandelbrot 只是一个示例,我打算让未来的开发人员能够创建插件分形公式。

基本上我认为 usingSystem.Numerics.Complex是一个不错的想法,而使用一对双打或自定义 Complex 结构是可以接受的想法。我可以使用 gpu 执行算术,但这不会限制或破坏可移植性吗?我尝试改变内部循环的顺序(i,x,y)无济于事。我还能做些什么来帮助加快内部循环?我遇到页面错误问题了吗?与浮点值相比,使用定点数系统会提高我的速度吗?

我已经Parallel.For在 C# 4.0 中知道了;为了清楚起见,我的代码示例中省略了它。我也知道 C# 通常不是高性能的好语言。我使用 C# 来利用反射插件和 WPF 窗口。

编辑

GPU 似乎是唯一可行的解​​决方案;我不理会与 C/C++ 的互操作性,因为我觉得速度提升不足以迫使我在未来的插件上强制实现互操作性。

在研究了可用的 GPU 选项(我实际上已经研究了一段时间)之后,我终于找到了我认为是一个很好的折衷方案。我选择了 OpenCL,希望在我的程序发布时大多数设备都支持该标准。OpenCLTemplate使用cloo在 .Net(用于应用程序逻辑)和“OpenCL C99”(用于并行代码)之间提供易于理解的接口。插件可以包括用于硬件加速的 OpenCL 内核以及带有 System.Numerics.Complex 的标准实现,以便于集成。

随着标准被处理器供应商采用,我预计有关编写 OpenCL C99 代码的可用教程的数量会迅速增长。这使我无需对插件开发人员强制执行 GPU 编码,同时为他们提供精心设计的语言(如果他们选择利用该选项)。这也意味着 IronPython 脚本将具有同等的 GPU 加速访问权限,尽管直到编译时才知道,因为代码将直接通过 OpenCL 进行转换。

对于将来有兴趣将 GPU 加速与 .Net 项目集成的任何人,我强烈推荐 OpenCLTemplate。学习 OpenCL C99 有一定的开销。但是,它仅比学习替代 API 稍微困难一些,并且可能会从示例和一般社区获得更好的支持。

0 投票
2 回答
839 浏览

c# - 返回和参数中的 C# DLLImport 'Complex' 数组

我只是在名为“fft.dll”的本机 C++ DLL 和 C# 控制台应用程序之间编写一个小型测试集成。

fft.dll 包含一个名为的类Fourier,其中包含一个静态方法:

静态方法fft(...)简单地计算complex<double>数组的 FFT,并将计算的 FFT 作为complex<double>数组返回。

我有两个问题:

  1. 该函数接受一个 s 数组complex<double>,但据我所知,.Net 中不存在这样的数据结构。我如何/应该格式化我的数据以传递给fft(...)函数?
  2. 由于静态成员在一个类中,我应该在我的 .Net 控制台应用程序中使用什么语法[DllImport("fft.dll")]

谢谢

编辑:后续问题:这里

0 投票
2 回答
2221 浏览

java - Mandelbrot 在 Java 上设置 - 我的算法有问题吗?

我被要求在 Java 上显示 Mandelbrot 集,但我遇到了问题。我和我的老师都对为什么这不能正确运行感到困惑。

我认为它与算法或复杂类有关,因为除了正/负 1 和 0 之外的所有值在两次迭代后都会逃逸到无穷大。