ichol
不完整的柯列斯基分解
描述
例子
不完整的柯列斯基分解
这个示例中生成一个不完整的柯列斯基分解。
从对称正定矩阵,一个
:
N = 100;一个= delsq (numgrid (“年代”,N));
一个
是二维的,五点离散-拉普拉斯算子在100 - 100平方网格狄利克雷边界条件。的大小一个
是98 * 98 = 9604
(不是10000年的边界网格用于实施狄利克雷条件)。
好完整的柯列斯基分解的分解,只包含非零一样一个
包含非零。这种分解是非常廉价的计算。尽管该产品L * L '
通常是很不同的吗一个
,产品L * L '
将匹配一个
在它的舍入模式。
L = ichol(一个);规范(L * L ',“摇来摇去”)。/规范(,“摇来摇去”)
ans = 0.0916
规范(A - (L * L ')。* spones (A),“摇来摇去”)。/规范(,“摇来摇去”)
ans = 4.9606 e-17
ichol
也可以用于生成完整的柯列斯基分解的阈值下降。宽容下降减少,密度因素倾向于获得更多的产品L * L '
往往是更好的近似一个
。下面的情节展示不完整的相对误差分解绘制的宽容以及比率下降的密度不完整的完整的柯列斯基的密度因素因素。
n =大小(1);ntols = 20;droptol = logspace (8,0, ntols);全国抵抗运动= 0 (1、ntols);新西兰= 0 (1、ntols);nzComplete = nnz(胆固醇(,“低”));为k = 1: ntols L = ichol(一、结构(“类型”,“信息与通信技术”,“droptol”droptol (k)));新西兰(k) = nnz (L);全国抵抗运动(k) =规范(L * L ',“摇来摇去”)。/规范(,“摇来摇去”);结束图重对数(droptol全国抵抗运动,“线宽”2)标题(放的宽容与规范(L * L”、“向后”)。/规范(A,“来回”))
图semilogx (droptol nz. / nzComplete,“线宽”2)标题(“宽容和填充率ichol /胆固醇下降”)
上的相对误差通常是顺序下宽容,虽然这是没有保证的。
使用ichol
作为一个预调节器
这个例子展示了如何使用一个不完整的柯列斯基分解作为预调节器来改善收敛。
创建一个对称正定矩阵,一个
。
N = 100;一个= delsq (numgrid (“年代”,N));
创建一个不完整的柯列斯基分解的预调节器pcg
。使用一个常数向量作为右边。作为基线,执行pcg
没有预调节器。
b = 1(大小(A, 1), 1);托尔= 1 e-6;麦克斯特= 100;(x0, fl0 rr0、it0 rv0] = pcg (A, b,托尔,麦克斯特);
请注意,fl0 = 1
这表明pcg
没有赶的相对剩余的要求公差最大允许迭代。试好完整的柯列斯基分解预调节器。
L1 = ichol(一个);(x1, fl1 rr1、it1 rv1] = pcg (A, b,托尔,麦克斯特,L1, L1的);
fl1 = 0
,这表明pcg
聚集在59迭代请求的宽容和这样做的价值it1
)。然而,由于这个矩阵是一个离散拉普拉斯算子使用修改不完全乔里斯基可以创建一个更好的预调节器。修改不完全乔里斯基分解构造一个近似因子分解,保持常数向量的运算符的作用。也就是说,规范(* e-L * (L ' * e))
将约为零e = 1(大小(A, 2), 1)
尽管规范(L * L”、“向后”)/规范(A,“来回”)
不接近于零。没有必要为这种语法指定类型nofill
是默认的,但它是良好的实践。
选项。类型=“nofill”;选项。michol =“上”;L2 = ichol(选项);e = 1(大小(A, 2), 1);规范(* e-L2 * (L2‘* e))
ans = 3.7983 e-14
(x2, fl2 rr2、it2 rv2] = pcg (A, b,托尔,麦克斯特,L2, L2”);
pcg
收敛(fl2 = 0
),但只有38个迭代。策划三个收敛历史显示了收敛。
semilogy(0:麦克斯特,rv0. /规范(b),“b”。);持有在semilogy (0: it1 rv1. /规范(b),“r”。);semilogy (0: it2 rv2. /规范(b),“k”。);传奇(“没有预调节器”,“集成电路(0)”,“麦克风(0)”);
情节显示修改后的不完整的柯列斯基预调节器创建一个更快的收敛。
你也可以尝试不完整的柯列斯基分解的阈值下降。下面的图显示了收敛的pcg
与预调节器由各公差。
L3 = ichol(一、结构(“类型”,“信息与通信技术”,“droptol”1 e 1));[x3, fl3 rr3、it3 rv3] = pcg (A, b,托尔,麦克斯特,L3, L3”);L4 = ichol(一、结构(“类型”,“信息与通信技术”,“droptol”,1依照));[x4, fl4 rr4、it4 rv4] = pcg (A, b,托尔,麦克斯特、L4、L4的);L5 = ichol(一、结构(“类型”,“信息与通信技术”,“droptol”1 e - 3));[x5, fl5 rr5、it5 rv5] = pcg (A, b,托尔,麦克斯特、L5、L5”);图semilogy(0:麦克斯特,rv0. /规范(b),“b -”,“线宽”2);持有在semilogy (0: it3 rv3. /规范(b),b -。,“线宽”2);semilogy (0: it4 rv4. /规范(b),“b——”,“线宽”2);semilogy (0: it5 rv5. /规范(b),”乙:“,“线宽”2);传奇(“没有预调节器”,“ICT (1 e 1)”,“ICT(1依照)”,…“ICT (1 e - 3)”,“位置”,“东南”);
注意不完全乔里斯基预调节器采用公差1)依照
表示为ICT(1飞行)
。
与填零不完整的柯列斯基一样,阈值下降分解(即可以受益于修改。选项。michol =“上”
)由于矩阵起源于一个椭圆偏微分方程。与麦克风(0)
,修改后的基于阈值的下降不完整的柯列斯基将保存预调节器的作用常数向量,规范(* e-L * (L ' * e))
将大约0。
使用diagcomp
选项
这个例子演示了使用diagcomp
选择ichol
。
正定矩阵可以分解成不完整的柯列斯基并不总是存在。下面的代码构造一个随机的对称正定矩阵,试图解决一个线性系统使用pcg
。
S = rng (“默认”);= sprandsym(1000 1依照1的军医,1);rng(年代);b =全(sum (A, 2));(x0, fl0 rr0、it0 rv0] = pcg (A, b, 1 e - 6100);
自收敛不是获得,尝试构建一个不完整的柯列斯基预调节器。
L = ichol(结构体(“类型”,“信息与通信技术”,“droptol”1 e - 3));
错误使用ichol遇到负值的主。
如果ichol
分解如上所述,您可以使用diagcomp
选择构建一个转移不完整的柯列斯基分解。而构建l
这样L * L '
接近一个
,ichol
与对角补偿结构l
这样L * L '
接近M = A +α*诊断接头(诊断接头(A))
没有明确的形成米
。不完全分解总是存在对角占优矩阵,α
可以找到呢米
对角占优。
α= max(总和(abs (A), 2)。/诊断接头(A)) 2
α= 62.9341
L1 = ichol(一、结构(“类型”,“信息与通信技术”,“droptol”1 e - 3,“diagcomp”、α));(x1, fl1 rr1、it1 rv1] = pcg (A, b, e - 6100, L1, L1的);
在这里,pcg
仍未收敛所需的迭代次数内所需的公差,但是如下图所示,收敛性好pcg
这比没有预调节器预调节器。选择一个更小的α
也许会有帮助。有一些实验,我们可以解决一个适当的值α
。
α= 1;L2 = ichol(一、结构(“类型”,“信息与通信技术”,“droptol”1 e - 3,“diagcomp”、α));(x2, fl2 rr2、it2 rv2] = pcg (A, b, e - 6100, L2, L2”);
现在,pcg
收敛,可以显示融合历史与每个预调节器的阴谋。
semilogy (0:100 rv0. /规范(b),“b”。);持有在;semilogy (0:100 rv1. /规范(b),“r”。);semilogy (0: it2 rv2. /规范(b),“k”。);传奇(“没有预调节器”,“α\ \大约63”,“\α= 1。”);包含(的迭代次数);ylabel (的相对剩余的);
输入参数
一个
- - - - - -输入矩阵
稀疏的方阵
输入矩阵,指定为一个稀疏的方阵。
选项
- - - - - -柯列斯基分解选项
结构
柯列斯基分解选项,指定为一个结构有五个领域:
字段名 | 总结 | 描述 |
---|---|---|
类型 |
类型的分解 | 表明这味道不完整的柯列斯基来执行。在这一领域的有效值 |
droptol |
公差类型时下降“信息与通信技术” |
负的标量用作宽容当执行ICT下降。较小的元素大小比当地下降公差从产生的因素除了对角元素从未放弃。当地的宽容在一步下降 |
michol |
显示不完整的柯列斯基是否执行修改 | 指示是否修改不完全乔里斯基(MIC)执行。场可能 |
diagcomp |
执行补偿不完整的柯列斯基与指定的系数 | 真正的非负标量作为全球对角线的转变 |
形状 |
确定哪些三角形并返回引用 | 有效的值 |
例子:选项。类型=“nofill”;选项。michol =“上”;L = ichol(选项);
引用
[1]萨阿德,尤瑟夫。“预处理技术。”稀疏线性系统的迭代方法。PWS出版公司,1996。
[2]Manteuffel,又“正定线性系统的一个不完整的分解技术。”数学。第一版。34岁,473 - 497年,1980年。
扩展功能
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
这个函数完全支持线程的环境。金宝app有关更多信息,请参见MATLAB函数线程环境中运行。
分布式阵列
分区大数组在内存使用并行计算集群的工具箱相结合™。
版本历史
介绍了R2011a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。