solve_tol.mata
来自「是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到」· MATA 代码 · 共 36 行
MATA
36 行
*! version 1.1.0 25jan2005
version 9.0
mata:
real scalar solve_tol(numeric matrix A, real scalar usertol)
{
real scalar tol, k
real colvector absdiag
if ((tol=solve_tolscale(usertol))>0) {
absdiag = abs(diagonal(A))
k = nonmissing(absdiag)
if (k) tol = tol*(colsum(absdiag)/k)
}
else if (tol<0) tol = -tol
return(tol)
}
/* static */ real scalar solve_tolscale(real scalar tol)
{
pointer(real scalar) scalar p
real scalar _solvetolerance
if (p = findexternal("_solvetolerance")) _solvetolerance = *p
else _solvetolerance = .
if (_solvetolerance>=.) _solvetolerance = 1e-13
return(tol>=. ? _solvetolerance :
(tol>0 ? _solvetolerance*tol : tol))
}
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?