无法理解 lusolve 的工作原理
Trouble understanding how lusolve works
我正在尝试使用 lusolve
function from mathjs 3.8.0 求解线性系统。但是,我在解释关于输入的 returned 结果时遇到了一些麻烦。
我将根据example from the docs进行解释:示例源开始
var m = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]];
var x = math.lusolve(m, [-1, -1, -1, -1]); // x = [[-1], [-0.5], [-1/3], [-0.25]]
到目前为止,一切顺利 - 这代表了系统
1a = -1
2b = -1
3c = -1
4d = -1
解决方案显然是
a = -1
b = -0.5
c = -1/3
d = -0.25
如原始示例的评论中所述。
实际的 return 值是一个数组,其值与输入向量的顺序相同,即 [[-1], [-0.5], [-1/3], [-0.25]]
.
但是,现在我尝试切换到输入向量:
var m = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 0, 4], [0, 0, 3, 0]];
var x = math.lusolve(m, [-1, -1, -1, -1]);
我认为这应该代表系统
1a = -1
2b = -1
3d = -1
4c = -1
如果是这样,解决方案应该是
a = -1
b = -0.5
c = -0.25
d = -1/3
或 [[-1], [-0.5], [-0.25], [-1/3]]
在 JavaScript.
然而,这个输入函数的实际return值是仍然是[[-1],[-0.5],[-1/3],[-0.25]]
,像使用原始输入向量排序。
这是为什么呢? returned 系数的顺序如何与输入向量的顺序匹配?
LU decomposition 方法 returns 上三角矩阵和下三角矩阵可以用来求解线性系统。这意味着矩阵将被重新排序以具有此形状(对角线下方及上方为零)。
对于您给出的示例,您可以看到这样做的效果:
math.lup([[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]])
请参阅 math.lusolve
来源了解更多具体信息。
还要注意矩阵如何映射到向量
http://mathjs.org/docs/datatypes/matrices.html#creation
在那里你会看到一个示例矩阵
math.matrix([[0, 1], [2, 3], [4, 5]]); /* Matrix of size [3, 2] */
这意味着每个内部向量都是一行而不是一列。即:
[[0, 1], [2, 3], [4, 5]]
写成
0 1
2 3
4 5
我正在尝试使用 lusolve
function from mathjs 3.8.0 求解线性系统。但是,我在解释关于输入的 returned 结果时遇到了一些麻烦。
我将根据example from the docs进行解释:示例源开始
var m = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]]; var x = math.lusolve(m, [-1, -1, -1, -1]); // x = [[-1], [-0.5], [-1/3], [-0.25]]
到目前为止,一切顺利 - 这代表了系统
1a = -1
2b = -1
3c = -1
4d = -1
解决方案显然是
a = -1
b = -0.5
c = -1/3
d = -0.25
如原始示例的评论中所述。
实际的 return 值是一个数组,其值与输入向量的顺序相同,即 [[-1], [-0.5], [-1/3], [-0.25]]
.
但是,现在我尝试切换到输入向量:
var m = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 0, 4], [0, 0, 3, 0]];
var x = math.lusolve(m, [-1, -1, -1, -1]);
我认为这应该代表系统
1a = -1
2b = -1
3d = -1
4c = -1
如果是这样,解决方案应该是
a = -1
b = -0.5
c = -0.25
d = -1/3
或 [[-1], [-0.5], [-0.25], [-1/3]]
在 JavaScript.
然而,这个输入函数的实际return值是仍然是[[-1],[-0.5],[-1/3],[-0.25]]
,像使用原始输入向量排序。
这是为什么呢? returned 系数的顺序如何与输入向量的顺序匹配?
LU decomposition 方法 returns 上三角矩阵和下三角矩阵可以用来求解线性系统。这意味着矩阵将被重新排序以具有此形状(对角线下方及上方为零)。
对于您给出的示例,您可以看到这样做的效果:
math.lup([[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]])
请参阅 math.lusolve
来源了解更多具体信息。
还要注意矩阵如何映射到向量
http://mathjs.org/docs/datatypes/matrices.html#creation
在那里你会看到一个示例矩阵
math.matrix([[0, 1], [2, 3], [4, 5]]); /* Matrix of size [3, 2] */
这意味着每个内部向量都是一行而不是一列。即:
[[0, 1], [2, 3], [4, 5]]
写成
0 1
2 3
4 5