求解Scilab中的线性方程组

时间:2012-09-13 08:32:49

标签: math scilab

我想解决以下系统Ax=b,其中A的维度为mn (m>n)b {{1 },m1 xn。在Scilab下的解决方案之后,我发现我的向量x的一些组件是复杂的,我发现这很奇怪,因为我被告知向量1必须是真实的。你怎么解释这个?

这是我的代码:

x

2 个答案:

答案 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)。