Javascript 难以理解lusolve的工作原理

Javascript 难以理解lusolve的工作原理,javascript,mathjs,Javascript,Mathjs,我试图用from来解一个线性系统。但是,我在解释与输入相关的返回结果时遇到一些困难 我将根据以下内容进行解释:示例源开始 到目前为止,一切都很好——这代表了整个系统 1a = -1 2b = -1 3c = -1 4d = -1 1a = -1 2b = -1 3d = -1 4c = -1 显然,解决办法是 a = -1 b = -0.5 c =

我试图用from来解一个线性系统。但是,我在解释与输入相关的返回结果时遇到一些困难

我将根据以下内容进行解释:示例源开始

到目前为止,一切都很好——这代表了整个系统

1a          = -1
   2b       = -1
      3c    = -1
         4d = -1
1a          = -1
   2b       = -1
         3d = -1
      4c    = -1
显然,解决办法是

a = -1
b = -0.5
c = -1/3
d = -0.25
如原始示例的注释所述。 实际返回值是一个数组,其值的顺序与输入向量的顺序相同,即
[[-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
      3c    = -1
         4d = -1
1a          = -1
   2b       = -1
         3d = -1
      4c    = -1
如果是这样,解决办法应该是

a = -1
b = -0.5
c = -0.25
d = -1/3
或者JavaScript中的
[-1]、-0.5]、-0.25]、-1/3]

然而,与原始输入向量排序一样,此输入的函数实际返回值仍然是
[-1]、-0.5]、-1/3]、-0.25]

为什么?返回系数的顺序与输入向量的顺序如何匹配?

方法返回上下三角矩阵,然后可用于求解线性系统。这意味着矩阵将被重新排序以具有此形状(对角线下和对角线上的零)

对于您给出的示例,您可以看到这样做的效果:

math.lup([[1,0,0,0],[0,2,0,0],[0,0,3,0],[0,0,0,4]])

有关更多具体信息,请参见来源

还要注意矩阵是如何映射到向量的

在这里,您将看到一个矩阵示例

数学矩阵([0,1],[2,3],[4,5]]);/*大小为[3,2]*/

这意味着每个内部向量都是一行而不是一列。即:

[[0,1],[2,3],[4,5]

写为

01

2 3

4.5方法返回上下三角矩阵,然后可用于求解线性系统。这意味着矩阵将被重新排序以具有此形状(对角线下和对角线上的零)

对于您给出的示例,您可以看到这样做的效果:

math.lup([[1,0,0,0],[0,2,0,0],[0,0,3,0],[0,0,0,4]])

有关更多具体信息,请参见来源

还要注意矩阵是如何映射到向量的

在这里,您将看到一个矩阵示例

数学矩阵([0,1],[2,3],[4,5]]);/*大小为[3,2]*/

这意味着每个内部向量都是一行而不是一列。即:

[[0,1],[2,3],[4,5]

写为

01

2 3


4.5

好的,但是我怎样才能回到可用的结果呢?i、 e.我可以应用于输入向量的一组系数?如果我用显式分解矩阵,我会得到一个似乎很有希望的置换向量,但这只适用于系数与原始输入向量排序相比只是重新排序的情况。该方法将始终以
[[a]、[b]、[c]、…]的形式给出结果。
a
b
。。。可以从该列向量中提取。你的用例是什么?我的用例是,我试图将3D场景中的一个向量分解为三个(非平行)向量的线性组合。特别是我的问题是,在我问题中所示的示例中,我不知道如何提取
a
b
c
d
的值,因为我不知道哪个是哪个。在我问题末尾展示的特定示例中,顺序似乎是
[[a]、[b]、[d]、[c]]
。请参阅我在问题下留下的注释。我想就是那个小小的打字错误让你困惑
lusolve
应始终按顺序返回解决方案,即
[[a]、[b]、[c]、…]
确定,但如何返回可用结果?i、 e.我可以应用于输入向量的一组系数?如果我用显式分解矩阵,我会得到一个似乎很有希望的置换向量,但这只适用于系数与原始输入向量排序相比只是重新排序的情况。该方法将始终以
[[a]、[b]、[c]、…]的形式给出结果。
a
b
。。。可以从该列向量中提取。你的用例是什么?我的用例是,我试图将3D场景中的一个向量分解为三个(非平行)向量的线性组合。特别是我的问题是,在我问题中所示的示例中,我不知道如何提取
a
b
c
d
的值,因为我不知道哪个是哪个。在我问题末尾展示的特定示例中,顺序似乎是
[[a]、[b]、[d]、[c]]
。请参阅我在问题下留下的注释。我想就是那个小小的打字错误让你困惑
lusolve
应始终按顺序返回解决方案,即
[[a]、[b]、[c]、…]
您给出的第二个示例编写不正确。给出的矩阵输入是
[[1,0,0,0],[0,2,0,0],[0,0,0,4],[0,0,3,0]
。如果随后使用
[-1,-1,-1]
进行求解,输入矩阵可以更改为
[[1,0,0,0],[0,2,0,0],[0,0,3,0],[0,0,0,4]
,使用相同的
[-1,-1,-1]
。因为是对角的,所以解决方案是
a=-1
b=-1/2
c=-1/3
d=-1/4
。你只犯了一个小错误:P@stringparser:你说的“书写不正确”是什么意思?我故意以这种方式对输入向量重新排序,以检查我对输出的理解是否正确——显然不是这样。当然,在我的实际用例中,这些值不会被很好地四舍五入,也可能不会是对角的——正如我在下面所写的,它们是一个矩阵中的任意向量