我想解决以下系统Ax=b
,其中A
的维度为m
,n
(m>n)
,b
{{1 },m
和1
x
,n
。在Scilab下的解决方案之后,我发现我的向量x的一些组件是复杂的,我发现这很奇怪,因为我被告知向量1
必须是真实的。你怎么解释这个?
这是我的代码:
x
答案 0 :(得分:3)
行
A = 10 ^( - A / 10);
B = 10 ^(B / 10);
似乎是将数据从分贝转换回标准单位。 这与Matlab等同时在整个矢量或矩阵上完成。 您是否确认此时A和B不是复值?
X =(A '* A)\(A' * B);
这是求解方程组的标准正规方程,其方程式多于变量。它是(除其他外)最小二乘解x。 在SCILAB中,只需
即可获得相同的结果X = A \ B;
这一般与解决方案不同
X = PINV(A)* B;
你的方程组可能在数值上接近于单数(检查接近0的奇异值),或者可能没有解。
在SCILAB中,您可以使用
获得有关方程组的更多信息COND(A'* A)
或
[X,蝼] = linsolve(A,-b);
有关详细信息,请参见线性代数的SCILAB帮助部分。
答案 1 :(得分:1)
我不知道这些是什么:
A=10^(-A/10);
b=10^(b/10);
我要解决这个问题,要么通过A转置预测两侧并使用LU分解和反向替换来求解x(线性最小二乘)或奇异值分解(SVD)。