CS代写 jama_cholesky_old.h Source File

jama_cholesky_old.h Source File

Main Page   Namespace List   Compound List   File List   Compound Members  

Copyright By PowCoder代写 加微信 powcoder

jama_cholesky_old.h
Go to the documentation of this file.00001 #ifndef JAMA_CHOLESKY_H
00002 #define JAMA_CHOLESKY_H
00004 #include “math.h”
00005 /* needed for sqrt() below. */
00008 namespace JAMA
00044 template
00045 class Cholesky
00047 TNT::Array2D L; // lower triangular factor
00048 int isspd; // 1 if matrix to be factored was SPD
00051 public:
00053 Cholesky();
00054 Cholesky(const TNT::Array2D &A);
00055 TNT::Array2D getL() const;
00056 int is_spd() const;
00060 template
00061 Cholesky::Cholesky() : L(0,0), isspd(0) {}
00067 template
00068 int Cholesky::is_spd() const
00070 return isspd;
00076 template
00077 TNT::Array2D Cholesky::getL() const
00079 return L;
00088 template
00089 Cholesky::Cholesky(const TNT::Array2D &A)
00093 int m = A.dim1();
00094 int n = A.dim2();
00096 isspd = (m == n);
00098 if (m != n)
00099 {
00100 L = TNT::Array2D(0,0);
00101 return;
00102 }
00104 L = TNT::Array2D(n,n);
00107 // Main loop.
00108 for (int j = 0; j < n; j++) 00109 { 00110 double d = 0.0; 00111 for (int k = 0; k < j; k++) 00112 { 00113 Real s = 0.0; 00114 for (int i = 0; i < k; i++) 00115 { 00116 s += L[k][i]*L[j][i]; 00117 } 00118 L[j][k] = s = (A[j][k] - s)/L[k][k]; 00119 d = d + s*s; 00120 isspd = isspd && (A[k][j] == A[j][k]); 00121 } 00122 d = A[j][j] - d; 00123 isspd = isspd && (d > 0.0);
00124 L[j][j] = sqrt(d > 0.0 ? d : 0.0);
00125 for (int k = j+1; k < n; k++) 00126 { 00127 L[j][k] = 0.0; 00128 } 00129 } 00133 // namespace JAMA 00135 #endif 00136 // JAMA_CHOLESKY_H Generated at Mon Jan 20 07:47:17 2003 for JAMA/C++ by 1.2.5 written by Dimitri van Heesch, © 1997-2001 程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com