问题标签 [lanczos]

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 投票
0 回答
155 浏览

numpy - 使用 Numpy Linalg 包的稀疏矩阵对角化

可以使用 Numpy Linalg 包对角化的稀疏矩阵的最大大小是多少?

在对我的哈密顿矩阵进行对角化的背景下,我一直在使用诸如 Lanczos 和 Arnoldi 之类的精确对角化方法。

最近我开始使用 Numpy 的 linalg 来做这些数值计算。

我一直想知道,可以使用 Numpy 对角化的非常稀疏矩阵的最大大小是多少。是否有任何技巧可以超出一定的限制,是否有可能让代码更快地工作?在使用 numpy 进行这种编码方面是否有任何最佳实践?

0 投票
2 回答
47 浏览

c - 如何在 C 中将大型数据集传递给没有参数的函数

我正在尝试创建一个通用的 Lanczos 算法,该算法接受一个运算符(函数指针)并从 C 中的该运算符打印一定数量的特征值。我正在使用 GNU 科学库来处理向量和矩阵。具体来说,有问题的运算符接受一些输入向量,并通过引用输出一个向量。所以,我希望 Lanczos 方法的函数原型至少看起来像,

其中 k 将是我想要打印的特征值的数量。问题是,我立即有兴趣为其查找特征值的相关操作员需要使用我在之前的模拟中生成的大量外部数据。具体来说,我感兴趣的运算符可以原型为

在我的程序的其他地方,我将latticeandsite结构定义为

但是,当然,它的编写方式我无法将看起来像我的函数指针传递WDoperatorLanczos. 我解决这个问题的想法是只使用一个全局lattice指针来保存我的模拟结果,而不是将其WDoperator作为参数传递。然而,在研究 stackoverflow 时,似乎普遍的共识是不使用全局变量,尤其是不使用全局指针。那么,有没有我没有想到的更好的方法呢?有没有办法“抑制”函数的参数,使其适合我的函数指针Lanczos例行公事会接受吗?如果全局指针是解决这个问题的方法,是否有使用它们的最佳实践,这样我就不会创建内存泄漏怪物?特别是考虑到将存储在晶格中的数据的大小(现在有 40,000 个矩阵,但是一旦我开始工作,我想扩大它的规模,使其大约为 200k 矩阵)。如果之前在这里有类似的问题,我深表歉意,但我已尽力在论坛范围内寻找类似的问题。

0 投票
1 回答
140 浏览

matlab - 如何从 Lanczos 滤波器获取频率窗口

我有一个 Lanczos 过滤器的代码:

我需要从中绘制时间窗口和频率窗口。我得到了来自 coef 的时间窗口,但我不知道哪个输出会给我频率窗口。我已经绘制了输出变量的所有可能组合,并尝试对其中一些变量进行傅里叶变换,但我没有尝试给我预期的数字。

0 投票
0 回答
134 浏览

c++ - 将 Lanczos 算法实现到 C++ 中,用于量子非谐振荡器

首先,我想提一下,在编码方面我是一个完整的初学者,更不用说 C++,所以请耐心等待,因为我需要完整的指导。我的任务是在 C++ 中实现一维非谐波振荡器的 Lanczos 算法,参考论文链接Analytical Lanczos method

本文提供了算法实现的分步指南: 分步指南here

初始试验函数为:Psi_1 = (1 + x^2) * (exp(-x^2 - 1/4 * x^4)。

该论文还包含针对这种特殊情况的 MATHEMATICA 代码。数学代码

因此,这是我的尝试,但尚未完成,但是,我想确保我在编程逻辑方面走的是正确的道路。还有很多错误等等。(还请原谅这里缺乏基础,我只是一个初学者。非常感谢。)

我还没有完成代码,但是非常感谢一些有经验的指导!(此外,代码必须大量清理,但这是首先尝试了解总体思路。)

0 投票
2 回答
167 浏览

python - Lanczos 算法的特征向量与复矩阵的 numpy.linal.eig() 不同

我寻求复值厄米特矩阵的最低特征值和特征向量。对于任何实值 Hermitian 矩阵,以下代码都可以完美运行:

但是对于复数值,输出的特征向量是不一样的(尽管特征值是一样的!):

知道我做错了什么吗?谢谢你。

- - 解决方案 - -

向 Accumulation 大喊指出这一点,但在此过程中似乎没有任何问题,因为特征值检查产生:

暗示 b[:,0] 和 np.dot(B[:,0],Lv) 都是 Hermitian 矩阵 H 的特征向量。