【发布时间】:2013-07-15 23:07:37
【问题描述】:
我有一个 3x3 矩阵,例如 A=[3,2,4;2,0,2;4,2,3],我正在尝试以 A*[a;b;c] = [8*a;8*b;8*c] 的形式求解以下线性系统:
3 2 4 a 8a
2 0 2 * b = 8b
4 2 3 c 8c
好的,我有:
3a + 2b + 4c = 8a
2a + 2c = 8b
4a + 2b + 3c = 8c
未定,答案是[2;1;2] 事实上,如果我使用像this one这样的在线线性求解器,它会给我这样的答案:
{ a = r1, b = r1/2, c = r1 }
不过,我在 Matlab 中找不到这样做的方法。如果我将 B 定义为 B=[8*a;8*b;8*c] 并尝试 A\B,我得到:
2*b - 4*a + 4*c
2*a - 7*b + 2*c
4*a + 2*b - 4*c
如果我将 B 定义为 [8;8;8],我得到:
2
-3
2
正如我所料:
2
1
2
或者类似于上面在线求解器表单的答案。我究竟做错了什么?提前致谢!
【问题讨论】:
-
这个问题不属于SO,与编程无关。它确实属于一个基本的数学网站,在那里他们会解释这个问题不是未确定的,而是排名不足的。一个齐次的、有缺陷的 3x3 线性方程组。因此,有无限多的解决方案,其中一个是零解决方案。请注意,8 是原始矩阵的特征值。
-
你好@woodchips!也许我表达得很糟糕,但至少在我看来,这是一个编程问题。我承认,这是一个非常基本的问题,但我尝试阅读大量材料,但无法得到答案。事实上,这是一个排名不足的问题,我对此不好,但我实际上理解了数学部分。我只是无法使用 Matlab 来达到与手动或通过我提到的网站 (wims.unice.fr/wims/en_tool~linear~linsolver.en.html) 解决的结果相同的结果,并且希望得到一些帮助以了解原因。我需要它来显示一个向量 v1=[a;b;c] ,其中 A*v1 = 8*v1。答案是 [2;1;2].Tks
-
如果您确实了解数学,那么从命令“help eig”或“help null”开始。我认为您只了解方程组的基本概念,因此您实际上并不了解数学,因为您试图解决它。因此,这不是编程,而是数学问题。
-
再一次,用笔和纸,我得到了答案,在上述网站上也是如此。据我所知,在 Matlab 中我以错误的方式进行,前提是它没有以预期的形式生成解决方案,我认为这里有人会帮助我找到一种在 Matlab 中执行类似过程的方法,即找到向量 v1= [a;b;c] 表示 A*v1=8*v1,不同于 [0;0;0],例如 [2;1;2]。我也知道我可能无法很好地表达我的怀疑,但这是我能做的最好的。不过,无论如何,谢谢,我会尝试在其他地方寻求帮助。