西尔维斯特方程(Sylvester equation)官方求解有问题

news2024/10/5 17:12:49

西尔维斯特方程(Sylvester equation)官方求解有问题

  • 1. 西尔维斯特方程(Sylvester equation)
    • 1.1 以上所有矩阵都是2x2矩阵的演算形式
  • 2. 官方求解Sylvester方程-错误
    • 2.1 官方求解形式
    • 2.2 2x2矩阵举例
  • 3. Nicolas Andreff作者文章On-line Hand-Eye Calibration-错误
    • 3.1 2x2矩阵举例证明是错误的
  • 4. 求解Sylvester方程的正确形式
    • 4.1 2x2矩阵举例

1. 西尔维斯特方程(Sylvester equation)

如下拷贝的百度百科
西尔维斯特方程(Sylvester equation)是控制理论中的矩阵方程,形式如下:
A X + X B = C AX+XB=C AX+XB=C
其中A、B及C是已知的矩阵,问题是要找出符合条件的X。其中所有矩阵的系数都是复数。

为了要使上述方程成立,矩阵的行和列需要满足一定条件,A和B都要是方阵,大小分别是n和m,而X和C要是n行m列的矩阵,n和m也可以相等,四个矩阵都是大小相同的方阵。

西尔维斯特方程有唯一解X的充分必要条件是A和-B没有共同的特征值。

1.1 以上所有矩阵都是2x2矩阵的演算形式

A X + X B = [ a 1 a 2 a 3 a 4 ] [ x 1 x 2 x 3 x 4 ] + [ x 1 x 2 x 3 x 4 ] [ b 1 b 2 b 3 b 4 ] = [ ( a 1 + b 1 ) x 1 + b 3 x 2 + a 2 x 3 + 0 x 4 b 2 x 1 + ( a 1 + b 4 ) x 2 + 0 x 3 + a 2 x 4 a 3 x 1 + 0 x 2 + ( a 4 + b 1 ) x 3 + b 3 x 4 0 x 1 + a 3 x 2 + b 2 x 3 + ( a 4 + b 4 ) x 4 ] = [ c 1 c 2 c 3 c 4 ] AX+XB=\begin{bmatrix} a_1 & a_2\\ a_3 & a_4 \end{bmatrix}\begin{bmatrix} x_1 & x_2\\ x_3 & x_4 \end{bmatrix}+\begin{bmatrix} x_1 & x_2\\ x_3 & x_4 \end{bmatrix}\begin{bmatrix} b_1 & b_2\\ b_3 & b_4 \end{bmatrix}\\ =\begin{bmatrix} (a_1+b_1)x_1+b_3x_2+a_2x_3+0x_4 & b_2x_1+(a_1+b_4)x_2+0x_3+a_2x_4\\ a_3x_1+0x_2+(a_4+b_1)x_3+b_3x_4 & 0x_1+a_3x_2+b_2x_3+(a_4+b_4)x_4 \end{bmatrix} =\begin{bmatrix} c_1 & c_2\\ c_3 & c_4 \end{bmatrix} AX+XB=[a1a3a2a4][x1x3x2x4]+[x1x3x2x4][b1b3b2b4]=[(a1+b1)x1+b3x2+a2x3+0x4a3x1+0x2+(a4+b1)x3+b3x4b2x1+(a1+b4)x2+0x3+a2x40x1+a3x2+b2x3+(a4+b4)x4]=[c1c3c2c4]
将以上算式推导中的C矩阵如下展开:
[ c 1 c 2 c 3 c 4 ] ⇒ [ c 1 c 2 c 3 c 4 ] \begin{bmatrix} c_1 & c_2\\ c_3 & c_4 \end{bmatrix}\Rightarrow\begin{bmatrix} c_1\\ c_2\\ c_3\\ c_4 \end{bmatrix} [c1c3c2c4] c1c2c3c4
则以上算式推导,可演变为如下形式:
[ a 1 + b 1 b 3 a 2 0 b 2 a 1 + b 4 0 a 2 a 3 0 a 4 + b 1 b 3 0 a 3 b 2 a 4 + b 4 ] [ x 1 x 2 x 3 x 4 ] = [ c 1 c 2 c 3 c 4 ] \begin{bmatrix} a_1+b_1 & b_3 & a_2 & 0\\ b_2 & a_1+b_4 & 0 & a_2\\ a_3 & 0 & a_4+b_1& b_3\\ 0 & a_3 & b_2 & a_4+b_4 \end{bmatrix}\begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4 \end{bmatrix}=\begin{bmatrix} c_1\\ c_2\\ c_3\\ c_4 \end{bmatrix} a1+b1b2a30b3a1+b40a3a20a4+b1b20a2b3a4+b4 x1x2x3x4 = c1c2c3c4

