matlab - Matlab SOR方法实现
问题描述
使用零向量的初始近似值并且不考虑容差,我将代码缩短为只需要 4 个参数。这样 x1 总是等于 c,依此类推,方程 x(k+1)=x(k)T+c。
但是,代码似乎没有产生您期望的正确近似值。有没有人注意到我在哪里搞砸了?假设 DLU_decomposition(A) 返回正确的矩阵。
function x = sor2(A,b,omega,kmax)
[D,L,U] = DLU_decomposition(A);
T=inv(D-omega*L)*(((1-omega)*D)+(omega*U));
c= (omega*inv(D-omega*L))*b;
for k=1:kmax,
if(k==1),
x=c;
end
x=T*x+c;
end
norm(A*x-b)
end
解决方案
好吧,我可以猜测所有的混乱可能来自乘法。您需要按元素计算矩阵-> 使用.*
而不是 normal *
。这会提供正确的近似值吗?
推荐阅读
- c# - 在其他项目 dll 中读取 Service Fabric 项目配置
- django - 如何验证登录
- javascript - React Error : 已声明但它的值从未被读取。[6133]
- highcharts - 如何在高角图表包装器中使用添加系列和更新方法?
- python - 我如何访问kivy中的全局变量
- chart.js - Chartjs条形图试图从数据集中获取标签
- javascript - 在Javascript引擎(v8)中,优化阶段的“隐式调用”到底是什么意思?
- jquery - c3条形图标签颜色
- reactjs - React Fusion Charts - 注释标签样式不起作用
- html - 在仪表板标题中间对齐具有可变长度的文本