### 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

Armadillo: solve with sp_mat

solve system of equations to get service demands from a mixture

Simplex Implementation in z3

For a 3x3 only symmetric and positive definite linear system, is Cholesky still faster than Householder?

Using solve and/or linsolve with the symbolic toolbox in R2010b

Discarding null space of matrix A

Solving linear equations with numeric.js

accessing only left eigenvectors in armadillo c

conjugate gradient with a positive semidefinite matrix

Most efficient way to solve SEVERAL linear systems Ax=b with SMALL A (minimum 3x3 maximum 8x8)

Assigning a sparse matrix in Eigen

The significance of the rotation matrix after computing structure from motion

Changing the LAPACK implementation used by IDL linear algebra routines?

approximate polynomial by linear inequalities

Maximization in quadratic programming using CGAL

Efficient recalculation of weighted least squares regression when weights change