--- id: 5a23c84252665b21eecc7e77 title: Eliminação gaussiana challengeType: 5 forumTopicId: 302272 dashedName: gaussian-elimination --- # --description-- Escreva uma função para calcular \\(Ax = b\\) usando a eliminação gaussiana e, em seguida, a substituição reversa. \\(A\\) sendo uma matriz \\(n \\times n\\). Além disso, \\(x\\) e \\(b\\) são vetores \\(n\\) por 1. Para melhorar a precisão, use pivô parcial e escala. # --hints-- `gaussianElimination` deve ser uma função. ```js assert(typeof gaussianElimination == 'function'); ``` `gaussianElimination([[1,1],[1,-1]], [5,1])` deve retornar um array. ```js assert( Array.isArray( gaussianElimination( [ [1, 1], [1, -1] ], [5, 1] ) ) ); ``` `gaussianElimination([[1,1],[1,-1]], [5,1])` deve retornar `[ 3, 2 ]`. ```js assert.deepEqual( gaussianElimination( [ [1, 1], [1, -1] ], [5, 1] ), [3, 2] ); ``` `gaussianElimination([[2,3],[2,1]] , [8,4])` deve retornar `[ 1, 2 ]`. ```js assert.deepEqual( gaussianElimination( [ [2, 3], [2, 1] ], [8, 4] ), [1, 2] ); ``` `gaussianElimination([[1,3],[5,-2]], [14,19])` deve retornar `[ 5, 3 ]`. ```js assert.deepEqual( gaussianElimination( [ [1, 3], [5, -2] ], [14, 19] ), [5, 3] ); ``` `gaussianElimination([[1,1],[5,-1]] , [10,14])` deve retornar `[ 4, 6 ]`. ```js assert.deepEqual( gaussianElimination( [ [1, 1], [5, -1] ], [10, 14] ), [4, 6] ); ``` `gaussianElimination([[1,2,3],[4,5,6],[7,8,8]] , [6,15,23])` deve retornar `[ 1, 1, 1 ]`. ```js assert.deepEqual( gaussianElimination( [ [1, 2, 3], [4, 5, 6], [7, 8, 8] ], [6, 15, 23] ), [1, 1, 1] ); ``` # --seed-- ## --seed-contents-- ```js function gaussianElimination(A,b) { } ``` # --solutions-- ```js function gaussianElimination(A, b) { // Lower Upper Decomposition function ludcmp(A) { // A is a matrix that we want to decompose into Lower and Upper matrices. var d = true var n = A.length var idx = new Array(n) // Output vector with row permutations from partial pivoting var vv = new Array(n) // Scaling information for (var i=0; i max) max = temp } if (max == 0) return // Singular Matrix! vv[i] = 1 / max // Scaling } var Acpy = new Array(n) for (var i=0; i= max) { max = temp jmax = j } } if (i <= jmax) { for (var j=0; j -1) for (var j=ii; j=0; i--) { var sum = b[i] for (var j=i+1; j