zhzhanzy 发表于 2021-2-2 23:14:15

一种数学模型的后续改进(分块阵、数学)

以前我尝试将魔方的转动写成分块矩阵相乘,请看我的另一篇帖子,大致方法如下:将魔方中块可以存在的位置和分块矩阵中的子矩阵对应,多余的子矩阵写成单位阵。改变子矩阵中的信息即表示魔方对应位置的颜色块发生了改变,进而通过改变对应的多个子矩阵信息模拟魔方转动。预先的设想中,魔方的所有状态都可以表示为一个初始矩阵加六个变换矩阵的组合,显然是我低估了魔方的难度,并且这些缺陷不能通过块的编码方式来弥补。

这是我对模型改进的初步设想:
魔方的转动表示为块的位置和朝向发生了变化,每个块对应一个子矩阵,子矩阵的信息表示该块所处的位置和朝向(朝向如何用参数表示还未确定,可参考上篇使用块位于默认面的颜色的编号表示,需要考虑魔方绕不同坐标轴的转动对块的朝向的影响,我还没找到合适的编码方式)。模拟转动需要两个步骤 ,第一步先找到需要改变位置的块所对应的子矩阵位置(例如转动顶面时,需要改变的是所有位置信息中纵坐标为1的所有子矩阵)。第二步对魔方转动所对应的矩阵中子矩阵的位置做出相应调整。这种方法所产生的变换矩阵的子矩阵形式是相同的的,只需在运算时预先调整子矩阵位置。考虑实际运用中对转动对应的矩阵的数量和形式都有要求,块的朝向如何表示也是一个难题。
下面是一个初步方案(三阶为例):
1、中心不可见块为坐标原点,位置信息为坐标,朝向信息待定。
2、所有信息写为对角阵,即所需记录块位置和朝向信息的子矩阵。
2、拼成分块阵并添加多余子矩阵使其为方阵。多余子矩阵写为单位矩阵,以确保魔方任何状态下表示方式可逆。
3、将子矩阵与各个颜色块对应
4、这里有个问题,“选出需要变换的子矩阵”怎样转换成数学语言

没有头绪的时候总要找点事做,希望这些东西对你有所帮助。在我看来分块矩阵非常适合模拟魔方的转动,当然这是以我的水平做出的判断。本人不是数学专业学生,希望在今后的专业学习中还会接触更多的数学知识,并应用到魔方上。也欢迎各位指出上述方法的缺陷、改进方案或者不可行的原因。

后续会完成模型并进行检验

zhang2345 发表于 2021-2-3 08:48:38

需要有深的数学基础才能看懂!

xwfh2000 发表于 2021-2-3 09:07:01

楼主的理论一直在进步,保持关注!

zhzhanzy 发表于 2021-2-4 01:39:54

本帖最后由 zhzhanzy 于 2021-2-4 18:34 编辑

小伙子想法不错,我指出一个缺陷。矩阵的乘法可以交换顺序,但魔方不能。哇,致命一击:'(,{自杀失败,这里是错误的,一般矩阵乘法不可交换。注意是指一般情况下AB≠BA}所以纯粹的用矩阵运算不可能实现。如果你早点发现,上次也不会做的那么幼稚。说得对,当时被分块矩阵的运算性质冲昏了头脑。
hint:魔方块所处的状态一定会影响转动所对应矩阵的形式,考虑一下两个进程,或者每次转动对应为BC([所处状态的调整矩阵]·[转动对应变换矩阵])
但是这样做之后模型还有存在的意义吗?

xwfh2000 发表于 2021-2-4 08:53:29

zhzhanzy 发表于 2021-2-4 01:39 static/image/common/back.gif
小伙子想法不错,我指出一个缺陷。矩阵的乘法可以交换顺序,但魔方不能。哇,致命一击,所以纯粹的用矩阵 ...

矩阵乘法可以交换顺序?只有特定的矩阵才可以吧。

zhzhanzy 发表于 2021-2-4 18:08:44

xwfh2000 发表于 2021-2-4 08:53 static/image/common/back.gif
矩阵乘法可以交换顺序?只有特定的矩阵才可以吧。

我当时在想什么啊。。。。。。

zhzhanzy 发表于 2021-2-4 18:24:07

本帖最后由 zhzhanzy 于 2021-2-4 18:29 编辑

矩阵运算的顺序,我想的可能是ABCDEF=A(BCDEF),然后和交换顺序想乱了。         如果魔方真的写成了矩阵形式,转动对应矩阵就可以先乘起来,然后单独研究几个转动的组合。如果转动对应矩阵受魔方的状态的影响,这就不能用了。

跑火入魔 发表于 2021-2-7 12:52:02

分两步走吧,先还原位置,再改变朝向

jjuudydy 发表于 2021-2-9 17:02:42

通过矩阵表现,的确是一个好想法,不过我觉得,这个表示法不仅仅要能够表现出块的状态,还要能从这种表示当中找到复原的规律。加油吧

zhzhanzy 发表于 2021-2-20 01:43:11

jjuudydy 发表于 2021-2-9 17:02 static/image/common/back.gif
通过矩阵表现,的确是一个好想法,不过我觉得,这个表示法不仅仅要能够表现出块的状态,还要能从这种表示当 ...

表示出块的状态,,,,,,为什么要用数学表示?如果我用汉语,【红黄块在白、蓝中心快之间】这句话和数学表示一样的准确,而且更容易让别人听懂。
想用矩阵自然是因为它有可能解决问题,而且可能性很大,你要问多大可能,我可以肯定的说、很大。有多大?那么大。那么大是多大?看这,就像这么大。那是什么问题?很多问题,这个多是?对,就那么多。
页: [1] 2
查看完整版本: 一种数学模型的后续改进(分块阵、数学)