A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://TheAlgorithms.github.io/C-Plus-Plus/d4/d68/qr__decompose_8h_source.html below:

TheAlgorithms/C++: numerical_methods/qr_decompose.h Source File

Go to the documentation of this file. 9#ifndef NUMERICAL_METHODS_QR_DECOMPOSE_H_ 10#define NUMERICAL_METHODS_QR_DECOMPOSE_H_ 34

std::valarray<std::valarray<T>>

const

&v) {

36 const char

separator =

' '

;

39 for

(

size_t

row = 0; row < v.size(); row++) {

40 for

(

size_t

col = 0; col < v[row].size(); col++)

41

out << std::right << std::setw(width) << std::setfill(separator)

53

std::ostream &

operator<<

(std::ostream &out, std::valarray<T>

const

&v) {

55 const char

separator =

' '

;

58 for

(

size_t

row = 0; row < v.size(); row++) {

59

out << std::right << std::setw(width) << std::setfill(separator)

76inline double vector_dot

(

const

std::valarray<T> &a,

const

std::valarray<T> &b) {

94 return

std::sqrt(dot);

103template

<

typename

T>

105 const

std::valarray<T> &b) {

110 if

(deno <= std::numeric_limits<double>::epsilon()) {

111

std::cerr <<

"["

<< __func__ <<

"] Possible division by zero\n"

;

115 double

scalar = num / deno;

145template

<

typename

T>

147 const

std::valarray<std::valarray<T>> &A,

148

std::valarray<std::valarray<T>> *Q,

149

std::valarray<std::valarray<T>> *R

151

std::size_t ROWS = A.size();

152

std::size_t COLUMNS = A[0].size();

153

std::valarray<T> col_vector(ROWS);

154

std::valarray<T> col_vector2(ROWS);

155

std::valarray<T> tmp_vector(ROWS);

157 for

(

int

i = 0; i < COLUMNS; i++) {

167 for

(j = 0; j < ROWS; j++) {

168

tmp_vector[j] = A[j][i];

169

col_vector[j] = A[j][i];

171 for

(j = 0; j < i; j++) {

172 for

(

int

k = 0; k < ROWS; k++) {

173

col_vector2[k] = Q[0][k][j];

175

col_vector2 =

vector_proj

(col_vector, col_vector2);

176

tmp_vector -= col_vector2;

185 for

(j = 0; j < ROWS; j++) Q[0][j][i] = tmp_vector[j] / mag;

192 for

(

int

kk = 0; kk < ROWS; kk++) {

193

col_vector[kk] = Q[0][kk][i];

200 for

(

int

k = i; k < COLUMNS; k++) {

201 for

(

int

kk = 0; kk < ROWS; kk++) {

202

col_vector2[kk] = A[kk][k];

204

R[0][i][k] = (col_vector * col_vector2).sum();

Functions to compute QR decomposition of any rectangular matrix.

std::valarray< T > vector_proj(const std::valarray< T > &a, const std::valarray< T > &b)

void qr_decompose(const std::valarray< std::valarray< T > > &A, std::valarray< std::valarray< T > > *Q, std::valarray< std::valarray< T > > *R)

double vector_dot(const std::valarray< T > &a, const std::valarray< T > &b)

double vector_mag(const std::valarray< T > &a)

std::ostream & operator<<(std::ostream &out, std::valarray< std::valarray< T > > const &v)


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4