解一个线性系统通过提供qmr
计算一个函数处理* x
和‘* x
的系数矩阵一个
。
创建一个非对称三对角矩阵。预览矩阵。
一个=21日×2110 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0⋮
因为这三对角矩阵有一个特殊的结构,你可以代表操作* x
一个函数处理。当一个
乘以一个向量,大部分结果向量中的元素是0。结果中的非零元素对应的非零三对角元素一个
。
表达式
就变成:
。
结果向量可以写成三个向量的总和:
=
。
同样地,的表达式
就变成:
。
。
在MATLAB®,编写一个函数,创建这些向量并将它们添加在一起,从而赋予的价值* x
或‘* x
,这取决于国旗输入:
函数y = afun (x,国旗)如果比较字符串(国旗,“notransp”)%计算* x(y = 0;x (1:20))…+ ((10:1:0)';(1:10)”)。* x…+ 2 * (x(2:结束);0);elseif比较字符串(国旗,“透明”)' * x %计算y = 2 * [0;x (1:20))…+ ((10:1:0)';(1:10)”)。* x…+ (x(2:结束);0);结束结束
(这个函数保存为本地函数结束时的例子。)
现在,解决线性系统
通过提供qmr
计算的函数处理* x
和‘* x
。使用一个公差1 e-6
和25个迭代。指定
行总结
所以,真正的解决方案
是一个向量的。
qmr聚集在迭代19与相对剩余4.7 e-07解决方案。
x1 =21日×11.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000⋮