点除与矩阵除法

来源:互联网 发布:linux 进程启动时间 编辑:程序博客网 时间:2024/05/29 15:06

点除与矩阵除法: 
在书写程序的时候,点乘和矩阵乘法写错的时候再进行程序调适的 
时候MATLAB会返回错误说明。 
但是对于点除容易出现问题,下面以一个简单的例子说明这个问题:

比如我们要计算: 
A = [1,1]; 
B = [2,1]; 
C = A/B; 
上面的程序我们计算的是A与B的点除。但是由于疏忽而把点除“./” 
写为“/”这样结果是不同的,大家可以看看它们的结果:

>> A/B

ans =

    0.6000 
>> A./B

ans =

    0.5000    1.0000

它们的结果明显不同,而用“/”去代替“./”将在以后的计算中引 
起误差,程序语法错误很难调适。我们只能从期望的结果来检查程 
序。希望网友在书写向量或者矩阵的“点除”和“除法”运算的时 
候注意这一点。

下面我们看一下“A/B”的结果是怎么计算的(这里提供一段MATLAB 
文档):

/ Slash or matrix right division. B/A is roughly the same 
as B*inv(A). More precisely, B/A = (A'/B')'. See /.

/ Backslash or matrix left division. If A is a square matrix, 
A/B is roughly the same as inv(A)*B, except it is computed in 
a different way. If A is an n-by-n matrix and B is a column 
vector with n components, or a matrix with several such columns, 
then X = A/B is the solution to the equation AX = B computed by 
Gaussian elimination (see Algorithm for details). A warning 
message prints if A is badly scaled or nearly singular.

If A is an m-by-n matrix with m ~= n and B is a column vector 
with m components, or a matrix with several such columns, then 
X = A/B is the solution in the least squares sense to the under- 
or overdetermined system of equations AX = B. The effective rank, 
k, of A, is determined from the QR decomposition with pivoting 
(see "Algorithm" for details). A solution X is computed which has 
at most k nonzero components per column. If k < n, this is usually 
not the same solution as pinv(A)*B, which is the least squares 
solution with the smallest norm, ||X||.

也就是说A/B和A*pinv(B)输出的结果是一样的,如: 
>> A=[1,2,3];B=[1,2,1];A/B,A*pinv(B)

ans =

    1.3333


ans =

    1.3333


0 0
原创粉丝点击