Z3:执行矩阵运算

2024-05-01

我的情况

我正在开展一个项目,需要:

  • 证明正确性3D 矩阵变换 http://rodrigo-silveira.com/3d-programming-transformation-matrix-tutorial/#.UU65YicWsYZ涉及矩阵运算的公式
  • 找到具有未知矩阵条目的值的模型。

我的问题

  • 使用矩阵运算表达公式的最佳方式是什么 他们可以通过以下方式解决z3? (使用的方式在Z3Py 的数独 例子 http://rise4fun.com/z3py/tutorialcontent/guide#h210不是 非常优雅,似乎不适合更复杂的矩阵 运营。)

谢谢。 - 如果有任何不清楚的地方,请留下问题评论。


Z3 不支持这样的矩阵,因此对它们进行编码的最佳方法是对它们表示的公式进行编码。这与数独示例的编码方式大致相同。这是一个简单的示例,例如使用 2x2 实数矩阵(Z3py 链接:http://rise4fun.com/Z3Py/MYnB http://rise4fun.com/Z3Py/MYnB ):

# nonlinear version, constants a_ij, b_i are variables
# x_1, x_2, a_11, a_12, a_21, a_22, b_1, b_2 = Reals('x_1 x_2 a_11 a_12 a_21 a_22 b_1 b_2')

# linear version (all numbers are defined values)
x_1, x_2 = Reals('x_1 x_2')

# A matrix
a_11 = 1
a_12 = 2
a_21 = 3
a_22 = 5

# b-vector
b_1 = 7
b_2 = 11

newx_1 = a_11 * x_1 + a_12 * x_2 + b_1
newx_2 = a_21 * x_1 + a_22 * x_2 + b_2

print newx_1
print newx_2

# solve using model generation
s = Solver()
s.add(newx_1 == 0) # pointers to equations
s.add(newx_2 == 5)
print s.check()
print s.model()

# solve using "solve"
solve(And(newx_1 == 0, newx_2 == 5))

要让 Z3 求解未知矩阵实体,请取消注释第二行(带有 a_11、a_12 等的符号名称),在第五行注释 x_1、x_2 的其他符号定义,并注释对 a_11 的具体赋值= 1 等。然后,您将通过找到对这些变量的满意分配来让 Z3 求解任何未知数,但请注意,您可能需要为您的目的启用模型完成(例如,如果您需要对所有未知矩阵参数进行分配)或 x_i 变量,请参见,例如:Z3 4.0:获取完整模型 https://stackoverflow.com/questions/11115004/z3-4-0-get-complete-model ).

但是,根据您共享的链接,您有兴趣使用正弦曲线(旋转)执行操作,这些操作通常是超越的,而 Z3 目前不支持超越(一般指数等)。这对您来说将是具有挑战性的部分,例如,证明操作有效的任何旋转角度选择,甚至只是对旋转进行编码。缩放和平移不应该太难编码。

另请参阅以下答案,了解如何对线性微分方程进行编码,线性微分方程是 x' = Ax 形式的方程,其中 A 是 n * n 矩阵,x 是 n 维向量:将一阶微分方程编码为一阶公式 https://stackoverflow.com/questions/11927114/encoding-of-first-order-differential-equation-as-first-order-formula/11936271#11936271

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Z3:执行矩阵运算 的相关文章

  • 指向二维数组的指针和手动内存管理 - C

    我认为用纯 C 语言构建一个库来处理各种矩阵计算将是一个很好的挑战 现在 尽管我在 Objective C 和 Cocoa 方面有一些很好的经验 但我对 C 的了解正是我所需要的与 Objective C 一起工作 仅此而已 例如 我熟悉
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • THREE.JS,忽略父级的轮换

    我试图使子对象跟随父级位置并表现得像一个普通的子对象 但是我希望它保持其旋转不变 在不影响性能的情况下 最好的方法是什么 我的CPU预算很紧张 已经运行了2个工作线程并且有很多对象 是否有设置只允许孩子的位置受到影响 同样重要的是 当父级旋
  • python 中的基本矩阵转置

    我尝试了 python 中矩阵转置的最基本方法 但是 我没有得到所需的结果 接下来是代码 A 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 print A def TS A B A for i in range len A
  • 使用 sapply 的列表和矩阵

    我有一个也许是基本的问题 我在网上搜索过 我在读取文件时遇到问题 尽管如此 我还是按照 Konrad的建议设法读取了我的文件 我很欣赏这一点 How to get R to read in files from multiple subdi
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • Python 将列表追加到列表中

    我正在尝试编写一个通过矩阵的函数 当满足条件时 它会记住该位置 我从一个空列表开始 locations 当函数遍历行时 我使用以下方法附加坐标 locations append x locations append y 函数末尾的列表如下所
  • 如何获取 Z3 上下文的所有可用配置设置的列表?

    net API 具有以下 Context 构造函数 Context Dictionary lt string string gt settings 如何获取所有可能设置的列表 具体来说 我对如何要求 Z3 生成 unsat 核心感兴趣 即相
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • 如何使用合并或替换来更新 R 中具有多列的表

    我想做一些与这个问题非常相似的事情 如何使用 merge 更新 R 中的表 https stackoverflow com questions 3190118 how to use merge to update a table in r
  • 将 3D 矩阵转换为级联 2D 矩阵

    我有一个3Dpython中的矩阵如下 import numpy as np a np ones 2 2 3 a 0 0 0 2 a 0 0 1 3 a 0 0 2 4 我想转换这个3D矩阵到一组2D矩阵 我努力了np reshape但这并没
  • z3 中的列表串联

    有没有办法在 z3 中连接两个列表 类似于 ML 中的 运算符 我正在考虑自己定义它 但我不认为 z3 支持递归函数定义 即 define fun concat List l1 List l2 List ite isNil l1 l2 co
  • CSR 矩阵 - 矩阵乘法

    我有两个方阵A and B 我必须转换B to CSR Format并确定产品C A B csr C 我在网上找到了很多关于CSR 矩阵 向量乘法 http www mathcs emory edu cheung Courses 561 S
  • 2D 矩阵上的 Numpy where()

    我有一个像这样的矩阵 t np array 1 2 3 foo 2 3 4 bar 5 6 7 hello 8 9 1 bar 我想获取行包含字符串 bar 的索引 在一维数组中 rows np where t bar 应该给我索引 0 3
  • Coq:承认断言

    有没有办法在 Coq 中承认断言 假设我有一个这样的定理 Theorem test forall m n nat m n n m Proof intros n m assert H1 m m n m S n Admitted Abort 上
  • CUDA 添加矩阵的行

    我试图将 4800x9600 矩阵的行加在一起 得到一个 1x9600 的矩阵 我所做的是将 4800x9600 分成 9 600 个矩阵 每个矩阵长度为 4800 然后我对 4800 个元素进行缩减 问题是 这真的很慢 有人有什么建议吗

随机推荐

  • PyGTK:带线程的 gobject.idle_add() 和 timeout_add()

    是否有任何明确的文档说明idle add timeout add 和 或它们安装的实际回调是否需要锁 任何类型 def work args 1 gtk gdk threads enter needed self ui change some
  • 对于我的智力来说,太多的 order by、max、子查询

    我似乎无法解决这个问题 我确信它需要子查询 但我没有选择 我的大脑无法处理这个或其他事情 我需要帮助 小介绍 我有一个投注赔率网站 每 15 分钟 我都会从不同的博彩公司导入特定赛事的最新赔率 赢 平 输 或 1 X 2 赔率表的每一行都有
  • 如何在 SQL Server 中调试合并?

    我正在尝试学习如何使用 MERGE 运算符 以下代码可以正确编译 ALTER PROCEDURE moto procPM UpdateLines LineId As Int null LineName As Varchar 100 Dele
  • 扩展 Google 地图上的叠加标记?

    我可以将覆盖项目很好地绘制到谷歌地图上 图像如下所示 其中 部分是 图钉 用于标记地图上的纬度 经度以及中间的图片 我的问题是 当用户点击它时有什么办法可以展开它吗 我当然必须将其更改为某种对话框或布局 并在单击时更改它 我想让它变小 就像
  • 如何在 iPhone iOS 4 中设置 UITableViewCell 样式副标题文本对齐方式居中?

    自从使用 iPhone SDK 4 将 XCode 升级到版本 3 2 3 后 我的代码不再工作 我有一个带有样式的默认单元格UITableViewCellStyleSubtitle并想要设置textAlignment of textLab
  • 同时迭代两个数组

    我是斯威夫特的新手 我一直在做Java编程 我有一个需要用 Swift 编写的场景 以下代码是 Java 代码 我需要在 Swift 中为以下场景编写代码 With String array strArr1 String strArr1 S
  • 在 JavaScript 中,如何让函数在特定时间运行?

    我有一个托管仪表板的网站 我可以编辑页面上的 JavaScript 目前每五秒刷新一次 我现在正在尝试获得window print 每天早上8点跑步 我怎么能这样做呢 JavaScript 是not用于此目的的工具 如果您希望某些东西在每天
  • 如何解决 macOS 上的 pygraphviz 错误?

    我在安装 pygraphviz 时遇到问题 并且我在 macOS Monterey 上使用 Anaconda 我已经在 Anaconda 上安装了 graphviz 然后我做了 brew install graphviz and then
  • 从 CLOB 内的 XML 到带有路径列表的 Oracle 表

    我使用的Oracle版本是 BANNER Oracle Database 10g Enterprise Edition Release 10 2 0 4 0 64bi PL SQL Release 10 2 0 4 0 Production
  • Python 解决 Project Euler 问题 #21 的速度似乎很慢

    我正在尝试解决欧拉计划中的问题 21 https projecteuler net problem 21 我认为我写的一切都是正确的 但是 我无法得到最终答案 因为程序没有完全执行 def d num SUM 0 for i in rang
  • Ubuntu OpenCV 无法编译

    我正在尝试使用以下命令编译 OpenCV 3 2 1 cmake DCMAKE BUILD TYPE Release DBUILD SHARED LIBS OFF DCMAKE INSTALL PREFIX usr local DOPENC
  • 是否有替代方法或方法让 Rc> 限制 X 的可变性?

    use std rc Rc use std cell RefCell Don t want to copy for performance reasons struct LibraryData Fields Creates and muta
  • 将数组分配给结构体中的数组

    我正在尝试将一个数组分配给 typedef 结构的一个字段 但实际上找不到一种方法 我已经搜索过这个问题 但我似乎找到的只是 char 数组的答案 这不是我正在寻找的 我只是试图将一个数组分配给一个 int 数组 并寻找一种实用的方法下面的
  • 有没有快速的矩阵求幂方法?

    Is there any faster method of matrix exponentiation to calculate Mn where M is a matrix and n is an integer than the sim
  • 如何使用node在mongodb中插入长值?

    我需要在 mongo 中插入一个属性的 Long 值 var sequences this db collection sequences sequences insert id TEST SEQ value 1 done 但这是以整数形式
  • Java 正则表达式 String.matches 工作不一致

    我有一个正则表达式来检查字符串是否是数字 该格式的千位分隔符是空格 小数分隔符是点 小数点后部分是可选的 问题是 在某些时候 String matches 函数会停止按预期工作 以前有效的方法现在不再有效了 例如 JUnit 代码 impo
  • DataTable 破坏了 Nested Repeater 和 Bootstrap

    我遇到了数据表和嵌套重复器的问题 它基本上表明我还没有获得正确匹配的 tr td 标签 然而 我已经按照下面的链接中的 Nested Repeater 教程进行操作 对我来说 HTML 的格式正确 当我检查 DOM 时 一切似乎都很好 该表
  • 如何在 Entity Framework Core 6 中延迟(惰性)加载二进制属性 byte[] - C#

    我有一个简单的表 其中包含密钥 名称和二进制内容 我只需要在需要时加载二进制内容 这在 Linq2Sql 中曾经非常简单 但在 EF core 6 中 除了导航集合的延迟加载之外 我找不到任何东西 这不是我需要的 我是否遗漏了某些内容 或者
  • 如何在 Laravel 中使用 Vue 路由器?

    我使用 laravel9 和 vue3 进行开发 我的问题很简单 但是路径设置不太顺利 当我访问网址时localhost 8080 tasks 此 url 返回 404 未找到 我收到以下类型错误 获取http localhost 8000
  • Z3:执行矩阵运算

    我的情况 我正在开展一个项目 需要 证明正确性3D 矩阵变换 http rodrigo silveira com 3d programming transformation matrix tutorial UU65YicWsYZ涉及矩阵运算