2. 官方求解Sylvester方程-错误

2.1 官方求解形式

( I ⨂ A + B T ⨂ I ) v e c ( X ) = v e c ( C ) (I\bigotimes A + B^T\bigotimes I)vec(X) = vec(C) (IA+BTI)vec(X)=vec(C)

2.2 2x2矩阵举例

( I ⨂ A + B T ⨂ I ) v e c ( X ) = ( [ 1 0 0 1 ] ⨂ [ a 1 a 2 a 3 a 4 ] + [ b 1 b 3 b 2 b 4 ] ⨂ [ 1 0 0 1 ] ) v e c ( X ) = ( [ a 1 a 2 0 0 a 3 a 4 0 0 0 0 a 1 a 2 0 0 a 3 a 4 ] + [ b 1 0 b 3 0 0 b 1 0 b 3 b 2 0 b 4 0 0 b 2 0 b 4 ] ) [ x 1 x 2 x 3 x 4 ] = [ a 1 + b 1 a 2 b 3 0 a 3 a 4 + b 1 0 b 3 b 2 0 a 1 + b 4 a 2 0 b 2 a 3 a 4 + b 4 ] [ x 1 x 2 x 3 x 4 ] (I \bigotimes A + B^T \bigotimes I )vec(X)= (\begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix} \bigotimes \begin{bmatrix} a_1 & a_2\\ a_3 & a_4 \end{bmatrix}+ \begin{bmatrix} b_1 & b_3\\ b_2 & b_4 \end{bmatrix} \bigotimes \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix})vec(X) \\ =(\begin{bmatrix} a_1 & a_2 & 0 & 0\\ a_3 & a_4 & 0 & 0\\ 0 & 0 & a_1& a_2\\ 0 & 0 & a_3 & a_4 \end{bmatrix} + \begin{bmatrix} b_1 & 0 & b_3 & 0\\ 0 & b_1 & 0 & b_3\\ b_2 & 0 & b_4& 0\\ 0 & b_2 & 0 & b_4 \end{bmatrix}) \begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4 \end{bmatrix} \\ =\begin{bmatrix} a_1+b_1 & a_2 & b_3 & 0\\ a_3 & a_4+b_1 & 0 & b_3\\ b_2 & 0 & a_1+b_4& a_2\\ 0 & b_2 & a_3 & a_4+b_4 \end{bmatrix}\begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4 \end{bmatrix} (IA+BTI)vec(X)=([1001][a1a3a2a4]+[b1b2b3b4][1001])vec(X)=( a1a300a2a40000a1a300a2a4 + b10b200b10b2b30b400b30b4 ) x1x2x3x4 = a1+b1a3b20a2a4+b10b2b30a1+b4a30b3a2a4+b4 x1x2x3x4

最后矩阵计算形式变为
[ a 1 + b 1 a 2 b 3 0 a 3 a 4 + b 1 0 b 3 b 2 0 a 1 + b 4 a 2 0 b 2 a 3 a 4 + b 4 ] [ x 1 x 2 x 3 x 4 ] = [ c 1 c 2 c 3 c 4 ] \begin{bmatrix} a_1+b_1 & a_2 & b_3 & 0\\ a_3 & a_4+b_1 & 0 & b_3\\ b_2 & 0 & a_1+b_4& a_2\\ 0 & b_2 & a_3 & a_4+b_4 \end{bmatrix}\begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4 \end{bmatrix}=\begin{bmatrix} c_1\\ c_2\\ c_3\\ c_4 \end{bmatrix} a1+b1a3b20a2a4+b10b2b30a1+b4a30b3a2a4+b4 x1x2x3x4 = c1c2c3c4
和1.1章节正常矩阵展开,相比较,可以看出:
官方求解形式是错误的!!!

3. Nicolas Andreff作者文章On-line Hand-Eye Calibration-错误

Nicolas Andreff作者在文章《On-line Hand-Eye Calibration》中提到Sylvester方程,修改为线性系统方程,也是错误的。具体形式如下:
在这里插入图片描述

3.1 2x2矩阵举例证明是错误的

4. 求解Sylvester方程的正确形式

( A ⨂ I + I ⨂ B T ) v e c ( X ) = v e c ( C ) (A\bigotimes I + I\bigotimes B^T)vec(X) = vec(C) (AI+IBT)vec(X)=vec(C)

