Javascript 难以理解lusolve的工作原理
我试图用from来解一个线性系统。但是,我在解释与输入相关的返回结果时遇到一些困难 我将根据以下内容进行解释:示例源开始 到目前为止,一切都很好——这代表了整个系统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 =
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:你说的“书写不正确”是什么意思?我故意以这种方式对输入向量重新排序,以检查我对输出的理解是否正确——显然不是这样。当然,在我的实际用例中,这些值不会被很好地四舍五入,也可能不会是对角的——正如我在下面所写的,它们是一个矩阵中的任意向量