大家好,又见面了,我是你们的朋友全栈君。
点除与矩阵除法:
在书写程序的时候,点乘和矩阵乘法写错的时候再进行程序调适的
时候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
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149233.html原文链接:https://javaforall.cn