matlab - 左矩阵除以向量
问题描述
Matlab 如何明确地求解最右边的c1
方程((x-1)\y)
?
我很清楚当您使用矩阵时会发生什么,例如 A\b(其中 A 是矩阵,b 是列向量),但是当您在两个相等行的向量上使用反斜杠时会发生什么?
问题:
x = (1:3)';
y = ones(3,1);
c1 = ((x-1)\y) % why does this =0.6?
解决方案
你在做[0;1;2]\[1;1;1]
。本质x=0.6
上是最小二乘解
[0;1;2]*x=[1;1;1]
您从文档中获得的案例如下:
如果 A 是 m ~= n 的 m×n 矩形矩阵,并且 B 是 m 行的矩阵,则A\B 返回方程组 A*x= B 的最小二乘解。
(具体来说,你有m=3, n=1
)。
A = (1:3).' - 1; % = [0;1;2]
B = ones(3,1); % = [1;1;1]
x = A\B; % = 0.6
代数上,很容易看出这是最小二乘最小化的解决方案
% Calculate least squares
leastSquares = sum( ((A*x) - B).^2 )
= sum( ([0;1;2]*x - [1;1;1]).^2 )
= sum( [-1; x-1; 2x-1].^2 )
= 1 + (x-1)^2 + (2x-1)^2
= 1 + x^2 - 2*x + 1 + 4*x^2 - 4*x + 1
= 5*x^2 - 6*x + 3
% Minimum least squares -> derivative = 0
d(leastSquares)/dx = 10*x - 6 = 0
10*x = 6
x = 0.6
我毫不怀疑 MATLAB 使用更复杂的算法得出相同的结论,但这以相当简单的方式展示了数学。
您可以通过测试以下各种值来通过实验看到没有更好的解决方案x
...... 0.6 给出了最小的错误:
sum( ([0;1;2]*x - [1;1;1]).^2 )
推荐阅读
- php - Array($row['image']) 在 $pdf->image 中不可用
- asp.net - 异常“当前上下文中不存在名称‘BindItem’”
- java - @RequestMapping 如何在 Spring Boot 应用程序中工作
- sql - 从表中删除行,保留最近的行
- node.js - 如何将 Shopify 价格规则 ID 传递给 Shopify 折扣创建
- javascript - 在 Yii2 中通过 JavaScript 更改值
- javascript - 为什么参数'props'隐式具有'any'类型?
- ios - nativescript-imagepicker: IOS: 选择的图片大小与原图不同[已解决]
- javascript - TS - 使用来自第三方类型的接口
- swagger - 在 Webspehre Liberty Profile 上调试 SWAGGER