x=
bicg (A,b)
¶
x=
bicg (A,b,tol)
¶
x=
bicg (A,b,tol,maxit)
¶
x=
bicg (A,b,tol,maxit,M)
¶
x=
bicg (A,b,tol,maxit,M1,M2)
¶
x=
bicg (A,b,tol,maxit,M, [],x0)
¶
x=
bicg (A,b,tol,maxit,M1,M2,x0)
¶
x=
bicg (A,b,tol,maxit,M, [],x0, …)
¶
x=
bicg (A,b,tol,maxit,M1,M2,x0, …)
¶
[x,旗帜,relres,iter,resvec] =
bicg (A,b, …)
¶
求解线性方程组A * x=b
采用双共轭梯度迭代法。
输入参数为:
Afcn
使得Afcn(x,“nottransp”)=A*x
和Afcn(x,“transp”)=A'*x
。的附加参数Afcn
可能在之后通过x0.
b-A * x
。如果规范(b-A * x)
≤tol*标准(b)
如果tol则使用1e-6的公差。M=M1 * M2
二者都M1和M2可以作为矩阵或函数句柄或内联函数传递g
使得g(x,“nottransp”)=M1\x
或g(x,“nottransp”)=M2\x
和g(x,“transp”)=M1' \x
或g(x,“transp”)=M2' \x
如果M1省略或为空,则不应用预处理。预处理系统在理论上等效于应用bicg
线性系统的方法inv(M1)*A*发票(M2) *y=发票(M1) *b
和inv(M2’)*A'*发票(M1') *z=发票(M2’) *b
然后设置x=发票(M2) *y
.
以下任何参数x0被视为参数,并以适当的方式传递给任何函数(Afcn或Mfcn)或者已经给予bicg
.
输出参数为:
A * x=b
。如果算法没有收敛,那么x是具有最小残差的迭代。eps*范数(x2.
.
长resvec1.
.
考虑一个三对角矩阵的平凡问题
n=20;A=toeplitz(稀疏([1,1],[1,2],[2,1]*n^2,1,n))+。。。toeplitz(稀疏(1,2,1,n)*n/2。。。稀疏(1,2,1,1,n)*n/2);b=A*ones(n,1);重新启动=5;[M1,M2]=ilu(A);#在这种三元情况下,它对应于lu(A)M=M1*M2;Afcn=@(x,string)strcmp(string,“nottransp”)*(A*x)+。。。strcmp(字符串,“transp”)*(A'*x);Mfcn=@(x,string)strcmp(string,“nottransp”)*(M\x)+。。。strcmp(字符串,“transp”)*(M'\x);M1fcn=@(x,string)strcmp(string,“nottransp”)*(M1\x)+。。。strcmp(字符串,“transp”)*(M1'\x);M2fcn=@(x,string)strcmp(string,“nottransp”)*(M2\x)+。。。strcmp(字符串,“transp”)*(M2'\x);
示例1:的最简单用法bicg
x=bicg(A,b)
示例2: bicg
具有一个计算A*x
和A*x
x=bicg(Afcn,b,[],n)
示例3: bicg
具有预处理矩阵M
x=bicg(A,b,1e-6,n,M)
示例4: bicg
具有作为预处理器的函数
x=bicg(Afcn,b,1e-6,n,Mfcn)
示例5: bicg
具有预处理矩阵M1和M2
x=bicg(A,b,1e-6,n,M1,M2)
示例6: bicg
具有作为预处理器的函数
x=bicg(Afcn,b,1e-6,n,M1fcn,M2fcn)
示例7: bicg
将需要参数的函数作为输入
函数y=Ap(A,x,string,z)##计算A^z*x或(A^z)'*x y=x;if(strcmp(字符串,“nottransp”))对于i=1:z y=A*y;elseif(strcmp(字符串,“transp”))的endfor i=1:z y=A'*y;endfor endifendfunctionApfcn=@(x,string,p)Ap(A,x,string、p);x=bicg(Apfcn,b,[],[],]],[],2);
参考
Y.Saad,稀疏线性系统的迭代方法,2003年第二版,SIAM。
x=
稳定双共轭梯度 (A,b,tol,maxit,M1,M2,x0, …)
¶
x=
稳定双共轭梯度 (A,b,tol,maxit,M, [],x0, …)
¶
[x,旗帜,relres,iter,resvec] =
稳定双共轭梯度 (A,b, …)
¶
解决A x=b
使用稳定的双共轭梯度迭代方法。
输入参数为:
Afcn
使得Afcn(x)=A*x
。的附加参数Afcn
在之后通过x0.
b-A * x
。如果规范(b-A * x)
≤tol*标准(b)
如果tol则使用1e-6的公差。最小值(20,numel(b))
使用。M=M1 * M2
二者都M1和M2可以作为矩阵或函数句柄或内联函数传递g
使得g(x) =M1\x
或g(x) =M2\x
所使用的技术是正确的预处理,即它已被解决A*inv(M) *y=b
然后x=发票(M) *y
.
零(大小(b))
使用。以下参数x0被视为参数,并以适当的方式传递给任何函数(A或M)传递给双稳态
.
输出参数为:
(A*x-b) /标准b)
.
iter+ 0.5
长resvec) - 1) / 2
可以看到执行的(总的)迭代的总数。让我们考虑一个三对角矩阵的平凡问题
n=20;A=toeplitz(稀疏([1,1],[1,2],[2,1]*n^2,1,n))+。。。toeplitz(稀疏(1,2,1,n)*n/2。。。稀疏(1,2,1,1,n)*n/2);b=A*ones(n,1);重新启动=5;[M1,M2]=ilu(A);#在这种三元情况下,它对应于lu(A)M=M1*M2;Afcn=@(x)A*x;Mfcn=@(x)M\x;M1fcn=@(x)M1\x;M2fcn=@(x)M2\x;
示例1:的最简单用法稳定双共轭梯度
x=bigstab(A,b,[],n)
示例2: 稳定双共轭梯度
具有一个计算A * x
x=bigstab(Afcn,b,[],n)
示例3: 稳定双共轭梯度
具有预处理矩阵M
x=bigstab(A,b,[],1e-06,n,M)
示例4: 稳定双共轭梯度
具有作为预处理器的函数
x=bigstab(Afcn,b,1e-6,n,Mfcn)
示例5: 稳定双共轭梯度
具有预处理矩阵M1和M2
x=bigstab(A,b,[],1e-6,n,M1,M2)
示例6: 稳定双共轭梯度
具有作为预处理器的函数
x=bigstab(Afcn,b,1e-6,n,M1fcn,M2fcn)
示例7: 稳定双共轭梯度
将一个需要参数的函数作为输入
函数y=Ap(A,x,z)#计算A^z*x y=x;对于i=1:z y=A*y;endfor endfunctionApfcn=@(x,string,p)Ap(A,x,字符串,p);x=bigstab(Apfcn,b,[],[],]],[],[2],2);
示例8:明确的例子表明稳定双共轭梯度
使用正确的预处理器
[M1,M2]=ilu(A+0.1*眼(n));#扰动的因子分解M=M1*M2;##bigstab在一次迭代后计算的参考解[x_ref,fl]=bigstab(A,b,[],1,M)##右预处理[y,fl]=bigstab[A/M,b,[],1)x=M\y#比较x和x_ref
参考
Y.Saad,稀疏线性系统的迭代方法,2003年第二版,SIAM
x=
cgs (A,b,tol,maxit,M1,M2,x0, …)
¶
x=
cgs (A,b,tol,maxit,M, [],x0, …)
¶
[x,旗帜,relres,iter,resvec] =
cgs (A,b, …)
¶
解决A x=b
这里的A是一个正方阵,使用共轭梯度平方法。
输入参数为:
Afcn
使得Afcn(x)=A*x
。的附加参数Afcn
在之后通过x0.
最小值(20,numel(b))
使用。M=M1*M2
二者都M1和M2可以作为矩阵或函数句柄或内联函数传递g
使得g(x)=M1\x
或g(x)=M2\x
如果M1为空或未通过,则不应用预处理器。所使用的技术是正确的预处理,即解决A*inv(M)*y=b
然后x=发票(My
.
零(大小(b))
使用。以下参数x0被视为参数,并以适当的方式传递给任何函数(A或P)传递给cgs
.
输出参数为:
(A*x-b) /标准b)
.
长resvec1.
可以看到执行的迭代总数。让我们考虑一个三对角矩阵的平凡问题
n=20;A=toeplitz(稀疏([1,1],[1,2],[2,1]*n^2,1,n))+。。。toeplitz(稀疏(1,2,1,n)*n/2。。。稀疏(1,2,1,1,n)*n/2);b=A*ones(n,1);重新启动=5;[M1,M2]=ilu(A);#在这种三标签的情况下,它对应于chol(A)M=M1*M2;Afcn=@(x)A*x;Mfcn=@(x)M\x;M1fcn=@(x)M1\x;M2fcn=@(x)M2\x;
示例1:的最简单用法cgs
x=cgs(A,b,[],n)
示例2: cgs
具有一个计算A * x
x=cgs(Afcn,b,[],n)
示例3: cgs
具有预处理矩阵M
x=cgs(A,b,[],1e-06,n,M)
示例4: cgs
具有作为预处理器的函数
x=cgs(Afcn,b,1e-6,n,Mfcn)
示例5: cgs
具有预处理矩阵M1和M2
x=cgs(A,b,[],1e-6,n,M1,M2)
示例6: cgs
具有作为预处理器的函数
x=cgs(Afcn,b,1e-6,n,M1fcn,M2fcn)
示例7: cgs
将需要参数的函数作为输入
函数y=Ap(A,x,z)#计算A^z*x y=x;对于i=1:z y=A*y;endfor endfunctionApfcn=@(x,string,p)Ap(A,x,字符串,p);x=cgs(Apfcn,b,[],[],]],[],2],2);
示例8:明确的例子表明cgs
使用正确的预处理器
[M1,M2]=ilu(A+0.3*眼(n));#扰动的因子分解M=M1*M2;##一次迭代后从cgs计算的参考解[x_ref,fl]=cgs(A,b,[],1,M)##右预处理[y,fl]=cgs(A/M,b,[],1)x=M\y#比较x和x_ref
参考文献:
Y.Saad,稀疏线性系统的迭代方法,2003年第二版,SIAM
x=
gmres (A,b,重新启动,tol,maxit,M1,M2,x0, …)
¶
x=
gmres (A,b,重新启动,tol,maxit,M, [],x0, …)
¶
[x,旗帜,relres,iter,resvec] =
gmres (A,b, …)
¶
解决A x=b
使用带重启的预处理GMRES迭代方法,也称为PGMRES(重启)。
输入参数为:
Afcn
使得Afcn(x)=A*x
。的附加参数Afcn
在之后通过x0.
inv(M) * (b-a * x)
。迭代操作如果标准(inv(M) * (b-a * x))≤tol*标准(inv(M) *B)
如果tol则使用1e-6的公差。min(10,N/重新启动)
使用。请注意,如果重新启动是空的,那么maxit是最大迭代次数。如果重新启动和maxit不为空,则最大迭代次数为重新启动 * maxit
.如果两者都有重新启动和maxit为空,则最大迭代次数设置为min(10,N)
.
M=M1*M2
二者都M1和M2可以作为矩阵、函数句柄或内联函数传递g
这样g(x)=M1\x
或g(x)=M2\x
如果M1是[]或未给定,则不应用预处理器。所使用的技术是左预处理,即解决inv(M) *A * x=发票(M) *b
而不是A * x=b
.
零(大小(b))
使用。以下参数x0被视为参数,并以适当的方式传递给任何函数(A或M或M1或M2)传递到gmres
.
输出为:
连续迭代小于eps)
iter(2)=重新启动
如果重新启动为空或N,则1≤iter(2)≤maxit.
更清楚地说,近似x在迭代时计算(iter(1)1.重新启动+iter(2)
。从于输出x对应于最小预处理边解,该方法执行的迭代总数从下式给出长度(resvec)-1
.
标准A * x0-b)
.
让我们考虑一个三对角矩阵的平凡问题
n=20;A=toeplitz(稀疏([1,1],[1,2],[2,1]*n^2,1,n))+。。。toeplitz(稀疏(1,2,1,n)*n/2。。。稀疏(1,2,1,1,n)*n/2);b=A*ones(n,1);重新启动=5;[M1,M2]=ilu(A);#在这种三元情况下,它对应于lu(A)M=M1*M2;Afcn=@(x)A*x;Mfcn=@(x)M\x;M1fcn=@(x)M1\x;M2fcn=@(x)M2\x;
示例1:的最简单用法gmres
x=gmres(A,b,[],[],n)
示例2: gmres
具有一个计算A * x
x=gmres(Afcn,b,[],[],n)
示例3:的用法gmres
随着重新启动
x=gmres(A,b,重新启动);
示例4: gmres
具有预处理矩阵M有无重新启动
x=gmres(A,b,[],1e-06,n,M)x=gmre(A,b,重新启动,1e-6,n,M)
示例5: gmres
具有作为预处理器的函数
x=克重(Afcn,b,[],1e-6,n,Mfcn)
示例6: gmres
具有预处理矩阵M1和M2
x=gmres(A,b,[],1e-6,n,M1,M2)
示例7: gmres
具有作为预处理器的函数
x=克数(Afcn,b,1e-6,n,M1fcn,M2fcn)
示例8: gmres
将需要参数的函数作为输入
函数y=Ap(A,x,p)#计算A^p*x y=x;对于i=1:p y=A*y;endfor endfunctionApfcn=@(x,p)Ap(A,x,p);x=gmres(Apfcn,b,[],[],[[],[],]],[],2);
示例9:明确的例子表明gmres
使用aleft预处理器
[M1,M2]=ilu(A+0.1*眼(n));#扰动的因子分解M=M1*M2;##两次迭代后从gmres计算的参考解[x_ref,fl]=gmres(A,b,[],[],1,M)##左预处理[x,fl]=gmres(M\A,M\b,[],[1],1)x#比较x和x_ref
参考
Y.Saad,稀疏线性系统的迭代方法,2003年第二版,SIAM
x=
qmr (A,b,rtol,maxit,M1,M2,x0)
¶
x=
qmr (A,b,rtol,maxit,P)
¶
[x,旗帜,relres,iter,resvec] =
qmr (A,b, …)
¶
解决A x=b
使用准最小残差迭代方法(无需前瞻)。
最小值(20,numel(b))
使用。零(大小(b))
使用。A可以作为矩阵或函数句柄或内联函数传递f
使得f(x,“nottransp”)=A*x
和f(x,“transp”)=A'*x
.
预处理器P给定为P=M1*M2
二者都M1和M2可以作为矩阵或函数句柄或内联函数传递g
使得g(x,“nottransp”)=M1\x
或g(x,“nottransp”)=M2\x
和g(x,“transp”)=M1'\x
或g(x,“transp”)=M2'\x
.
如果使用多个输出参数调用
(值2未使用,但为了兼容性而跳过)。
参考文献:
x=
tfqmr (A,b,tol,maxit,M1,M2,x0, …)
¶
x=
tfqmr (A,b,tol,maxit,M, [],x0, …)
¶
[x,旗帜,relres,iter,resvec] =
tfqmr (A,b, …)
¶
解决A x=b
使用基于cgs的Transpose Tree qmr方法。
输入参数为:
Afcn
使得Afcn(x)=A*x
。的附加参数Afcn
在之后通过x0.
最小值(20,numel(b))
使用。为了兼容,从于方法在迭代次数中的不同行为是奇数或偶数,因此在中被视为迭代tfqmr
整个奇偶循环。也就是说,为了进行整个迭代,该算法执行两个子迭代:奇数迭代和偶数迭代。M=M1*M2
二者都M1和M2可以作为矩阵或函数句柄或内联函数传递g
使得g(x)=M1\x
或g(x)=M2\x
所使用的技术是正确的预处理,即解决A*inv(M)*y=b
然后x=发票(M)*y
而不是A x=b
.
零(大小(b))
使用。以下参数x0被视为参数,并以适当的方式传递给任何函数(A或M)传递给tfqmr
.
输出参数为:
(A*x-b) /标准b)
.
范数(b-A x0)
).正在执行长resvec1.
可以看到执行的迭代总数。让我们考虑一个三对角矩阵的平凡问题
n=20;A=toeplitz(稀疏([1,1],[1,2],[2,1]*n^2,1,n))+。。。toeplitz(稀疏(1,2,1,n)*n/2。。。稀疏(1,2,1,1,n)*n/2);b=A*ones(n,1);重新启动=5;[M1,M2]=ilu(A);#在这种三标签的情况下,它对应于chol(A)M=M1*M2;Afcn=@(x)A*x;Mfcn=@(x)M\x;M1fcn=@(x)M1\x;M2fcn=@(x)M2\x;
示例1:的最简单用法tfqmr
x=tfqmr(A,b,[],n)
示例2: tfqmr
具有一个计算A * x
x=tfqmr(Afcn,b,[],n)
示例3: tfqmr
具有预处理矩阵M
x=tfqmr(A,b,[],1e-06,n,M)
示例4: tfqmr
具有作为预处理器的函数
x=tfqmr(Afcn,b,1e-6,n,Mfcn)
示例5: tfqmr
具有预处理矩阵M1和M2
x=tfqmr(A,b,[],1e-6,n,M1,M2)
示例6: tfmqr
具有作为预处理器的函数
x=tfqmr(Afcn,b,1e-6,n,M1fcn,M2fcn)
示例7: tfqmr
将需要参数的函数作为输入
函数y=Ap(A,x,z)#计算A^z*x y=x;对于i=1:z y=A*y;endfor endfunctionApfcn=@(x,string,p)Ap(A,x,字符串,p);x=tfqmr(Apfcn,b,[],[],]],[],[2],2);
示例8:明确的例子表明tfqmr
使用正确的预处理器
[M1,M2]=ilu(A+0.3*眼(n));#扰动的因子分解M=M1*M2;##一次迭代后从tfqmr计算的参考解[x_ref,fl]=tfqmr(A,b,[],1,M)##右预处理[y,fl]=tfqmr
参考
Y.Saad,稀疏线性系统的迭代方法,2003年第二版,SIAM
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号