如何解决由 * 完成的矩阵乘法和由组件手动完成的矩阵乘法之间的差异问题MATLAB
我对 Matlab 上矩阵乘法的准确性有疑问。我将用一个例子来解释这一点。 让
A=[0.1256,0.25789; 0.00018,0.68741];
B=[0.1578,0.24471; 0.12801,0.99701];
s=0;
while s<100
for i=1:2
for j=1:2
A(i,j)=A(i,j)+0.0125;
B(i,j)=B(i,j)+0.2470;
end
end
D=A*B;
d11=A(1,1)*B(1,1)+A(1,2)*B(1,2);
d12=A(1,2)+A(1,2)*B(2,2);
d21=A(2,1)+A(2,2);
d22=A(2,1)*B(2,2);
DD=[d11,d12; d21,d22];
s=s+1;
end
我有一个算法,其中矩阵 A 和 B 组件的值在每次迭代时都会升级。在这个算法中,还有一个公式涉及定义一个矩阵作为升级后的A和B的乘积。
我的问题是如果我在每次迭代时通过手动执行矩阵乘法的组件定义这些新矩阵组件,我会获得与我通过执行定义这个新矩阵的情况略有不同的结果矩阵乘法由 Matlab 由“*”完成,而不是由我的组件组成。 最终结果是:
DD=[71,8082684418998,73,0622074848998;
79,4048550050998,80,8251256858998]
and
D=[71,6322976788998 73,0622074848998
79,1787592580998 80,9710216918998]
这可能吗?提前致谢
解决方法
这与数值精度无关,但您的手动矩阵乘法是错误的。这将是正确的版本:
// Set the default option.
$(select,context).each(function (e) {
setTemplateResults($(this));
});
// Override select2 default work flow.
$(select,context).on('select2:select select2:unselect',function (evt) {
setTemplateResults($(this));
});
// Method.
function setTemplateResults(selector) {
let container = selector.siblings('span.select2').find('ul')
container.html('<li>' + Drupal.t('Select category(ies)') + '</li>');
}
但是您会发现在手动矩阵乘法中很容易出错,因此最好只执行 d11=A(1,1)*B(1,1)+A(1,2)*B(2,1);
d12=A(1,2)+A(1,2);
d21=A(2,1)+A(2,1);
d22=A(2,2)+A(2,2);
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。