Data update
This commit is contained in:
parent
4d5544505c
commit
4924dd0264
3073 changed files with 55820 additions and 4408 deletions
|
|
@ -0,0 +1,102 @@
|
|||
class Matrix {
|
||||
constructor(...lists) {
|
||||
if (lists.length === 1 && Array.isArray(lists[0][0])) {
|
||||
this.matrix = lists[0];
|
||||
} else {
|
||||
this.matrix = lists;
|
||||
}
|
||||
}
|
||||
|
||||
toString() {
|
||||
return JSON.stringify(this.matrix);
|
||||
}
|
||||
|
||||
determinant() {
|
||||
if (this.matrix.length === 1) {
|
||||
return this.get(0, 0);
|
||||
}
|
||||
if (this.matrix.length === 2) {
|
||||
return this.get(0, 0) * this.get(1, 1) - this.get(0, 1) * this.get(1, 0);
|
||||
}
|
||||
let sum = 0;
|
||||
let sign = 1;
|
||||
for (let i = 0; i < this.matrix.length; i++) {
|
||||
sum += sign * this.get(0, i) * this.coFactor(0, i).determinant();
|
||||
sign *= -1;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
coFactor(row, col) {
|
||||
const mat = [];
|
||||
for (let i = 0; i < this.matrix.length; i++) {
|
||||
if (i === row) {
|
||||
continue;
|
||||
}
|
||||
const list = [];
|
||||
for (let j = 0; j < this.matrix.length; j++) {
|
||||
if (j === col) {
|
||||
continue;
|
||||
}
|
||||
list.push(this.get(i, j));
|
||||
}
|
||||
mat.push(list);
|
||||
}
|
||||
return new Matrix(mat);
|
||||
}
|
||||
|
||||
replaceColumn(b, column) {
|
||||
const mat = [];
|
||||
for (let row = 0; row < this.matrix.length; row++) {
|
||||
const list = [];
|
||||
for (let col = 0; col < this.matrix.length; col++) {
|
||||
let value = this.get(row, col);
|
||||
if (col === column) {
|
||||
value = b[row];
|
||||
}
|
||||
list.push(value);
|
||||
}
|
||||
mat.push(list);
|
||||
}
|
||||
return new Matrix(mat);
|
||||
}
|
||||
|
||||
get(row, col) {
|
||||
return this.matrix[row][col];
|
||||
}
|
||||
}
|
||||
|
||||
function cramersRule(matrix, b) {
|
||||
const denominator = matrix.determinant();
|
||||
const result = [];
|
||||
for (let i = 0; i < b.length; i++) {
|
||||
result.push(matrix.replaceColumn(b, i).determinant() / denominator);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function main() {
|
||||
const mat = new Matrix(
|
||||
[1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0],
|
||||
[0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0],
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, -1, 1, -1],
|
||||
[0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0],
|
||||
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1],
|
||||
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
[0, 1, 1, 0, -1, 0, 0, 0, 0, 0, 0],
|
||||
[0, 0, 1, 1, 0, -1, 0, 0, 0, 0, 0],
|
||||
[0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0],
|
||||
[0, 0, 0, 0, 1, 1, 0, -1, 0, 0, 0],
|
||||
[0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0]
|
||||
);
|
||||
|
||||
const b = [11, 11, 0, 4, 4, 40, 0, 0, 40, 0, 151];
|
||||
const solution = cramersRule(mat, b);
|
||||
|
||||
console.log("Solution =", solution);
|
||||
console.log(`X = ${solution[8].toFixed(2)}`);
|
||||
console.log(`Y = ${solution[9].toFixed(2)}`);
|
||||
console.log(`Z = ${solution[10].toFixed(2)}`);
|
||||
}
|
||||
|
||||
main();
|
||||
Loading…
Add table
Add a link
Reference in a new issue