当前位置: 首页 > news >正文

齐次线性方程组最小二乘解

非齐次线性方程组:常数项不全为0的线性方程组。

Au=b

最小二乘解:

u=(A^{T}A)^{-1}A^{T}b


齐次线性方程组:常数项全为0的线性方程组。

Au=0

当齐次线性方程组没有严格零解时,我们需要通过最小二乘法寻找近似解,即找到非零向量u,使得残差平方和\left \| Au \right \|^{2}最小。

直接最小化\left \| Au \right \|^{2}会导致零解,但零解无实际意义,因此需要添加归一化约束排除零解,最常用的约束是\left \| u \right \|^{2}=1,即u^{T}u=1。齐次线性方程组的解不是唯一的,可以按比例缩放,任何ku仍是解,\left \| u \right \|^{2}=1是标准化了解的比例。

此时最小化\left \| Au \right \|^{2}问题转化为带约束的最小二乘优化:

\left\{\begin{matrix} min_{u}\left \| Au \right \|^{2}\\ s.t. \, \, \, u^{T}u=1 \end{matrix}\right.

通过拉格朗日乘子法将有约束问题转为无约束问题,构造拉格朗日函数:

        L(u,\lambda )=\left \| Au \right \|^{2}-\lambda (u^{T}u-1)\\ =(Au)^{T}(Au)-\lambda (u^{T}u-1)\\ =u^{T}A^{T}Au--\lambda (u^{T}u-1)

求极值即对u求偏导为0(利用矩阵性质\frac{\partial x^{T}Ax}{\partial x}=(A^{T}+A)x):

        \frac{\partial L(u,\lambda )}{\partial u}=2A^{T}Au-2\lambda u=0\\ \\A^{T}Au=\lambda u

结合目标函数 \left \| Au \right \|^{2}=u^{T}A^{T}Au=\lambda u^{T}u=\lambda,最小化\left \| Au \right \|^{2}即最小化\lambda

所以齐次线性方程组Au=0的最小二乘解u是 A^{T}A的最小特征值对应的特征向量。

        

示例代码:     

x = np.linspace(0, 99, 100)
y = 2 * x + 6.5 + np.random.randn(100)
plt.close('all')
plt.figure()
plt.plot(x, y)B = np.column_stack([x, y, np.ones(100)])
eigenvalues, eigenvectors = np.linalg.eig(np.dot(B.T, B))
idx = np.argmin(eigenvalues)
u = eigenvectors[:, idx]
a = u[0]
b = u[1]
c = u[2]
print("k={}, b={}".format(-a / b, -c / b))
y_pred = -a / b * x + (-c / b)
plt.plot(x, y_pred)

    

        

http://www.lryc.cn/news/627040.html

相关文章:

  • 接美国血统(中序、后序→前序)
  • 【网络运维】Linux:正则表达式
  • 虚幻引擎目录结构
  • AGV小车cad+三维图+设计说明书
  • C++ 力扣 438.找到字符串中所有字母异位词 题解 优选算法 滑动窗口 每日一题
  • Java 线程池ThreadPoolExecutor源码解读
  • 服务器内存条不识别及服务器内存位置图
  • linux的sysctl系统以及systemd系统。
  • 【网络运维】Linux 文本处理利器:sed 命令
  • MYSQL-增删查改CRUD
  • uni-app跨端开发最后一公里:详解应用上架各大应用商店全流程
  • 生产级的雪花算法
  • 自动驾驶导航信号使用方式调研
  • C语言实现全排列(非递归法)(以猪八戒买包子的故事为例解释)
  • SpringBoot 整合 Langchain4j RAG 技术深度使用解析
  • imx6ull-驱动开发篇30——Linux 非阻塞IO实验
  • redis---常用数据类型及内部编码
  • 设计具有功能安全和网络安全能力的新型半导体芯片
  • 攻克PostgreSQL专家认证
  • Unicode 字符串转 UTF-8 编码算法剖析
  • JVM面试精选 20 题(终)
  • SQL count(*)与 sum 区别
  • 第三阶段数据-4:SqlHelper类,数据库删除,DataTable创建
  • STM32F4 内存管理介绍及应用
  • 建模工具Sparx EA的多视图协作教程
  • PyTorch - Developer Notes
  • 吴恩达 Machine Learning(Class 3)
  • 国产化PDF处理控件Spire.PDF教程:如何使用 Python 添加水印到 PDF
  • Linux命令大全-ps命令
  • Linux系统之部署nullboard任务管理工具