4.1 2x2矩阵举例

( A ⨂ I + I ⨂ B T ) v e c ( X ) = ( [ a 1 a 2 a 3 a 4 ] ⨂ [ 1 0 0 1 ] + [ 1 0 0 1 ] ⨂ [ b 1 b 3 b 2 b 4 ] ) v e c ( X ) = ( [ a 1 0 a 2 0 0 a 1 0 a 2 a 3 0 a 4 0 0 a 3 0 a 4 ] + [ b 1 b 3 0 0 b 2 b 4 0 0 0 0 b 1 b 3 0 0 b 2 b 4 ] ) [ x 1 x 2 x 3 x 4 ] = [ a 1 + b 1 b 3 a 2 0 b 2 a 1 + b 4 0 a 2 a 3 0 a 4 + b 1 b 3 0 a 3 b 2 a 4 + b 4 ] [ x 1 x 2 x 3 x 4 ] = [ c 1 c 2 c 3 c 4 ] (A\bigotimes I + I\bigotimes B^T)vec(X)= (\begin{bmatrix} a_1 & a_2\\ a_3 & a_4 \end{bmatrix} \bigotimes \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}+ \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix} \bigotimes \begin{bmatrix} b_1 & b_3\\ b_2 & b_4 \end{bmatrix})vec(X) \\ =(\begin{bmatrix} a_1 & 0 & a_2 & 0\\ 0 & a_1 & 0 & a_2\\ a_3 & 0 & a_4& 0\\ 0 & a_3 & 0 & a_4 \end{bmatrix} + \begin{bmatrix} b_1 & b_3 & 0 & 0\\ b_2 & b_4 & 0 & 0\\ 0 & 0 & b_1& b_3\\ 0 & 0 & b_2 & b_4 \end{bmatrix}) \begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4 \end{bmatrix} \\ =\begin{bmatrix} a_1+b_1 & b_3 & a_2 & 0\\ b_2 & a_1+b_4 & 0 & a_2\\ a_3 & 0 & a_4+b_1& b_3\\ 0 & a_3 & b_2 & a_4+b_4 \end{bmatrix}\begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4 \end{bmatrix}=\begin{bmatrix} c_1\\ c_2\\ c_3\\ c_4 \end{bmatrix} (AI+IBT)vec(X)=([a1a3a2a4][1001]+[1001][b1b2b3b4])vec(X)=( a10a300a10a3a20a400a20a4 + b1b200b3b40000b1b200b3b4 ) x1x2x3x4 = a1+b1b2a30b3a1+b40a3a20a4+b1b20a2b3a4+b4 x1x2x3x4 = c1c2c3c4
和1.1章节的最后结果是一致的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PostgreSQL数据库的json操作

1.操作符 select json字段::json->key值 from order -- 对象域 select json字段::json->>key值 from order -- 文本 select json字段::json#>{key值} from order -- 对象域 select json字段::json#>>{key值} from order -- 文本对象域表示还能继续操作&#…

微服务智慧工地信息化解决方案(IOT云平台源码)

智慧工地是指应用智能技术和互联网手段对施工现场进行管理和监控的一种工地管理模式。它利用传感器、监控摄像头、人工智能、大数据等技术,实现对施工现场的实时监测、数据分析和智能决策,以提高工地的安全性、效率和质量。 智慧工地平台是一种智慧型、系…

听GPT 讲Rust源代码--library/alloc

File: rust/library/alloc/benches/slice.rs 在Rust源代码中,rust/library/alloc/benches/slice.rs文件的作用是对&[T]类型(切片类型)进行性能基准测试。该文件包含了对切片类型的一系列操作的基准测试,例如切片迭代、切片排序…

透明OLED屏批发:从价格到产品选择的全方位指南

随着科技的进步,透明OLED屏作为一种创新的显示技术,在各个领域都展现出巨大的应用潜力。对于希望在商业或个人应用中采用透明OLED屏的企业或个人,批发购买可能是一个经济高效的选择。尼伽小编将从本文将为您详细解析透明OLED屏批发的各个环节…

x-cmd pkg | bit - 实验性的现代化 git CLI

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 bit,由 Chris Walz 于 2020 年使用 Go 语言开发,提供直观的命令行补全提示和建立在 git 命令之上的封装命令,旨在建立完全兼容 git 命令的现代化 CLI。 首次用户 使用 x bit 即可自…

EasyCode代码生成器插件

