如何计算这种矩阵:
A = [ 1 3 4
4 5 7
10 8 6]
X= [x1
x2
x3]
Y= A*X=0
我们可以将其改为:
1x1+3x2+4x3=0
4x1+5x2+7x3=0
10x1+8x2+6x3=0
如何在Matlab中进行消除以获得x1,x2和x3 ??
答案 0 :(得分:3)
我不是100%肯定你在问什么。 我想你想要一种解决SLE的方法。这方面很少,我个人觉得更直接的是
x=A\b
在你的情况下:
b=zeros(3,1)
请注意,您不需要调用X的向量,因为MATLAB会自动将A中的值视为不同变量的系数
答案 1 :(得分:0)
我的猜测是你为这个问题创建了一个例子,但没有真正检查它是否会产生所需的结果。对于Ax = 0具有非零解,行列式det(A)
必须为零。由于A
矩阵的决定因素为40
,唯一的解决方案是x = [0; 0; 0]
。
现在,假设您选择了一个更好的示例,例如:
A = [1 2 3;2 4 6;1 1 1];
现在,det(A) = 0
。
使用常规linsolve
,您仍然只能获得x = [0; 0; 0]
作为解决方案。然而,显然(无限地)有许多其他非平凡的解决方案。您可以使用null
来实现这样的解决方案:
x = null(A)
x =
0.4082
-0.8165
0.4082
A*x
ans =
1.0e-014 *
0.1110
0.2220
0.0944
实际上为零(不准确是由于浮点精度)。
您还可以使用奇异值分解svd
来获得相同的结果:
[U S V] = svd(A);
x = V(:,end)
x =
0.4082
-0.8165
0.4082
A*x
ans =
1.0e-014 *
0.1110
0.2220
0.0944