20241230 基础数学-线性代数-(1)求解特征值(numpy, scipy)

news/2024/12/24 20:35:23/

所有代码实现,基于教程中的理论通过python实现出来的。效率不高,但有代码可以看。

由于scipy/sckitlearn/sparkx 底层的实现都被封装了(小白兔水平有限,fortran代码实在没看懂)这里的实现至少可以和理论公式对应的上。

1. 求特征值和特征向量

这是后面解线性方程的基础。解方程及拆分过程依赖eigVal,eigVec,很重要。

基本的解析法很好理解,所有的教程都有介绍。但是工程实现numpy等都是用的其他数值求解方法,这里实验了QR方法(水平有限,是最基础的QR),证明QR方法不难实现,并且有更多方法优化可以提高QR的数值稳定性和收敛效率(水平有限,placeholder,given旋转等,未研究)。

解析解析数值
eigpolynomial*symmetric matrix
lanrange multiples 
*symmetric matrix
QR Iteration
算法det(A-lambda*E)=0

解lambda的n次方程, 对应每个eigval[*]解齐次方程。
基于对称矩阵转标准二次型原理,A= (PN...P1) D (P1.T ... PN.T)

eigVec=(PN...P1)
eigVal=D
1. 将A=QR,Q为规范正交矩阵,R为A在这个矩阵上的投影系数。
2. AK=RQ, 迭代k次,
Q.T A= R,
A1= Q.T A Q; 
...
Q1.T A1= R1;
A2= Q1.T A1 Q1 = Q1.T Q.T A Q Q1
...
AK = (QK.T ... Q.T) A (Q ... QK )
//AK 就是特征值对角矩阵, Q...QK 就是特征向量
//AK为什么会收敛为对角矩阵,待研究//TODO

eigVec=(PN...P1)
eigVal=D
PYTHONE00_eigVal_by_polynomial.pyP00_lagrange_mul_resolver00.pyE01_eigVal_by_qr_mm.py

//*没有完全解决数值稳定性问题,devide0 等等;[URL]有大神写了QR算法文章,有更优的算法。

参考代码

​​​​​​参考代码: AITutorial02: AI初学,AI幼儿园练习



 

写在最后

* 线性代数理论及证明过程请参考教材。公式推理可以参考AI。感谢数学大师们。感谢《学兔兔》网。


http://www.ppmy.cn/news/1557824.html

相关文章

道路运输企业安全生产管理人员安全考核试题

道路运输企业安全生产管理人员安全考核试题 一、单选题 题干:在公交车行驶过程中,乘客王某因与驾驶员发生矛盾,遂殴打驾驶员并抢夺方向盘,造成其他乘客受轻微伤,依照《中华人民共和国刑法》的规定,王某触…

ElasticSearch 数据同步

1、同步调用 操作步骤: 管理系统新增酒店数据添加到数据库调用 ES 更新文档接口,同步数据库的数据到 ES 文档 流程图: 特点: 优点:实现简单,粗暴缺点:业务耦合度高 2、异步消息通知 操作步骤&#xf…

Unity3D仿星露谷物语开发5之角色单例模式

1、目的 使用单例模式创建角色对象,保证整个游戏中只有一个角色,并且让游戏对象具有全局可访问性。 2、流程 (1)创建SingletonMonobehaviour脚本 Assets下创建Scripts目录用于存放所有的脚本,再创建Misk子目录&…

Java的基础概念(一)

一、注释 **注意!:**注释内容不会参与编译和运行,仅仅是对代码的解释说明。 Java支持单行注释、多行注释、文档注释。 单行注释 以//开头 ,格式【 //注释内容 】 例子如下: 多行注释 格式【 / 注释内容 / 】 例…

【视觉SLAM:Panoptic FPN全景分割网络】

Panoptic FPN是一种全景分割(Panoptic Segmentation)的经典网络,最早由 Kirillov 等人在 2019 年提出。全景分割是一种统一的视觉任务,结合了实例分割(Instance Segmentation)和语义分割(Semant…

前端中的拖拽知识

概述 本文主要介绍前端中拖拽相关的知识以及如何在 vue3 工程里实现拖拽指令。 前端中的拖拽 前端中的拖拽功能是一种交互设计,允许用户通过鼠标或触摸操作移动页面上的元素到不同的位置。这一功能的实现涉及 HTML、CSS 和 JavaScript 的综合运用。 HTML元素拖拽…

RabbitMQ的工作模型

RabbitMQ 其实一共有六种工作模式:简单模式(Simple)、工作队列模式(Work Queue)、发布订阅模式(Publish/Subscribe)、路由模式(Routing)、通配符模式(Topic&a…

sqlilabs第三十关到第三十五关靶场攻略

第三十关 第三十关和二十九关差不多,将单引号换成双引号 查询表名,字段名,数据 ?id1&id-2" union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- ?id1&id-2" …