首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab中的Jacobi/Gauss Seidel方法

Matlab中的Jacobi/Gauss Seidel方法
EN

Stack Overflow用户
提问于 2013-12-29 19:12:28
回答 1查看 3.1K关注 0票数 0

我需要在Matlab中实现Jacobi和Guass Seidel的方法。

我找到了此链接,它的代码为每个示例生成正确的结果(在我试过的一个示例上)。

见第3条。

我的问题是,实现与描述的这里这里不同

我很高兴使用其他人的代码(实际上,我更喜欢尝试和测试的代码),但我想确切地了解它是如何工作的。

有人能告诉我关于文章中使用的实现的描述吗?

或者,这些算法的其他实现在Matlab中是否可以被认为是基准呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-29 20:13:04

我想向您展示Seidel上的代码是如何工作的,希望您可以自己对Jacobi进行同样的分析。

代码语言:javascript
复制
Q=tril(A); % Q == L
r=b-A*x;
dx=Q\r; 

这个部分在数学上意味着x(:,k+1) = inv(L) * (b - A*x(:,k)) = inv(L) * (b - L*x(:,k) - U*x(:,k));

在您提供的维基百科页面中,它需要inv(L) * (b - U*x(:,k));

但是它们是自inv(L) * (b - L*x(:,k) - U*x(:,k)) = inv(L) * (b - U*x(:,k)) - x(:,k);以来的等价物,所以如果您遵循维基百科中的公式,迭代更新应该是:x(:,k+1)=(dx + x(:,k));,而在您提供的代码中是相同的:x(:,k+1) = x(:,k) + lambda * dx;

请注意,lambda是一个松弛系数,主要作用于收敛速度的调节。您可以在代码中设置为1,这使得它与wikipeida中的公式完全相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20829040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档