matlab矩阵点乘点除,点除与矩阵除法

2022-07-05 10:56:37 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

点除与矩阵除法:

在书写程序的时候,点乘和矩阵乘法写错的时候再进行程序调适的

时候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

0 人点赞