Questions tagged «linear-algebra»

有关线性代数的算法/计算方面的问题,包括线性系统的解,最小二乘问题,本征问题和其他此类问题。

2
代数多重网格:为什么插值和约束的乘积不会导致范数为1?
我目前正在使用Briggs等人的“ A Multigrid Tutorial”(第8章)。 插值运算符的构造为: 然后给出了约束算子和精细网格算子的构造: 假设我们有三个网格点x0,x1,x2,中间的一个x1很好,而其他的则很粗糙。中间插有x1 = x0*w0 + x2*w2。因此,插值运算符为(在Matlab中): I = [1, 0, 0; w0, 0, w2; 0, 0, 1] I = [ 1, 0, 0] [ w0, 0, w2] [ 0, 0, 1] 然后,限制运算符为: transpose(I) ans = [ 1, w0, 0] [ 0, 0, 0] [ 0, …

2
在python中计算非常大且稀疏的邻接矩阵的所有特征值的最快方法是什么?
我试图找出一种比使用scipy.sparse.linalg.eigsh更快的方法来计算非常大且稀疏的邻接矩阵的所有特征值和特征向量,据我所知,此方法仅使用稀疏性和矩阵的对称属性。邻接矩阵也是二进制的,这使我认为有一种更快的方法可以实现。 我创建了一个随机的1000x1000稀疏邻接矩阵,并在x230 ubuntu 13.04笔记本电脑上比较了几种方法: scipy.sparse.linalg.eigs:0.65秒 scipy.sparse.linalg.eigsh:0.44秒 scipy.linalg.eig:6.09秒 scipy.linalg.eigh:1.60秒 对于稀疏的eigs和eigsh,我将所需特征值和特征向量的数量k设置为矩阵的秩。 问题始于更大的矩阵-在9000x9000矩阵上,scipy.sparse.linalg.eigsh花了45分钟!

3
适用于许多右侧的稀疏线性求解器
我需要用多个右侧(300至1000)来解决相同的稀疏线性系统(300x300至1000x1000)。除了第一个问题外,我还想解决不同的系统,但是具有相同的非零元素(只是不同的值),那就是许多稀疏系统具有恒定的稀疏性模式。我的矩阵是不确定的。 分解和初始化的性能并不重要,但是求解阶段的性能很重要。目前,我正在考虑使用PaStiX或Umfpack,并且我可能会使用Petsc(支持这两个求解器)是否有能够利用我的特定需求(向量化,多线程)的库,或者我应该依赖于通用求解器?也许根据我的需要对其进行一些修改? 如果稀疏矩阵大到怎么办?106× 106106×10610^6 \times 10^6

5
使用相同的,不同的重复求解
我正在使用MATLAB解决一个涉及解决,其中每个时间步随着时间变化。现在,我正在使用MATLAB的:bAx=bAx=b\mathbf{A} \mathbf{x}=\mathbf{b}bb\mathbf{b}mldivide x = A\b 我可以灵活地进行所需的预计算,因此我想知道是否有比更快和/或更准确的方法mldivide。通常在这里做什么?谢谢大家!

1
大稀疏整数矩阵的算法
我正在寻找一个对大型稀疏矩阵执行矩阵运算而又不牺牲数值稳定性的库。矩阵将是1000+×1000+,矩阵的值将在0到1000之间。我将执行索引演算算法,因此将串行生成(稀疏)矩阵的行向量。在开发每一行时,我将需要测试线性独立性。一旦我用所需数量的线性独立向量填充矩阵,便需要将矩阵转换为简化的行梯形形式。 现在的问题是,我的实现使用高斯消去法来确定线性独立性(一旦找到所有行向量,就确保行梯形形式)。但是,给定矩阵的密度和大小,这意味着每个新行中的条目随时间呈指数增长,因为必须找到前导条目的1cm才能执行抵消。寻找矩阵的简化形式进一步加剧了该问题。 所以我的问题是,是否有一种算法或更好的一种实现可以测试线性独立性并解决缩小的行梯形形式,同时保持条目尽可能小?线性独立性的有效测试尤为重要,因为在索引演算算法中,它最多执行。

1
ODE线性系统的算法
我想知道:什么是最好的算法来解决 dudt=Aududt=Au\begin{equation} \frac{du}{dt} = Au \end{equation} 其中AAA是一个实n×nn×nn\times n矩阵。A与时间无关,通常是稀疏的,但不一定是带状的。其特征值具有非正实部。A也是对角线化的,但对于完全对角线化可能太大,以至于计算效率不足。 我有一个很好的经验,有一个隐含的梯形法则。 (I−Δt2A)un+1=(I+Δt2A)un(I−Δt2A)un+1=(I+Δt2A)un\begin{equation} \left(I-\frac{\Delta t}{2} A\right) u_{n+1} = \left(I+\frac{\Delta t}{2} A\right) u_{n} \end{equation} 显式方法或Pade近似值如何?此外,如果将强制性条款添加到RHS中,这会如何变化?

3
Blaze线性代数库?
SIAM《科学计算》杂志上的“重述表达模板:当前方法的性能分析”一文引用了“ Blaze”线性代数库。我以前从未听说过,而且似乎找不到在线参考。(明显的google搜索正在将上述论文归还给您。) 那么这个图书馆是什么,我在哪里可以了解更多呢?

3
关于奇异值分解算法的最新技术水平是什么?
我正在研究仅标头的矩阵库,以在尽可能简单的程序包中提供一定程度的线性代数功能,并且我试图调查当前的最新技术水平:计算a的SVD复矩阵。 我正在进行两阶段分解,即对角化,然后进行奇异值计算。现在,我正在使用Householder方法进行双角化(我相信LAPACK也使用该方法),而且我认为这与当前的方法一样好(除非有人知道算法)为了它..)。 ø( Ñ2)O(N2)\mathcal{O}(N^2) 奇异值的计算在我的清单上是下一个,对于执行此操作的通用算法,我有些不了解。我在这里读到,研究正在朝着一种逆迭代方法的方向发展,该方法可以保证正交性复杂性。我很想听听有关该消息或其他进展。ø( Ñ)O(N)\mathcal{O}(N)

