# Warning: Matrix close to singular or badly scaled

**URL:** <https://forum.dynare.org/t/warning-matrix-close-to-singular-or-badly-scaled/5488>\
**Category:** Dynare help (legacy posts)\
**Created:** [6 May 2016 01:12 UTC](https://forum.dynare.org/t/warning-matrix-close-to-singular-or-badly-scaled/5488 "2016-05-06T01:12:34Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Serenity6](https://forum.dynare.org/letter_avatar_proxy/v4/letter/s/90ced4/32.png) [@Serenity6](https://forum.dynare.org/u/Serenity6)\
**Post date:** [6 May 2016 01:12 UTC](https://forum.dynare.org/t/warning-matrix-close-to-singular-or-badly-scaled/5488/1 "2016-05-06T01:12:34Z")

</div>

Hi, all,

I’m trying to find the optimal macroprudential and monetary rules in a DSGE model using optimal simple rules.  
However I obtained a multiple of warnings as follows:

Configuring Dynare …  
[mex] Generalized QZ.  
[mex] Sylvester equation solution.  
[mex] Kronecker products.  
[mex] Sparse kronecker products.  
[mex] Local state space iteration (second order).  
[mex] Bytecode evaluation.  
[mex] k-order perturbation solver.  
[mex] k-order solution simulation.  
[mex] Quasi Monte-Carlo sequence (Sobol).  
[mex] Markov Switching SBVAR.

Using 64-bit preprocessor  
Starting Dynare (version 2015-10-23).  
Starting preprocessing of the model file …  
Substitution of endo lags \>= 2: added 4 auxiliary variables and equations.  
Found 83 equation(s).  
Evaluating expressions…done  
Computing static model derivatives:

- order 1  
Computing dynamic model derivatives:
- order 1
- order 2  
Processing outputs …  
done  
Preprocessing completed.

OPTIMAL SIMPLE RULE

OSR: Initial value of the objective function: 30.1947

* * *

## f at the beginning of new iteration, 30.1946739199 Predicted improvement: 0.133201213 lambda = 1; f = 29.9297296 lambda = 1.9332; f = 29.6850440 lambda = 3.7372; f = 29.2186078 lambda = 7.2247; f = 28.3387215 lambda = 13.967; f = 26.6940188 lambda = 27; f = 103423018.0523657 lambda = 18.18; f = 25.6739418 lambda = 23.049; f = 101859488.5679415 lambda = 19.99; f = 100134318.3320013 lambda = 18.354; f = 25.6315359 lambda = 19.319; f = 25.3943247 lambda = 20.335; f = 100327449.5864580 lambda = 19.719; f = 25.2953508 lambda = 20.086; f = 100188043.3105255 lambda = 19.865; f = 100064119.4085202 Norm of dx 0.0051614

## Improvement on iteration 1 = 4.899323116 warning: possible inaccuracy in H matrix

f at the beginning of new iteration, 25.2953508037  
Predicted improvement: 29.750447518  
lambda = 1; f = 100554997.7040317  
lambda = 0.33333; f = 103423018.0523658  
lambda = 0.11111; f = 103423018.0523656  
lambda = 0.037037; f = 103423018.0523656  
lambda = 0.012346; f = 101664723.0438191  
lambda = 0.0041152; f = 100540719.5171381  
lambda = 0.0013717; f = 100168255.6644537  
lambda = 0.00045725; f = 100044268.4353072  
lambda = 0.00015242; f = 100002955.6048355  
lambda = 5.0805e-005; f = 25.2923052  
lambda = 9.8216e-005; f = 25.2894634  
lambda = 0.00018987; f = 100008031.1053914  
Warning: Matrix is close to singular or badly  
scaled.  
Results may be inaccurate. RCOND =  
8.287261e-018.

> In dyn\_first\_order\_solver at 314  
> In stochastic\_solvers at 238  
> In resol at 141  
> In osr\_obj at 48  
> In csminit1 at 140  
> In csminwel1 at 118  
> In dynare\_minimize\_objective at 203  
> In osr1 at 102  
> In osr at 60  
> In e at 981  
> In dynare at 223  
> lambda = 0.00012785; f = 25.2883736  
> lambda = 0.00016209; f = 100004266.2215708  
> lambda = 0.00014058; f = 100001351.2700622  
> Warning: Matrix is close to singular or badly  
> scaled.  
> Results may be inaccurate. RCOND =  
> 4.201578e-018.  
> In dyn\_first\_order\_solver at 314  
> In stochastic\_solvers at 238  
> In resol at 141  
> In osr\_obj at 48  
> In csminit1 at 140  
> In csminwel1 at 118  
> In dynare\_minimize\_objective at 203  
> In osr1 at 102  
> In osr at 60  
> In e at 981  
> In dynare at 223  
> lambda = 0.00012907; f = 25.2851655  
> lambda = 0.00013585; f = 100000711.3056649  
> lambda = 0.00013174; f = 100000153.7416213  
> Warning: Matrix is close to singular or badly  
> scaled.  
> Results may be inaccurate. RCOND =  
> 3.495697e-018.  
> In dyn\_first\_order\_solver at 314  
> In stochastic\_solvers at 238  
> In resol at 141  
> In osr\_obj at 48  
> In csminit1 at 140  
> In csminwel1 at 118  
> In dynare\_minimize\_objective at 203  
> In osr1 at 102  
> In osr at 60  
> In e at 981  
> In dynare at 223  
> lambda = 0.00012933; f = 25.2870071  
> Warning: Matrix is close to singular or badly  
> scaled.  
> Results may be inaccurate. RCOND =  
> 7.934372e-019.

Can somebody please explain what this means and what I can do about it? Thanks!

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [6 May 2016 08:16 UTC](https://forum.dynare.org/t/warning-matrix-close-to-singular-or-badly-scaled/5488/2 "2016-05-06T08:16:45Z")

</div>

This means that the Newton-type solver tries some parameter values that result in the matrices arising during solving the model being close to singular. This can happen but is no reason to worry unless the solver terminates prematurely due to this. I tried your file and it stops after 153 iterations, with no warning appearing after iteration 3, so you should be fine.

---

<div class="post-metadata">

**Author:** ![Serenity6](https://forum.dynare.org/letter_avatar_proxy/v4/letter/s/90ced4/32.png) [@Serenity6](https://forum.dynare.org/u/Serenity6)\
**Post date:** [8 May 2016 21:50 UTC](https://forum.dynare.org/t/warning-matrix-close-to-singular-or-badly-scaled/5488/3 "2016-05-08T21:50:24Z")

</div>

Thanks a lot, Dr. Pfeier! Could you tell me how you find that it stops after 153 iterations, with no warning appearing after iteration 3? Did you use any commands? Much appreciated!

---

<div class="post-metadata">

**Author:** ![jpfeifer](https://forum.dynare.org/user_avatar/forum.dynare.org/jpfeifer/32/5044_2.png) [@jpfeifer](https://forum.dynare.org/u/jpfeifer)\
**Post date:** [9 May 2016 09:21 UTC](https://forum.dynare.org/t/warning-matrix-close-to-singular-or-badly-scaled/5488/4 "2016-05-09T09:21:30Z")

</div>

Just look at the output of the solver. You can see e.g.

> [@](#):
>
> Improvement on iteration 1 = 4.899323116

This gives you the iteration. I had no

[quote]Results may be inaccurate. RCOND =  
8.287261e-018.

> In dyn\_first\_order\_solver at 314  
> In stochastic\_solvers at 238  
> In resol at 141  
> In osr\_obj at 48  
> In csminit1 at 140  
> In csminwel1 at 118  
> In dynare\_minimize\_objective at 203  
> In osr1 at 102  
> In osr at 60  
> In e at 981  
> In dynare at 223[/quote]

after iteration number 3 (though this might be different on different computers)

---

<div class="post-metadata">

**Author:** ![Serenity6](https://forum.dynare.org/letter_avatar_proxy/v4/letter/s/90ced4/32.png) [@Serenity6](https://forum.dynare.org/u/Serenity6)\
**Post date:** [10 May 2016 22:45 UTC](https://forum.dynare.org/t/warning-matrix-close-to-singular-or-badly-scaled/5488/5 "2016-05-10T22:45:15Z")

</div>

Get it, thanks a lot, Dr. Pfeifer!
