### linear-algebra

#### Numerical Economic Computability Algorithm

I know these types of questions are discouraged as being subjective but after receiving a number of 'less than helpful' answers to my more specific version of this question, I would like to try again. My problem is an 'economic computability' problem that involves solving a massive sparse system of linear equations using a numerical/iterative approximation algorithm. Specifically, an input-output table which computes the amount of work/labor put into each individual good and service in the economy(fully disaggregated) in terms of the amount of hours of labor each one takes to produce. Since each commodity only has a few, at most hundreds of other commodities as inputs, the matrix is likely to be sparse. In a small modern economy, there is likely to be more than 10 million+ individual goods and services, for a larger one there is likely to be hundreds of millions. A better description: The input–output table for an economy is in practice likely to be mostly blanks. In reality each product has on average only a few tens or at most hundreds of inputs to its production rather than a million. This makes it more economical to represent the system in terms of a vector of lists rather than a matrix. In consequence, there are short-cuts which can be taken to arrive at a result. We can use another approach, that of successive approximation.The idea here is that as a first approximation we ignore all inputs to the production process apart from directly expended labour. This gives us a first, approximate estimate of each product’s labour value. It will be an underestimate because it ignores the non-labour inputs to the production process. To arrive at our second approximation we add in the non-labour inputs valued on the basis of the labour values computed in the first phase. This will get us one step closer to the true labour values. Repeated application of this process will give us the answer to the desired degree of accuracy. If about half the value of an average product is derived from direct labour inputs then each iteration round our approximation process will add one binary digit of significance to our answer. An answer correct to four significant decimal digits (which is better than the market can achieve) would require about 15 iterations round our approximation process. The time order complexity of this algorithm is proportional to the number of products times the average number of inputs per product, times the desired accuracy of the result in digits. On our previous assumptions this could be computed on a supercomputer in a few minutes, rather than the thousands of years required for Gaussian elimination(8). (8)Hodgson (1984, p. 170) states that the best method for solving an input–output table involves n^2 calculations. While he doesn’t give any explanation for this claim, we assume that he must be recognizing the use of an iterative technique (or else the complexity would be n^3), but he fails to recognise that the technical coefficient matrix would be sparse. A better use of data structures reduces the complexity substantially, as argued above. My questions would be: -Is this even possible? -Is there a better, more accurate, or more tractable algorithm than the one described above? -What is the best language/library for doing this sort of thing? Thanks

Your problem, as it is formulated, sounds like a whole research and development project. Unless more details of the matrix you are dealing with are provided, it is unlikely that you obtain a concrete answer: which sparse linear solver to use. Here is some information you can start from. Yes, it is possible to solve systems of millions linear algebraic equations with sparse matrices, using just an ordinary PC. Software that can handle such problems does exist. You will definitely need to use a program based on an iterative approach. This is because a direct algorithm (Gauss/LU-fact/Cholesky, etc.) would require enormous amounts of RAM, which is not available on an ordinary PC; and data exchange with the hard drive would be inappropriately slow. Efficient algorithms can only be implemented using a language that allows arithmetic and memory operations "down to the core". C is the language of choice. As an example of such program, I suggest that you consider a product described in the following webpage: http://members.ozemail.com.au/~comecau/CMA_Sparse.htm

### Related Links

Matrix Division

How to represent a bus ride in linear programming?

Matlab : How do I ensure that the covariance matrix is positive definite when using Kalman Filter

Computing singular values vs eigenvalues when you have the choice

Solving of a linear system with parameters

Upper Division Linear Algebra

positive solutions to a homogeneous linear system

Use LispLab within AutoCAD

Eigenvalues of large symmetric matrices

Eigen - directly compute log determinant of huge sparse matrix

Calculating the coefficients of a separable state

When to use eigen and when to use Blas

Numerical Economic Computability Algorithm

Index of a maximum element in TensorFlow tensor

Efficiently multiplying matrix with transpose using cuBlas

Linear Algebra Derivation in Gertler-Karadi (2015) AEJ