3
在哪些应用案例中加性预处理方案优于乘法式预处理方案?
在域分解(DD)和多网格(MG)方法中,可以将块更新或粗略校正的应用组合为加法或乘法。对于逐点求解器,这是Jacobi和Gauss-Seidel迭代之间的差异。为乘法平滑充当小号(X ø 升d,b )= X Ñ ë 瓦特当施加甲X = bAx=bAx = b小号(xÒ 升d,b )= xñ Ë W ^S(xold,b)=xnewS(x^{old}, b) = x^{new} X我+ 1= Sñ(Sn − 1(。。。,小号1个(x一世,b )。。。,b ),b )xi+1=Sn(Sn−1(...,S1(xi,b)...,b),b) x_{i+1} = S_n(S_{n-1}( ..., S_1(x_i, b) ..., b), b) 然后将添加剂平滑剂应用为 X我+ 1= x一世+ ∑ℓ = 0ñλℓ(Sℓ(x一世,b )− x一世)xi+1=xi+∑ℓ=0nλℓ(Sℓ(xi,b)−xi) x_{i+1} = x_{i} …

3
高效的三对角矩阵算法实现
我正在使用隐式数值方案解决物理问题。这导致我用三对角矩阵求解线性方程。我已经从Wikipedia 编写了此算法。我想知道是否有一个有效的库可以优化方式解决这类方程。一个重要的注意事项是,矩阵本身仅在系统参数发生变化时才会发生变化,因此我有机会对一些算法步骤进行了预先计算,以获得了不错的性能表现。我正在使用C ++。

