Lines Matching +full:- +full:m

5      petsc.h       - base PETSc routines   petscvec.h - vectors
6 petscsys.h - system routines petscmat.h - matrices
7 petscis.h - index sets petscksp.h - Krylov subspace methods
8 petscviewer.h - viewers petscpc.h - preconditioners
16 0.5*||Ax-b||^2 + lambda*||D*x||_1
22 static char help[] = "Finds the least-squares solution to the under constraint linear model Ax = b,…
23 A is a M*N real matrix (M<N), x is sparse. \n\
24 …We find the sparse solution by solving 0.5*||Ax-b||^2 + lambda*||D*x||_1, where lambda (by default…
27 #define M 3 macro
37 /* User-defined application context */
39 /* Working space. linear least square: f(x) = A*x - b */
40 PetscReal A[M][N]; /* array of coefficients */
41 PetscReal b[M]; /* array of observations */
42 …PetscReal xGT[M]; /* array of ground truth object, which can be used to compare the reconstructio…
43 PetscReal D[K][N]; /* array of coefficients for 0.5*||Ax-b||^2 + lambda*||D*x||_1 */
44 …PetscReal J[M][N]; /* dense jacobian matrix array. For linear least square, J = A. For nonlinear l…
45 PetscInt idm[M]; /* Matrix row, column indices for jacobian and dictionary */
66 switch (ctx->tType) { in SetTaoOptionsFromUserOptions()
73 PetscCall(TaoBRGNSetL1SmoothEpsilon(tao, 1.e-6)); in SetTaoOptionsFromUserOptions()
93 switch (ctx->tType) { in TestOutType()
114 ctx->tType = TEST_NONE; in ProcessOptions()
115 ctx->view_sol = PETSC_TRUE; in ProcessOptions()
117 …PetscCall(PetscOptionsBool("-view_sol", "Penalize deviation from both goals", "cs1.c", ctx->view_s… in ProcessOptions()
118 run = ctx->tType; in ProcessOptions()
119 …PetscCall(PetscOptionsEList("-test_type", "The coverage test type", "cs1.c", testTypes, 3, testTyp… in ProcessOptions()
120 ctx->tType = (TestType)run; in ProcessOptions()
125 /*--------------------------------------------------------------------*/
128 Vec x, f; /* solution, function f(x) = A*x-b */ in main()
134 AppCtx user; /* user-defined work context */ in main()
141 PetscCall(VecCreateSeq(PETSC_COMM_SELF, M, &f)); in main()
144 PetscCall(MatCreateSeqDense(PETSC_COMM_SELF, M, N, NULL, &J)); in main()
145 …PetscCall(MatCreateSeqDense(PETSC_COMM_SELF, K, N, NULL, &D)); /* XH: TODO: dense -> sparse/dense/… in main()
147 for (i = 0; i < M; i++) user.idm[i] = i; in main()
166 /* Bind x to tao->solution. */ in main()
168 /* Bind D to tao->data->D */ in main()
185 …PetscCall(PetscPrintf(PETSC_COMM_SELF, "-------- result x, residual f=A*x-b, and Jacobian=A. -----… in main()
206 /*--------------------------------------------------------------------*/
210 PetscInt m, n; in EvaluateFunction() local
212 PetscReal *b = user->b, *f; in EvaluateFunction()
218 …/* Even for linear least square, we do not direct use matrix operation f = A*x - b now, just for f… in EvaluateFunction()
219 for (m = 0; m < M; m++) { in EvaluateFunction()
220 f[m] = -b[m]; in EvaluateFunction()
221 for (n = 0; n < N; n++) f[m] += user->A[m][n] * x[n]; in EvaluateFunction()
225 PetscCall(PetscLogFlops(2.0 * M * N)); in EvaluateFunction()
229 /*------------------------------------------------------------*/
230 /* J[m][n] = df[m]/dx[n] */
234 PetscInt m, n; in EvaluateJacobian() local
241 for (m = 0; m < M; ++m) { in EvaluateJacobian()
242 for (n = 0; n < N; ++n) user->J[m][n] = user->A[m][n]; in EvaluateJacobian()
245 PetscCall(MatSetValues(J, M, user->idm, N, user->idn, (PetscReal *)user->J, INSERT_VALUES)); in EvaluateJacobian()
254 /* ------------------------------------------------------------ */
259 PetscCall(MatSetValues(D, K, user->idk, N, user->idn, (PetscReal *)user->D, INSERT_VALUES)); in FormDictionaryMatrix()
267 /* ------------------------------------------------------------ */
275 /* ---------------------------------------------------------------------- */
278 …PetscReal *b = user->b; /* **A=user->A, but we don't know the dimension of A in this way, how to f… in InitializeUserData()
279 PetscInt m, n, k; /* loop index for M,N,K dimension. */ in InitializeUserData() local
283 m = 0; in InitializeUserData()
284 b[m++] = 0.28; in InitializeUserData()
285 b[m++] = 0.55; in InitializeUserData()
286 b[m++] = 0.96; in InitializeUserData()
288 …ix, uniformly distributed in [0,1] with 2 digits accuracy. rng(0); A = rand(M, N); A = round(A*100… in InitializeUserData()
293 m = 0; in InitializeUserData()
295 user->A[m][n++] = 0.81; in InitializeUserData()
296 user->A[m][n++] = 0.91; in InitializeUserData()
297 user->A[m][n++] = 0.28; in InitializeUserData()
298 user->A[m][n++] = 0.96; in InitializeUserData()
299 user->A[m][n++] = 0.96; in InitializeUserData()
300 ++m; in InitializeUserData()
302 user->A[m][n++] = 0.91; in InitializeUserData()
303 user->A[m][n++] = 0.63; in InitializeUserData()
304 user->A[m][n++] = 0.55; in InitializeUserData()
305 user->A[m][n++] = 0.16; in InitializeUserData()
306 user->A[m][n++] = 0.49; in InitializeUserData()
307 ++m; in InitializeUserData()
309 user->A[m][n++] = 0.13; in InitializeUserData()
310 user->A[m][n++] = 0.10; in InitializeUserData()
311 user->A[m][n++] = 0.96; in InitializeUserData()
312 user->A[m][n++] = 0.97; in InitializeUserData()
313 user->A[m][n++] = 0.80; in InitializeUserData()
317 for (n = 0; n < N; n++) user->D[k][n] = 0.0; in InitializeUserData()
320 /* for (k=0; k<K; k++) user->D[k][k] = 1.0; */ in InitializeUserData()
321 …/* Choice II: set D to Backward difference matrix of size (N-1)*N, with zero extended boundary ass… in InitializeUserData()
323 user->D[k][k] = -1.0; in InitializeUserData()
324 user->D[k][k + 1] = 1.0; in InitializeUserData()
336 args: -tao_monitor_short -tao_max_it 100 -tao_type pounders -tao_gatol 1.e-6
341-tao_monitor -tao_max_it 100 -tao_type brgn -tao_brgn_regularization_type l2prox -tao_brgn_regular…
346-tao_monitor -tao_max_it 100 -tao_type brgn -tao_brgn_regularization_type l1dict -tao_brgn_regular…
351 …args: -tao_monitor -tao_max_it 100 -tao_type brgn -tao_brgn_regularization_type l2pure -tao_brgn_r…
356 …args: -tao_monitor -tao_max_it 100 -tao_type brgn -tao_brgn_regularization_type lm -tao_gatol 1.e-
361 args: -tao_type brgn -test_type lm -tao_gatol 1.e-6 -view_sol 0 -tao_view
366 args: -tao_type brgn -test_type l1dict -tao_gatol 1.e-6 -view_sol 0 -tao_view