<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">JAMP</journal-id><journal-title-group><journal-title>Journal of Applied Mathematics and Physics</journal-title></journal-title-group><issn pub-type="epub">2327-4352</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/jamp.2016.41003</article-id><article-id pub-id-type="publisher-id">JAMP-62628</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Physics&amp;Mathematics</subject></subj-group></article-categories><title-group><article-title>
 
 
  Efficient Generalized Inverse for Solving Simultaneous Linear Equations
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>S.</surname><given-names>Kadiam Bose</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>D.</surname><given-names>T. Nguyen</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Structural Technologies Strong Point LLC, Baltimore, MD, USA</addr-line></aff><aff id="aff2"><addr-line>Department of Civil and Environmental Engineering, Old Dominion University, Norfolk, VA, USA</addr-line></aff><pub-date pub-type="epub"><day>11</day><month>01</month><year>2016</year></pub-date><volume>04</volume><issue>01</issue><fpage>16</fpage><lpage>20</lpage><history><date date-type="received"><day>22</day>	<month>November</month>	<year>2015</year></date><date date-type="rev-recd"><day>accepted</day>	<month>5</month>	<year>January</year>	</date><date date-type="accepted"><day>12</day>	<month>January</month>	<year>2016</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
   Solving large scale system of Simultaneous Linear Equations (SLE) has been (and continue to be) a major challenging problem for many real-world engineering and science applications. Solving SLE with singular coefficient matrices arises from various engineering and sciences applications [1]-[6]. In this paper, efficient numerical procedures for finding the generalized (or pseudo) inverse of a general (square/rectangle, symmetrical/unsymmetrical, non-singular/singular) matrix and solving systems of Simultaneous Linear Equations (SLE) are formulated and explained. The developed procedures and its associated computer software (under MATLAB [7] computer environment) have been based on “special Cholesky factorization schemes” (for a singular matrix). Test matrices from different fields of applications have been chosen, tested and compared with other existing algorithms. The results of the numerical tests have indicated that the developed procedures are far more efficient than the existing algorithms. 
 
