- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试主要基于 LU decomposition with partial pivoting Matlab 来处理我的 lu 分解
function [L,U,P] = lup(A)
n = length(A);
L = eye(n);
U = zeros(n);
P = eye(n);
for k=1:n-1
% find the entry in the left column with the largest abs value (pivot)
[~,r] = max(abs(A(k:end,k)));
r = n-(n-k+1)+r;
A([k r],:) = A([r k],:);
P([k r],:) = P([r k],:);
L([k r],:) = L([r k],:);
% from the pivot down divide by the pivot
L(k+1:n,k) = A(k+1:n,k) / A(k,k);
U(k,1:n) = A(k,1:n);
A(k+1:n,1:n) = A(k+1:n,1:n) - L(k+1:n,k)*A(k,1:n);
end
U(:,end) = A(:,end);
end
它似乎适用于大多数矩阵(等同于 matlab lu 函数),但是以下矩阵似乎会产生不同的结果:
A = [
3 -7 -2 2
-3 5 1 0
6 -4 0 -5
-9 5 -5 12
];
我只是不知道出了什么问题。它似乎在链接帖子中提到的矩阵上运行良好
最佳答案
你很接近。我总共改了三行
for k=1:n-1
变成了 for k=1:n
我们不做 -1 因为我们也想得到 L (n,n)=u(n,n)/u(n,n)=1
使用您的方法我们将其排除在外
L(k+1:n,k) = A(k+1:n,k)/A(k,k);
变成了 L(k:n,k ) = A(k:n,k)/A(k,k);
因为你遗漏了 L(k,k)=A(k,k)/A(k,k) =1
因为 k+1
改变了,我们不需要从 L 的单位矩阵开始,因为我们现在在对角线上复制 1,所以 L=eyes(n);
变成了 L=zeros(n);
和完成的代码
function [L,U,P] = lup(A)
% lup factorization with partial pivoting
% [L,U,P] = lup(A) returns unit lower triangular matrix L, upper
% triangular matrix U, and permutation matrix P so that P*A = L*U.
n = length(A);
L = zeros(n);
U = zeros(n);
P = eye(n);
for k=1:n
% find the entry in the left column with the largest abs value (pivot)
[~,r] = max(abs(A(k:end,k)));
r = n-(n-k+1)+r;
A([k r],:) = A([r k],:);
P([k r],:) = P([r k],:);
L([k r],:) = L([r k],:);
% from the pivot down divide by the pivot
L(k:n,k) = A(k:n,k) / A(k,k);
U(k,1:n) = A(k,1:n);
A(k+1:n,1:n) = A(k+1:n,1:n) - L(k+1:n,k)*A(k,1:n);
end
U(:,end) = A(:,end);
end
关于MATLAB LU 分解部分旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358167/
我正在尝试主要基于 LU decomposition with partial pivoting Matlab 来处理我的 lu 分解 function [L,U,P] = lup(A) n = le
我试图通过使用 LU 分解来求解 Ax=b,但不知何故我无法通过乘以 L*U 来得到 A。这是代码和结果; A = array([2,3,5,4]).reshape(2,2) b = array([4
设 A 为以下矩阵: 1 3 2 4 如果我调用 lu( ) 函数并像这样保存返回值: [L, U] = lu(A); MATLAB 返回 L, U 使得 L * U = A: >> L * U an
我在 cython 中编写了以下 Matrix 类 用于矩阵求逆和其他一些线性代数运算。我尝试使用LU 分解 来计算矩阵的逆。代码速度很好。我试图实现 this code在 cython 中。我已经检
以下函数不使用行透视进行 LU 分解。 R 中是否有一个现有的函数可以使用行数据进行 LU 分解? > require(Matrix) > expand(lu(matrix(rnorm(16),4,4
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我按照算法写了代码,但是结果不对。根据算法,我们必须指明矩阵的维数,并手动填写主矩阵A和 vector B。我们需要生成一个LU矩阵。它已生成,但编号错误。最后我们必须得到带有解的 vector X。
我正在做 LU decom,我在 googel 上找到了这段代码,但想通过输出“pvt”和“a”来理解它,但它似乎是我的 pvt 不正确,所以我得到了一些不同的东西所以请问谁能纠正我 ..谢谢 这是我
给定 L 和 U LU decomposition和常数 b 的向量使得 LU*x=b ,是否有找到 x 的内置函数?意思是 - X = functionName(L,U,b) 请注意,在 L 和 U
lu 在这种情况下是什么意思: size_t size = 10lu; 我一无所获。 谢谢! 最佳答案 简化:这意味着 unsigned long。 另请引用this. 关于c++ - 变量定义中 "
我在 c# 中偶然发现了这个正则表达式,我想移植到 javascript,但我不明白以下内容: [-.\p{Lu}\p{Ll}0-9]+ 我很难理解的部分当然是\p{Lu}。我访问过的所有正则表达式网
应该如何解释这一规则 fragment LETTER_UPPERCASE : [\p{Lu}] ; 在 https://github.com/okellogg/ada_antlr_grammar/b
应该如何解释这一规则 fragment LETTER_UPPERCASE : [\p{Lu}] ; 在 https://github.com/okellogg/ada_antlr_grammar/b
Lu 应该代表 Letter, Uppercase,但是我得到意想不到的结果 PS > 'Hello World' -replace '\p{Lu}', 'Z' ZZZZZ ZZZZZ 可以看出,Lu
我知道用 %lu 打印一个无符号长整数是不好的做法。在我正在从事的一个项目中,当我尝试以 snprint 格式用 %lu 打印 11 时,我得到了一个很大的数字。(旧代码)我使用的是 gcc 4.9.
我对下面的代码有问题,经过一些研究我在单独的一行中挑出了这个问题,但现在不确定如何解决它。 typedef double ComplexType; typedef std::complex Compl
我正在使用 Armadillo C++ 库求解中/大型线性系统(1000-5000 个方程)。 因为我必须解决不同的线性系统 AX=b 其中 A 始终相同而 B 发生变化,我只想对 A 进行 LU 分
我正在使用 C++ 中的 Eigen 库来求解稀疏线性方程:Ax=b 其中,A 是一个稀疏方阵,b 是一个矩形稀疏矩阵。我有多个 A 矩阵实例,每个实例都有多个右侧 b。因此,我想对所有 A 矩阵进行
更新:这是解决方案,我向每一行添加了一个标量以控制下溢和上溢。感谢大家的帮助。 我一直在研究 C++ 中的 LU 分解,希望有一天能分解并求解大型稀疏矩阵。我找到了一些代码并对其进行了修改以供自己使用
我目前在将数组分解为上 (u) 和下 (l) 数组时遇到一些问题。 我正在使用杜立特方法 我的代码: #include using namespace std; int main(){ do
我是一名优秀的程序员,十分优秀!