1
加权SVD问题?
给定两个矩阵和B,我想找到向量x和y,使得 min ∑ i j(A i j − x i y j B i j)2。 以矩阵形式,我试图最小化的Frobenius范数甲- DIAG(X )⋅ 乙⋅ DIAG(Ý )= 甲- 乙∘ (X ÿ ⊤AAABBBxxxyyymin∑ij(Aij−xiyjBij)2.min∑ij(Aij−xiyjBij)2. \min \sum_{ij} (A_{ij} - x_i y_j B_{ij})^2. 。A−diag(x)⋅B⋅diag(y)=A−B∘(xy⊤)A−diag(x)⋅B⋅diag(y)=A−B∘(xy⊤)A - \mbox{diag}(x) \cdot B \cdot \mbox{diag}(y) = A - B \circ (x y^\top) 通常,我想以min ∑ i …

1
最小特征值无逆
假设甲∈ řn × n一种∈[Rñ×ñA\in\mathbb{R}^{n\times n}是对称正定矩阵。 一种一种A足够大,以至于直接求解昂贵甲X = b一种X=bAx=b。 是否有一种迭代算法来查找的最小特征值,而一种一种A该特征值在每次迭代中都不会反转一种一种A? 也就是说,我必须使用共轭梯度之类的迭代算法来求解,因此重复应用A - 1似乎是一个昂贵的“内部循环”。我只需要一个特征向量。甲X = b一种X=bAx=b一种− 1一种-1个A^{-1} 谢谢!

1
线搜索和信任区域算法的尺度不变性
在Nocedal&Wright的有关数值优化的书中,第2.2节(第27页)中有一条语句:“一般而言,对于线搜索算法而言,保留比例不变性要比对信任区域算法要容易得多”。在同一部分中,他们讨论使用新变量,这些变量是原始变量的缩放版本,可以同时帮助行搜索和信任区域。另一种方法是预处理。对于信任区域方法,预处理等效于具有椭圆形信任区域,因此可提供尺度不变性。但是,对于行搜索的预处理,类似的直觉尚不清楚。线搜索以哪种方式更适合尺度不变性?有一些实际考虑吗? 另外,我对信任区域方法的预处理有疑问。对于病情严重的问题,好的预处理器会减少外部Newton迭代和内部CG迭代的次数,还是仅减少后者?由于信任区域在原始空间中为椭圆形,因此良好的预处理器应会导致椭圆形更好地匹配景观。我认为这可能会迫使算法朝更好的方向发展,从而减少外部牛顿迭代的次数。这是正确的吗?

2
科学计算中复杂算术的危险
复杂的内积具有由惯例决定两个不同的定义:ˉ Ù Ť v或ü Ť ˉ v。在BLAS中,我找到了例程cdotu,zdotu和cdotc,zdotc。前两个例程实际上计算u T v(伪内积!),而后两个例程将内积中的第一个向量共轭。另外,通过任一定义(共轭Ù或v),⟨ ü ,v ⟩ = ¯ ⟨ v ,ù ⟩⟨ ü ,v ⟩⟨u,v⟩\langle u,v\rangleü¯Ťvu¯Tv\bar{u}^TvüŤv¯uTv¯u^T\bar{v}üŤvuTvu^Tvüuuvvv⟨ ü ,v ⟩ = ⟨ v ,ù ⟩¯¯¯¯¯¯¯¯¯¯¯⟨u,v⟩=⟨v,u⟩¯\langle u,v\rangle=\overline{\langle v,u\rangle}与共轭!此外,正如评论中指出的那样,为多值复杂函数选择主要值可能取决于惯例。 我的问题是:这种复杂性是否会导致在科学计算中使用复杂算术的真正危险?Deal.ii的作者强调了这个问题,他们建议始终将复数分为实数部分和虚数部分,并且仅使用实数算法。但是我从来没有发现拆分方法很方便。例如,考虑时谐麦克斯韦方程的PML。 在大多数开源FEM软件中,除FreeFem ++和libmesh之外,似乎都普遍担心使用复数。但是,即使有两个例外,复杂算法的测试也比实数少。 我的最后一个问题是:我们是否应该始终避免使用复数?

2
测试矩阵是否为正半定数
我有一个对称矩阵列表LL{\cal L},我需要检查它的正半定性(即它们的特征值非负)。 上面的评论暗示可以通过计算各自的特征值并检查它们是否为非负值来做到这一点(也许必须注意舍入误差)。 在我的场景中,计算特征值非常昂贵,但是我注意到我正在使用的库对正定性进行了相当快速的测试(也就是说,如果矩阵的特征值严格为正。) 因此,想法是,给定一个矩阵B∈LB∈LB \in {\cal L},一个测试如果B+ϵIB+ϵIB + \epsilon I是正定的。如果不是,则BBB不是正半定值,否则可以计算的特征值BBB以确保它确实是正半定值。 我的问题是: 如果给出了对正定性的有效检验,是否存在更直接有效的方法来测试矩阵是否为正半定性?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.