递推最小二乘法——Matlab实现算法
递推最小二乘法主要用于求解超定方程的未知解实现代码见博客最下方算法实现利用递推最小二乘法,求解Ax=b的解A为m*x维的矩阵,元素服从独立同分布的正态分布b为m维的已知向量,元素也是服从独立同分布的正态分布设计思路首先设置好迭代所需要的初始参数将A中的10000个方程提取出来,依次做10000次迭代最后将每一次迭代的x的结果输出数值实验...
·
递推最小二乘法
主要用于求解超定方程的未知解
实现代码见博客最下方
算法实现
- 利用递推最小二乘法,求解Ax=b的解
- A为m*x维的矩阵,元素服从独立同分布的正态分布
- b为m维的已知向量,元素也是服从独立同分布的正态分布
设计思路
- 首先设置好迭代所需要的初始参数
- 将A中的10000个方程提取出来,依次做10000次迭代
- 最后将每一次迭代的x的结果输出
数值实验
- 递推最小二乘法未知解

结果分析
- 由上图可以得知,由于一开始的未知解是随机生成的,误差比较大,经过了10000次的迭代之后,开始震荡收敛于某个值。因为随机生成的矩阵的元素是正态分布的,因此10个未知解都大致收敛于0附近的值上。
代码实现
clear;
format long;
A = randn([10000 10]);
b = randn([10000 1]);
x = rand(10,1);
I = eye(10, 10);
P = (10^6) * I;
for k = 1:10000
Ak = A(k,:);
Q1 = P*(Ak');
Q2 = 1 + Ak * P * (Ak');
Q = Q1/Q2;
x = x + Q * (b(k) - Ak*x);
P = (I - Q*Ak)*P;
result2(:,k) = x;
result1(k) = k;
end
result1 = result1';
%result = [result1; result2];
plot(result1, result2);
「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!
更多推荐



所有评论(0)