EasyCode文档:https://gitee.com/makejava/EasyCode/wikis/pages?sort_id725187&doc_id166248 EasyCode 优点 可以生成controller层的代码。可以一次性生成多张表的各层代码。可以自定义模板。 EasyCode使用 在插件市场下载easy code插件 在idea中进行数据…

MySQL基础学习: linux系统mysql 密码插件 validate_password安装

1、没有安装mysql密码插件,执行命令:SHOW VARIABLES LIKE ‘validate_password%’; 2、安装mysql密码插件,执行命令:install plugin validate_password soname ‘validate_password.so’; 3、再次执行:SHOW VARIABLE…

Docker 实践之旅:项目迁移与高效部署

目录 1 引言2 初识 Docker2.1 Docker简介2.2 Docker优势 3 传统部署流程的问题4 学习 Docker 的过程5 Docker 解决项目部署的实践5.1 迁移关键服务5.2 定制化打包与快速部署 6 项目实践收获6.1 简化了部署流程6.2 节约了部署成本 7 克服难点和经验分享7.1 版本兼容性问题7.2 网…

Python列表数据处理全攻略(七):常用内置方法轻松掌握

引言 亲爱的读者,你好!Python的列表在数据结构中占据着核心地位,对于学习与应用Python来说,它无疑是我们不可或缺的得力助手。它不仅能帮助我们有效地存储和整理数据,还为我们提供了众多内置方法,让数据处…

基于RetinaFace+Jetson Nano的智能门锁系统——第二篇(配置环境)

文章目录 设备一、安装远程登录终端Xshell1.1下载Xshell1.2新建回话1.3查询ip地址1.4启动连接 二、安装远程文件管理WinScp2.1下载WinScp2.2连接Jetson Nano2.3连接成功 三、安装远程桌面VNC Viewer3.1下载VNC Viewer3.2在Jetson Nano安装VNC Viewer3.3设置VINO登录选项3.4将网…

Git原理与使用(二):分支管理

Git原理与使用[二]:分支管理 一.分支的基本操作1.理解分支2.创建分支3.切换分支4.删除分支5.补充:创建并切换分支 二.合并分支1.合并分支的基础操作2.分支冲突 三.分支管理策略1.Fast-forward模式2.--no--ff(即:禁用Fast-forward模式)3.分支策略 四.创建临时分支修复bug1.git s…

C#核心学习(面向对象)

目录 封装构造函数基本概念:写法:特殊写法注意: 析构函数基本语法 垃圾回收机制(GC,Garbage Collector)回收算法C# 中内存回收原理自动回收步骤注意 手动回收: 成员属性基本概念基本语法注意&am…

什么是软件测试?这是我听过最通俗易懂的解释

很多人总是说我要学习软件测试,因为他可以拿到一个不错的薪资。 但是当我问他你知道什么是软件测试吗?这个时候,他总会愣住了,一脸不屑的表情说着,不就是找bug,给软件找问题,找茬吗&#xff1f…

超好用的IDEA插件!免费

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件:Api…

Windows电脑引导损坏?按照这个教程能修复

前言 Windows系统的引导一般情况下是不会坏的,小伙伴们可以不用担心。发布这个帖子是因为要给接下来的文章做点铺垫。 关注小白很久的小伙伴应该都知道,小白的文章都讲得比较细。而且文章与文章之间的关联度其实还是蛮高的。在文章中,你会遇…

工程(十六)——自己数据集跑Fast_livo

一、基础环境 Ubuntu20.04 ROS noetic PCL 1.8 Eigen 3.3.4 Sophus git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout a621ff mkdir build && cd build && cmake .. make sudo make install 下面两个直接把包下载下来一起编译…

堆排序(C语言版)

一.堆排序 堆排序即利用堆的思想来进行排序,总共分为两个步骤: 1. 建堆 升序:建大堆 降序:建小堆 2. 利用堆删除思想来进行排序 1.1.利用上下调整法实现堆排序 第一步:建堆 好了,每次建堆都要问自己…

STM32G030F6P6读写flash失败问题(HAL)

STM32G030是F0系列的升级版,其在性能上比F0要好很多,具体G0参数如下: 最开始做项目选用的单片机是STM32F030F4P6,但是在后期使用中发现,我的FLASH(16K)不够用了,就选择了STM32G030F6…

计算机网络——基础知识汇总(八)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

每日算法打卡:递归实现排列型枚举 day 2

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例:输出样例: 题目分析示例代码 原题链接 94. 递归实现排列型枚举 题目难度:简单 题目描述 把 1 ∼ n 1 \sim n 1∼n 这 n n n 个整数排成一行后随机打乱顺序,输出…