Anonymous user
QR decomposition: Difference between revisions
Updated D entry
m (→{{header|Ada}}) |
(Updated D entry) |
||
Line 777:
std.typecons, std.numeric, std.range, std.conv;
auto R = new typeof(return)(A.length, A[0].length);
foreach (immutable r, const row; A)
static if (is(U == T)) {
R[r][] = mixin("row[] " ~ op ~ "B");
} else {
assert(row.length == B[r].length);
R[r][] = mixin("row[] " ~ op ~ "B[r][]");
}
return R;
}
}
pdiv = elementwiseMat!q{ / };
▲ return elementwiseMat!(q{ - }, T, T[][])(A, B);
▲ return elementwiseMat!(q{ * }, T, T)(A, x);
▲ return elementwiseMat!(q{ / }, T, T)(A, x);
bool isRectangular(T)(in T[][] mat)
return mat.all!(r => r.length == mat[0].length);
}
T[][] matMul(T)(in T[][] a, in T[][] b)
in {
assert(a.isRectangular && b.isRectangular &&
Line 882 ⟶ 876:
auto C = new T[][](rows(A), cols(A));
foreach (immutable i, const arow; A)
C[i][] = arow[]; //
foreach (immutable i, const brow; B)
C[row + i][col .. col + brow.length] = brow[];
Line 901 ⟶ 895:
Tuple!(T[][],"Q", T[][],"R") QRdecomposition(T)(T[][] A) {
immutable m =
immutable n =
auto Q = matId!T(m);
Line 949 ⟶ 943:
/// Solve a linear least squares problem by QR decomposition.
T[][] lsqr(T)(T[][] A, in T[][] b) pure nothrow {
const qr = QRdecomposition(A);
immutable size_t n = cols(qr.R);
Line 957 ⟶ 951:
}
Unqual!T[][] polyFit(T)(in T[][] x, in T[][] y, in size_t n)
pure nothrow {
immutable size_t m = cols(x);
auto A = new Unqual!T[][](m, n + 1);
|