34 lines
		
	
	
		
			762 B
		
	
	
	
		
			Matlab
		
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			762 B
		
	
	
	
		
			Matlab
		
	
	
| function A = choleskyNaive(A)
 | |
| %ELIMINATEPP Gaussian elimination with partial pivoting.  Eliminates a
 | |
| %matrix A (sparse or full) into an upper-triangular factor R.
 | |
| 
 | |
| % Loop over rows of A
 | |
| q = min(size(A,2), size(A,1));
 | |
| lastA = 0;
 | |
| for i = 1:q
 | |
|     % Check for valid pivot
 | |
|     if A(i,i) <= 0.0
 | |
|         A = [];
 | |
|         return;
 | |
|     end
 | |
|     
 | |
|     if lastA == A(i,i)
 | |
|         1;
 | |
|     end
 | |
|     lastA = A(i,i);
 | |
|     
 | |
|     % Scale row to be the square-root factor
 | |
|     A(i,i) = sqrt(A(i,i));
 | |
|     A(i,i+1:end) = A(i,i+1:end) ./ A(i,i);
 | |
|     
 | |
|     % Apply low-rank update to remanining lower-right submatrix
 | |
|     A(i+1:end, i+1:end) = A(i+1:end, i+1:end) - ...
 | |
|        A(i, i+1:end)' * A(i, i+1:end);
 | |
|     
 | |
|     % Zero-out the column below the current row
 | |
|     A(i+1:end, i) = 0;
 | |
| end
 | |
| 
 | |
| end
 | |
| 
 |