- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
从一个模拟问题,我想在 MATLAB 中计算 1000x1000 数量级的复杂方阵。由于这些值是指贝塞尔函数的值,因此矩阵一点也不稀疏。
由于我对某些参数的行列式变化感兴趣(在我的例子中是搜索到的特征函数的能量),我现在通过首先搜索研究范围的重新缩放因子然后计算来解决这个问题决定因素,
result(k) = det(pre_factor*Matrix{k});
现在这是一个非常笨拙的解决方案,并且仅适用于最大尺寸为 500x500 的矩阵。
有人知道解决这个问题的好方法吗?与 Mathematica 的接口(interface)原则上可能可行,但我对可行性表示怀疑。提前谢谢你
罗伯特
编辑:我没有找到计算问题的便捷解决方案,因为这需要更改为更高的精度。相反,我用那个
ln det M = trace ln M
也就是说,当我根据 k 推导它时
A = trace(inv(M(k))*dM/dk)
所以我至少有关于 k 的行列式对数的变化。从问题的物理背景中,我可以得出对 A 的约束,这最终为我提供了对我的问题有效的解决方法。不幸的是,我不知道这样的解决方法是否可以推广。
最佳答案
您应该意识到,当您将矩阵乘以常数 k 时,矩阵的行列式将按 k^n 缩放,其中 n 是矩阵的维数。因此,对于 n = 1000 和 k = 2,您将行列式缩放为
>> 2^1000
ans =
1.07150860718627e+301
这当然是一个巨大的数字,因此您可能认为它会失败,因为在 double 中,MATLAB 将只表示与 realmax 一样大的 float 。
>> realmax
ans =
1.79769313486232e+308
没有必要重新计算行列式的所有工作,而不是计算像这样的巨大矩阵的行列式无论如何都是一个非常适定的问题。
关于matlab - MATLAB 中巨大矩阵的行列式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4344476/
我试图找到这 3 个函数的 Wronskian 行列式,但代码有“TypeError: No loop matching the specified signature and casting was
我需要编写一个在编译时计算行列式的 constexpr 函数。最明显的解决方案是使用拉普拉斯展开。支持 C++14。 #include #include constexpr int get_cof
是否有任何类似 A * A-1 = I 的数学性质可用于测试类似格式的单元测试中行列式的计算? 最佳答案 手动计算一个(或多个)已知数组的行列式,并将您的结果与该数字进行比较。 尝试不同大小、排列方式
我有一个大的 numpy 数组 arr,形状为 (N, D, M, D) 其中 D 是两个或三。该数组可以被认为是 (D,D) 矩阵 block ,这些矩阵在 N 和 M 维度中被阻塞在一起。我想取这
我是一名优秀的程序员,十分优秀!