diff --git a/README.md b/README.md index a4664e187..ced20f308 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Overdetermined sytems are less common but also occur. 4. Adjoint systems

- Ax = b   and   Aᵀy = c + Ax = b   and   Aᴴy = c

where **_A_** can have any shape. @@ -81,7 +81,7 @@ where **_A_** can have any shape.

[M     A]  [x] = [b]
- [Aᵀ   -N]  [y]    [c] + [Aᴴ   -N]  [y]    [c]

where **_A_** can have any shape. @@ -94,7 +94,7 @@ where **_A_** can have any shape. [B   N]  [y]    [c]

-where **_A_** can have any shape and **_B_** has the shape of **_Aᵀ_**. +where **_A_** can have any shape and **_B_** has the shape of **_Aᴴ_**. **_A_**, **_B_**, **_b_** and **_c_** must be all nonzero. Krylov solvers are particularly appropriate in situations where such problems must be solved but a factorization is not possible, either because: diff --git a/docs/src/examples/tricg.md b/docs/src/examples/tricg.md index e981c2f7e..61750de5f 100644 --- a/docs/src/examples/tricg.md +++ b/docs/src/examples/tricg.md @@ -14,7 +14,7 @@ N = diagm(0 => [5.0 * i for i = 1:n]) c = -b # [I A] [x] = [b] -# [Aᵀ -I] [y] [c] +# [Aᴴ -I] [y] [c] (x, y, stats) = tricg(A, b, c) K = [eye(m) A; A' -eye(n)] B = [b; c] @@ -23,7 +23,7 @@ resid = norm(r) @printf("TriCG: Relative residual: %8.1e\n", resid) # [-I A] [x] = [b] -# [ Aᵀ I] [y] [c] +# [ Aᴴ I] [y] [c] (x, y, stats) = tricg(A, b, c, flip=true) K = [-eye(m) A; A' eye(n)] B = [b; c] @@ -32,7 +32,7 @@ resid = norm(r) @printf("TriCG: Relative residual: %8.1e\n", resid) # [I A] [x] = [b] -# [Aᵀ I] [y] [c] +# [Aᴴ I] [y] [c] (x, y, stats) = tricg(A, b, c, spd=true) K = [eye(m) A; A' eye(n)] B = [b; c] @@ -41,7 +41,7 @@ resid = norm(r) @printf("TriCG: Relative residual: %8.1e\n", resid) # [-I A] [x] = [b] -# [ Aᵀ -I] [y] [c] +# [ Aᴴ -I] [y] [c] (x, y, stats) = tricg(A, b, c, snd=true) K = [-eye(m) A; A' -eye(n)] B = [b; c] @@ -50,7 +50,7 @@ resid = norm(r) @printf("TriCG: Relative residual: %8.1e\n", resid) # [τI A] [x] = [b] -# [ Aᵀ νI] [y] [c] +# [ Aᴴ νI] [y] [c] (τ, ν) = (1e-4, 1e2) (x, y, stats) = tricg(A, b, c, τ=τ, ν=ν) K = [τ*eye(m) A; A' ν*eye(n)] @@ -60,7 +60,7 @@ resid = norm(r) @printf("TriCG: Relative residual: %8.1e\n", resid) # [M⁻¹ A ] [x] = [b] -# [Aᵀ -N⁻¹] [y] [c] +# [Aᴴ -N⁻¹] [y] [c] (x, y, stats) = tricg(A, b, c, M=M, N=N, verbose=1) K = [inv(M) A; A' -inv(N)] H = BlockDiagonalOperator(M, N) diff --git a/docs/src/examples/trimr.md b/docs/src/examples/trimr.md index 2aa48be1e..adc4e82e5 100644 --- a/docs/src/examples/trimr.md +++ b/docs/src/examples/trimr.md @@ -14,7 +14,7 @@ m, n = size(A) c = -b # [D A] [x] = [b] -# [Aᵀ 0] [y] [c] +# [Aᴴ 0] [y] [c] llt_D = cholesky(D) opD⁻¹ = LinearOperator(Float64, 5, 5, true, true, (y, v) -> ldiv!(y, llt_D, v)) opH⁻¹ = BlockDiagonalOperator(opD⁻¹, eye(n)) @@ -34,7 +34,7 @@ N = diagm(0 => [5.0 * i for i = 1:n]) c = -b # [I A] [x] = [b] -# [Aᵀ -I] [y] [c] +# [Aᴴ -I] [y] [c] (x, y, stats) = trimr(A, b, c) K = [eye(m) A; A' -eye(n)] B = [b; c] @@ -43,7 +43,7 @@ resid = norm(r) @printf("TriMR: Relative residual: %8.1e\n", resid) # [M A] [x] = [b] -# [Aᵀ -N] [y] [c] +# [Aᴴ -N] [y] [c] ldlt_M = ldl(M) ldlt_N = ldl(N) opM⁻¹ = LinearOperator(Float64, size(M,1), size(M,2), true, true, (y, v) -> ldiv!(y, ldlt_M, v)) diff --git a/docs/src/gpu.md b/docs/src/gpu.md index 4c9887f24..3c6bc1e29 100644 --- a/docs/src/gpu.md +++ b/docs/src/gpu.md @@ -50,7 +50,7 @@ using CUDA, CUDA.CUSPARSE A_gpu = CuSparseMatrixCSC(A_cpu) # A = CuSparseMatrixCSR(A_cpu) b_gpu = CuVector(b_cpu) -# LLᵀ ≈ A for CuSparseMatrixCSC or CuSparseMatrixCSR matrices +# LLᴴ ≈ A for CuSparseMatrixCSC or CuSparseMatrixCSR matrices P = ic02(A_gpu, 'O') # Solve Py = x diff --git a/docs/src/index.md b/docs/src/index.md index ce657436d..00694b4de 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -46,7 +46,7 @@ Overdetermined sytems are less common but also occur. 4 - Adjoint systems ```math - Ax = b \quad \text{and} \quad A^T y = c + Ax = b \quad \text{and} \quad A^H y = c ``` where **_A_** can have any shape. @@ -54,7 +54,7 @@ where **_A_** can have any shape. 5 - Saddle-point and symmetric quasi-definite (SQD) systems ```math - \begin{bmatrix} M & \phantom{-}A \\ A^T & -N \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \left(\begin{bmatrix} b \\ 0 \end{bmatrix},\begin{bmatrix} 0 \\ c \end{bmatrix},\begin{bmatrix} b \\ c \end{bmatrix}\right) + \begin{bmatrix} M & \phantom{-}A \\ A^H & -N \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \left(\begin{bmatrix} b \\ 0 \end{bmatrix},\begin{bmatrix} 0 \\ c \end{bmatrix},\begin{bmatrix} b \\ c \end{bmatrix}\right) ``` where **_A_** can have any shape. @@ -65,7 +65,7 @@ where **_A_** can have any shape. \begin{bmatrix} M & A \\ B & N \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} b \\ c \end{bmatrix} ``` -where **_A_** can have any shape and **_B_** has the shape of **_Aᵀ_**. +where **_A_** can have any shape and **_B_** has the shape of **_Aᴴ_**. **_A_**, **_B_**, **_b_** and **_c_** must be all nonzero. Krylov solvers are particularly appropriate in situations where such problems must be solved but a factorization is not possible, either because: diff --git a/docs/src/warm_start.md b/docs/src/warm_start.md index 030cad6c0..e1d680efd 100644 --- a/docs/src/warm_start.md +++ b/docs/src/warm_start.md @@ -41,14 +41,14 @@ Explicit restarts cannot be avoided in certain block methods, such as TriMR, due ```julia # [E A] [x] = [b] -# [Aᵀ F] [y] [c] +# [Aᴴ F] [y] [c] M = inv(E) N = inv(F) x₀, y₀, stats = trimr(A, b, c, M=M, N=N) # E and F are not available inside TriMR b₀ = b - Ex₀ - Ay -c₀ = c - Aᵀx₀ - Fy +c₀ = c - Aᴴx₀ - Fy Δx, Δy, stats = trimr(A, b₀, c₀, M=M, N=N) x = x₀ + Δx