</p></abstract><kwd-group><kwd>Generalized Inverse Algorithms</kwd><kwd> Simultaneous Linear Systems</kwd><kwd> Matrix Inverse</kwd><kwd> Singular Matrix</kwd><kwd> Pseudo Inverse</kwd><kwd> Cholesky Factorization</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>In scientific computing, most computational time is spent on solving system of Simultaneous Linear Equations (SLE) which can be represented in matrix notations as</p><disp-formula id="scirp.62628-formula49"><label>(1.1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x4.png"  xlink:type="simple"/></disp-formula><p>where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x5.png" xlink:type="simple"/></inline-formula> is a singular/non-singular matrix, and b is a given vector in<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x6.png" xlink:type="simple"/></inline-formula>. For practical engineering/ science applications, matrix A can be either sparse (for most cases), or dense (for some cases). For a non-sin- gular coefficient matrix A, direct methods (Cholesky factorization, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x7.png" xlink:type="simple"/></inline-formula>algorithm, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x8.png" xlink:type="simple"/></inline-formula>decomposition, etc) or iterative methods (Conjugate Gradient algorithm, Bi-Conjugate Stabilization, GMRES, etc.) are used to solve Equation (1.1). If the coefficient matrix is singular or rectangular, the above mentioned direct and iterative methods cannot be used to solve Equation (1.1) and thus generalized inverse is needed to solve the unknown solution vector x in Equation (1.1).</p><p>The generalized (or pseudo) inverse of a matrix is an extension of the ordinary/regular square (non-singular) matrix inverse, which can be applied to any matrix (such as singular, rectangular etc.). The generalized inverse has numerous important engineering and sciences applications. Over the past decades, generalized inverses of matrices and its applications have been investigated by many researchers [<xref ref-type="bibr" rid="scirp.62628-ref1">1</xref>]-[<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>]. Generalized inverse is also known as “Moore-Penrose inverse” or “g-inverse” or “pseudo-inverse” etc.</p><p>In this paper we introduce an efficient (in terms of computational time and computer memory requirement) generalized inverse formulation to solve SLE with full or deficient rank of the coefficient matrix. The coefficient matrix can be singular/non-singular, symmetric/unsymmetric, or square/rectangular. Due to popular MATLAB software, which is widely accepted by researchers and educators worldwide, the developed code from this work is written in MATLAB language.</p><p>The rest of this paper is organized as follows. In Section 2, we discuss background of generalized inverse. In Section 3, we give a description of the algorithm. This section also describes the efficient generalized inverse formulation (which uses modified Cholesky factorization). In Section 4, we present comparison of numerical performances of the proposed algorithm with other existing algorithms. Extensive set of coefficient matrices (including rectangular, square, symmetrical, non-symmetrical, singular, non-singular matrices) obtained from well-established/popular websites [<xref ref-type="bibr" rid="scirp.62628-ref8">8</xref>] [<xref ref-type="bibr" rid="scirp.62628-ref9">9</xref>] were tested and the numerical performance in terms of timings, error norm were compared with other algorithms. Finally, conclusions are drawn in Section 5.</p></sec><sec id="s2"><title>2. Singular Value Decomposition (SVD) and the Generalized Inverse</title><p>A general (square or rectangular) matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x9.png" xlink:type="simple"/></inline-formula> can be decomposed as</p><disp-formula id="scirp.62628-formula50"><label>(2.1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x10.png"  xlink:type="simple"/></disp-formula><p>where</p><disp-formula id="scirp.62628-formula51"><label>(2.2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x11.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.62628-formula52"><graphic  xlink:href="http://html.scirp.org/file/62628x12.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.62628-formula53"><label>(2.3)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x13.png"  xlink:type="simple"/></disp-formula><p>Let A be a singular matrix of size <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x14.png" xlink:type="simple"/></inline-formula> and let k be the rank of the matrix. Based on Equation (2.1), one has</p><disp-formula id="scirp.62628-formula54"><graphic  xlink:href="http://html.scirp.org/file/62628x15.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.62628-formula55"><graphic  xlink:href="http://html.scirp.org/file/62628x16.png"  xlink:type="simple"/></disp-formula><p>with</p><disp-formula id="scirp.62628-formula56"><label>(2.4)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x17.png"  xlink:type="simple"/></disp-formula><p>and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x18.png" xlink:type="simple"/></inline-formula></p><p>Note: Eigen-values of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x19.png" xlink:type="simple"/></inline-formula> and Eigen-values of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x20.png" xlink:type="simple"/></inline-formula> are the same. However, the Eigen-vectors of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x21.png" xlink:type="simple"/></inline-formula> and Eigen-vectors of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x22.png" xlink:type="simple"/></inline-formula> are “NOT” the same.</p><p>Then, the generalized inverse <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x23.png" xlink:type="simple"/></inline-formula> of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x24.png" xlink:type="simple"/></inline-formula> is the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x25.png" xlink:type="simple"/></inline-formula> matrix and is given as</p><disp-formula id="scirp.62628-formula57"><label>(2.5)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x26.png"  xlink:type="simple"/></disp-formula><p>where</p><p><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x27.png" xlink:type="simple"/></inline-formula>and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x28.png" xlink:type="simple"/></inline-formula> is the <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x28.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x29.png" xlink:type="simple"/></inline-formula> diagonal matrix, with<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x28.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x30.png" xlink:type="simple"/></inline-formula>.</p></sec><sec id="s3"><title>3. Efficient Generalized Inverse Algorithms [<xref ref-type="bibr" rid="scirp.62628-ref1">1</xref>]-[<xref ref-type="bibr" rid="scirp.62628-ref3">3</xref>] [<xref ref-type="bibr" rid="scirp.62628-ref5">5</xref>] [<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>]</title><p>Moore-Penrose inverse can be computed using Singular Value Decomposition (SVD), Least Squares Method, QR factorizations, Finite Recursive Algorithm [<xref ref-type="bibr" rid="scirp.62628-ref2">2</xref>] [<xref ref-type="bibr" rid="scirp.62628-ref3">3</xref>], etc. In this work, our numerical algorithms have been based on:</p><p>(a) The “special Cholesky factorization” (for symmetrical/singular coefficient matrix), and</p><p>(b) The generalized inverse of a product of 2 matrices [<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>] and can be described in the following paragraphs.</p><p>The Moore-Penrose inverse (or generalized inverse or pseudo inverse) of a <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x31.png" xlink:type="simple"/></inline-formula> matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x31.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x32.png" xlink:type="simple"/></inline-formula> (not necessarily a square matrix) is the unique <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x31.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x33.png" xlink:type="simple"/></inline-formula> matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x31.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x32.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x33.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x34.png" xlink:type="simple"/></inline-formula> which satisfies the following four conditions:</p><p>1. General condition: <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x35.png" xlink:type="simple"/></inline-formula></p><p>2. Reflexive condition: <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x36.png" xlink:type="simple"/></inline-formula></p><p>3. Normalized condition: <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x37.png" xlink:type="simple"/></inline-formula></p><p>4. Reverse normalized condition: <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x38.png" xlink:type="simple"/></inline-formula></p><p>Consider <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula> with a square coefficient <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula> matrix, and let the rank be less than the size of the matrix (if r is the rank of the matrix, then<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula>). Let the size of the known right-hand-side vector <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x42.png" xlink:type="simple"/></inline-formula> be<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x42.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x43.png" xlink:type="simple"/></inline-formula>. Consider a symmetric positive <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x42.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x44.png" xlink:type="simple"/></inline-formula> matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x42.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x45.png" xlink:type="simple"/></inline-formula> with rank <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x42.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x46.png" xlink:type="simple"/></inline-formula> (here, the matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x42.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x47.png" xlink:type="simple"/></inline-formula> plays the same role as matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x42.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x47.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x48.png" xlink:type="simple"/></inline-formula> in Equation (1.1)), then based on the theorem presented in [<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>], there exists a unique <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x39.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x40.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x41.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x42.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x47.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x48.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x49.png" xlink:type="simple"/></inline-formula> such that:</p><disp-formula id="scirp.62628-formula58"><label>(3.1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x50.png"  xlink:type="simple"/></disp-formula><p>In Equation (3.1), matrices <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x51.png" xlink:type="simple"/></inline-formula> have the dimensions<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x51.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x52.png" xlink:type="simple"/></inline-formula>, respectively.</p><p>M is the upper triangular (special) Cholesky factorized matrix and contains exactly <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x53.png" xlink:type="simple"/></inline-formula> zero rows. Removing the zero rows from M, one obtains a <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x54.png" xlink:type="simple"/></inline-formula> (upper, rectangular) matrix<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x53.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x54.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x55.png" xlink:type="simple"/></inline-formula>.</p><disp-formula id="scirp.62628-formula59"><label>(3.2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x56.png"  xlink:type="simple"/></disp-formula><p>In this work, the upper triangular (special) Cholesky factorized matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x57.png" xlink:type="simple"/></inline-formula> can be obtained by the regular/ standard Cholesky factorization, with the following modifications:</p><p>a) When the diagonal term of the current <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x58.png" xlink:type="simple"/></inline-formula> row is very close to zero, then factorization of this dependent row is skipped.</p><p>b) When the current <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x59.png" xlink:type="simple"/></inline-formula> row is factorized, all previous rows <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x59.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x60.png" xlink:type="simple"/></inline-formula> were used except those dependent row(s).</p><p>Consider the generalized inverse of a matrix product [<xref ref-type="bibr" rid="scirp.62628-ref1">1</xref>] [<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>]</p><disp-formula id="scirp.62628-formula60"><label>(3.3)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x61.png"  xlink:type="simple"/></disp-formula><p>From Equation (3.3), if <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x62.png" xlink:type="simple"/></inline-formula> then</p><disp-formula id="scirp.62628-formula61"><label>(3.4)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x63.png"  xlink:type="simple"/></disp-formula><p>If <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x64.png" xlink:type="simple"/></inline-formula> and A is a <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x64.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x65.png" xlink:type="simple"/></inline-formula> matrix of rank r, then one obtains from Equation (3.3)</p><disp-formula id="scirp.62628-formula62"><label>(3.5)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x66.png"  xlink:type="simple"/></disp-formula><p>Let us consider regular inverse in Equation (3.5) in place of generalized inverse</p><disp-formula id="scirp.62628-formula63"><label>(3.6)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x67.png"  xlink:type="simple"/></disp-formula><p>Using Equation (3.4),</p><disp-formula id="scirp.62628-formula64"><label>(3.7)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x68.png"  xlink:type="simple"/></disp-formula><p>From Equations (3.1)-(3.2) and Equation (3.6) one obtains,</p><disp-formula id="scirp.62628-formula65"><label>(3.8)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x69.png"  xlink:type="simple"/></disp-formula><p>Thus, Equation (3.7) becomes</p><disp-formula id="scirp.62628-formula66"><label>(3.9)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/62628x70.png"  xlink:type="simple"/></disp-formula><p>While MATLAB solution can be obtained by <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x71.png" xlink:type="simple"/></inline-formula> implying the generalized inverse <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x71.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x72.png" xlink:type="simple"/></inline-formula> [see Equation (3.9)] to be formed explicitly, our main idea is to solve SLE where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x71.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x72.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x73.png" xlink:type="simple"/></inline-formula> is a known right-hand-side vector.</p></sec><sec id="s4"><title>4. Numerical Performance of ODU Generalized Inverse Solver</title><p>Based on the detailed algorithms explained in Section 3, the numerical performance of our proposed procedures are evaluated in this section. The known RHS vector <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x74.png" xlink:type="simple"/></inline-formula> can be random vector, or can be chosen such a way that the unknown solution vector<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x74.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x75.png" xlink:type="simple"/></inline-formula>.</p><p>We also compared the performance of our algorithm with the efficient algorithm described in [<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>] and also with MATLAB built-in function <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x76.png" xlink:type="simple"/></inline-formula> [<xref ref-type="bibr" rid="scirp.62628-ref7">7</xref>] for computing the generalized inverse explicitly. We use MATLAB version 7.6.0.324 (R2008a) on Intel Core 2 CPU, 2.13 GHZ, 2GB RAM, Windows XP Professional SP3 for numerical comparisons.</p><p><xref ref-type="table" rid="table1">Table 1</xref> and <xref ref-type="table" rid="table2">Table 2</xref> records the times (in seconds) taken by our proposed algorithm, the algorithm mentioned in [<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>] and MATLAB built-in function [<xref ref-type="bibr" rid="scirp.62628-ref7">7</xref>]<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x77.png" xlink:type="simple"/></inline-formula>. For our convenience, we represent our algorithm with<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x77.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x78.png" xlink:type="simple"/></inline-formula>, algorithm in [<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>] with <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x77.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x78.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x79.png" xlink:type="simple"/></inline-formula> and MATLAB built-in function with<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x77.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x78.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x79.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x80.png" xlink:type="simple"/></inline-formula>. In addition, we have also presented the error norm for all the test matrices.</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Computational times (in seconds) for symmetric rank-deficient test matrices with RHS Vector as linear combination of columns of coefficient matrix</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Sl. No.</th><th align="center" valign="middle" >Name</th><th align="center" valign="middle" >Size</th><th align="center" valign="middle" >Rank</th><th align="center" valign="middle" >ODU-ginverse Error Norm</th><th align="center" valign="middle" >geninv Error Norm</th><th align="center" valign="middle" >MATLAB-pinv ( ) Error Norm</th></tr></thead><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >lock_700</td><td align="center" valign="middle" >700 &#215; 700</td><td align="center" valign="middle" >165</td><td align="center" valign="middle" >0.1514 1.033 &#215; 10<sup>−8</sup></td><td align="center" valign="middle" >0.3446 1.1399 &#215; 10<sup>−6</sup></td><td align="center" valign="middle" >1.2967 2.215 &#215; 10<sup>−11</sup></td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >dwt_1005</td><td align="center" valign="middle" >1005 &#215; 1005</td><td align="center" valign="middle" >995</td><td align="center" valign="middle" >2.6634 7.1302 &#215; 10<sup>−9</sup></td><td align="center" valign="middle" >4.2889 6.764 &#215; 10<sup>−6 </sup></td><td align="center" valign="middle" >14.0320 4.5736 &#215; 10<sup>−12 </sup></td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >bcspwr06</td><td align="center" valign="middle" >1454 &#215; 1454</td><td align="center" valign="middle" >1446</td><td align="center" valign="middle" >8.5029 1.477 &#215; 10<sup>−8</sup></td><td align="center" valign="middle" >13.3176 1.829 &#215; 10<sup>−5 </sup></td><td align="center" valign="middle" >40.3646 2.7131 &#215; 10<sup>−12 </sup></td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >bcsstm13</td><td align="center" valign="middle" >2003 &#215; 2003</td><td align="center" valign="middle" >1241</td><td align="center" valign="middle" >11.5997 6.7629 &#215; 10<sup>−9</sup></td><td align="center" valign="middle" >19.1901 1.826 &#215; 10<sup>−8 </sup></td><td align="center" valign="middle" >36.3413 5.6493 &#215; 10<sup>−13 </sup></td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >lock2232</td><td align="center" valign="middle" >2232 &#215; 2232</td><td align="center" valign="middle" >368</td><td align="center" valign="middle" >5.5518 7.9519 &#215; 10<sup>−9</sup></td><td align="center" valign="middle" >10.8755 2.5797 &#215; 10<sup>−7 </sup></td><td align="center" valign="middle" >40.7582 1.0761 &#215; 10<sup>−11 </sup></td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >cegb2802</td><td align="center" valign="middle" >2802 &#215; 2802</td><td align="center" valign="middle" >289</td><td align="center" valign="middle" >8.9571 9.7558 &#215; 10<sup>−9</sup></td><td align="center" valign="middle" >18.6816 3.7220 &#215; 10<sup>−7 </sup></td><td align="center" valign="middle" >69.9847 1.7532 &#215; 10<sup>−11 </sup></td></tr></tbody></table></table-wrap><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Computational times (in seconds) for rectangular rank-deficient test matrices (Tall type: Rows &gt;&gt; Cols) with RHS Vector as linear combination of columns of coefficient matrix</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Sl. No.</th><th align="center" valign="middle" >Name</th><th align="center" valign="middle" >Size</th><th align="center" valign="middle" >Rank</th><th align="center" valign="middle" >ODU-ginverse Error Norm</th><th align="center" valign="middle" >geninv Error Norm</th><th align="center" valign="middle" >MATLAB-pinv ( ) Error Norm</th></tr></thead><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >D_6</td><td align="center" valign="middle" >970 &#215; 435</td><td align="center" valign="middle" >339</td><td align="center" valign="middle" >0.1347 1.216 &#215; 10<sup>−11 </sup></td><td align="center" valign="middle" >0.2809 1.333 &#215; 10<sup>−11 </sup></td><td align="center" valign="middle" >1.3240 7.403 &#215; 10<sup>−13 </sup></td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >mk9-b2</td><td align="center" valign="middle" >1260 &#215; 378</td><td align="center" valign="middle" >343</td><td align="center" valign="middle" >0.1162 5.950 &#215; 10<sup>−14 </sup></td><td align="center" valign="middle" >0.2478 1.018 &#215; 10<sup>−13 </sup></td><td align="center" valign="middle" >0.6098 1.681 &#215; 10<sup>−13 </sup></td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >Franz1</td><td align="center" valign="middle" >2240 &#215; 768</td><td align="center" valign="middle" >755</td><td align="center" valign="middle" >1.3077 1.457 &#215; 10<sup>−13 </sup></td><td align="center" valign="middle" >2.3649 1.290 &#215; 10<sup>−13 </sup></td><td align="center" valign="middle" >6.0490 2.806 &#215; 10<sup>−13 </sup></td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >mk10-b2</td><td align="center" valign="middle" >3150 &#215; 630</td><td align="center" valign="middle" >586</td><td align="center" valign="middle" >0.8094 1.599 &#215; 10<sup>−13 </sup></td><td align="center" valign="middle" >1.5776 2.057 &#215; 10<sup>−13 </sup></td><td align="center" valign="middle" >3.2363 2.573 &#215; 10<sup>−13 </sup></td></tr></tbody></table></table-wrap></sec><sec id="s5"><title>5. Conclusion</title><p>In this paper, various efficient algorithms for solving SLE with full rank, or rank deficient have been reviewed, proposed and tested. The developed numerical procedures can be applied to solve “general” SLE (in the form<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x81.png" xlink:type="simple"/></inline-formula>, where the coefficient matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x82.png" xlink:type="simple"/></inline-formula> could be square/rectangular, symmetrical/unsymmetrical, non-singular/singular). The users have option to choose either a direct solver or an iterative solver inside the generalized inverse to solve for SLE. Numerical results have shown that the proposed algorithms are highly efficient as compared to existing algorithms [<xref ref-type="bibr" rid="scirp.62628-ref6">6</xref>] (including the popular MATLAB built-in function<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x81.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x82.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/62628x83.png" xlink:type="simple"/></inline-formula>) [<xref ref-type="bibr" rid="scirp.62628-ref7">7</xref>].</p></sec><sec id="s6"><title>Acknowledgements</title><p>The authors would like to acknowledge Gelareh Bakhtyar for her useful discussions.</p></sec><sec id="s7"><title>Cite this paper</title><p>S. Kadiam Bose,D. T. Nguyen, (2016) Efficient Generalized Inverse for Solving Simultaneous Linear Equations. Journal of Applied Mathematics and Physics,04,16-20. doi: 10.4236/jamp.2016.41003</p></sec></body><back><ref-list><title>References</title><ref id="scirp.62628-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Nguyen, D.T. (2006) Finite Element Methods: Parallel-Sparse Statics and Eigen-Solutions. Springer Publisher.</mixed-citation></ref><ref id="scirp.62628-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Golub, G.H. and Loan, C.F.V. (1996) Matrix Computations. The John Hopkins University Press.</mixed-citation></ref><ref id="scirp.62628-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Heath, M.T. (1997) Scientific Computing: An Introductory Survey. McGraw Hill Publisher.</mixed-citation></ref><ref id="scirp.62628-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Hou, G. and Wang, Y. (2004) A Substructuring Technique for Design Modifications of Interface Conditions. Structural Dynamics &amp; Materials Conference, Palm Springs, California, 19-22 April 2004.  
http://dx.doi.org/10.2514/6.2004-2010</mixed-citation></ref><ref id="scirp.62628-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Farhat, C. and Roux, F.X. (1994) Implicit Parallel Processing in Structural Mechanics. Computational Mechanics Advances, 2, Elsevier Publisher.</mixed-citation></ref><ref id="scirp.62628-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Pierre, C. (2005) Fast Computation of Moore-Penrose Inverse Matrices. Neural Information Processing—Letters and Reviews, 8.</mixed-citation></ref><ref id="scirp.62628-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">MATLAB, MATLAB—The Language of Technical Computing.</mixed-citation></ref><ref id="scirp.62628-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Davis, T. University of South Florida Matrix Collection.</mixed-citation></ref><ref id="scirp.62628-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">SJSU, SJSU—Singular Matrix Database.</mixed-citation></ref></ref-list></back></article>