2018-10-10 18:03:03 -04:00
|
|
|
|
---
|
|
|
|
|
id: 5a23c84252665b21eecc7e77
|
2020-12-16 00:37:30 -07:00
|
|
|
|
title: 高斯消除
|
2018-10-10 18:03:03 -04:00
|
|
|
|
challengeType: 5
|
|
|
|
|
videoUrl: ''
|
|
|
|
|
---
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --description--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
编写一个函数来解决\\(Ax = b \\)使用高斯消除然后向后替换。 \\(A \\)是\\(n \\次n \\)矩阵。此外,\\(x \\)和\\(b \\)是\\(n \\)乘以1个向量。要提高准确性,请使用部分旋转和缩放。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --hints--
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`gaussianElimination`应该是一个函数。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
```js
|
|
|
|
|
assert(typeof gaussianElimination == 'function');
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
`gaussianElimination("+JSON.stringify(tests[0][0])+","+JSON.stringify(tests[0][1])+")`应该返回一个数组。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
|
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
|
assert(
|
|
|
|
|
Array.isArray(
|
|
|
|
|
gaussianElimination(
|
|
|
|
|
[
|
|
|
|
|
[1, 1],
|
|
|
|
|
[1, -1]
|
|
|
|
|
],
|
|
|
|
|
[5, 1]
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`gaussianElimination("+JSON.stringify(tests[0][0])+","+JSON.stringify(tests[0][1])+")`应返回`"+JSON.stringify(results[0])+"` 。
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
assert.deepEqual(
|
|
|
|
|
gaussianElimination(
|
|
|
|
|
[
|
|
|
|
|
[1, 1],
|
|
|
|
|
[1, -1]
|
|
|
|
|
],
|
|
|
|
|
[5, 1]
|
|
|
|
|
),
|
|
|
|
|
[3, 2]
|
|
|
|
|
);
|
2018-10-10 18:03:03 -04:00
|
|
|
|
```
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`gaussianElimination("+JSON.stringify(tests[1][0])+","+JSON.stringify(tests[1][1])+")`应返回`"+JSON.stringify(results[1])+"` 。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
```js
|
|
|
|
|
assert.deepEqual(
|
|
|
|
|
gaussianElimination(
|
|
|
|
|
[
|
|
|
|
|
[2, 3],
|
|
|
|
|
[2, 1]
|
|
|
|
|
],
|
|
|
|
|
[8, 4]
|
|
|
|
|
),
|
|
|
|
|
[1, 2]
|
|
|
|
|
);
|
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`gaussianElimination("+JSON.stringify(tests[2][0])+","+JSON.stringify(tests[2][1])+")`应返回`"+JSON.stringify(results[2])+"` 。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
|
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
|
assert.deepEqual(
|
|
|
|
|
gaussianElimination(
|
|
|
|
|
[
|
|
|
|
|
[1, 3],
|
|
|
|
|
[5, -2]
|
|
|
|
|
],
|
|
|
|
|
[14, 19]
|
|
|
|
|
),
|
|
|
|
|
[5, 3]
|
|
|
|
|
);
|
2018-10-10 18:03:03 -04:00
|
|
|
|
```
|
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`gaussianElimination("+JSON.stringify(tests[3][0])+","+JSON.stringify(tests[3][1])+")`应返回`"+JSON.stringify(results[3])+"` 。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
```js
|
|
|
|
|
assert.deepEqual(
|
|
|
|
|
gaussianElimination(
|
|
|
|
|
[
|
|
|
|
|
[1, 1],
|
|
|
|
|
[5, -1]
|
|
|
|
|
],
|
|
|
|
|
[10, 14]
|
|
|
|
|
),
|
|
|
|
|
[4, 6]
|
|
|
|
|
);
|
|
|
|
|
```
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
`gaussianElimination("+JSON.stringify(tests[4][0])+","+JSON.stringify(tests[4][1])+")`应返回`"+JSON.stringify(results[4])+"` 。
|
2018-10-10 18:03:03 -04:00
|
|
|
|
|
|
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
|
assert.deepEqual(
|
|
|
|
|
gaussianElimination(
|
|
|
|
|
[
|
|
|
|
|
[1, 2, 3],
|
|
|
|
|
[4, 5, 6],
|
|
|
|
|
[7, 8, 8]
|
|
|
|
|
],
|
|
|
|
|
[6, 15, 23]
|
|
|
|
|
),
|
|
|
|
|
[1, 1, 1]
|
|
|
|
|
);
|
2018-10-10 18:03:03 -04:00
|
|
|
|
```
|
2020-08-13 17:24:35 +02:00
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
|
# --solutions--
|
|
|
|
|
|