litaoye 发表于 2012-8-27 20:29:35

用1*2的骨牌覆盖m*n的矩形

最近想写个程序算算,用1*2的骨牌覆盖m*n的矩形有多少种不同的方式,Wiki上的公式也很漂亮。
http://en.wikipedia.org/wiki/Domino_tiling#CITEREFKasteleyn1961

但这种计算怎么保证精度呢?还是可以在计算前先把某些项合并?

这是我现在写的一个C#程序,用的double,算稍微大一些的m*n时,就不准了。
http://www.51nod.com/question/index.html#!questionId=316

litaoye 发表于 2012-8-28 01:07:30

用泰勒展开可以也许可以获得更好的精度,但感觉有取巧的办法。

mathematica 发表于 2012-8-28 08:55:43

这个问题有意思*******

litaoye 发表于 2012-8-29 01:49:37

这个问题有意思*******
mathematica 发表于 2012-8-28 08:55 http://bbs.emath.ac.cn/images/common/back.gif

还请多多指教。

wayne 发表于 2012-8-29 20:41:43

可以试试这样:
先把4提取出来,求对数,求和,再指数运算,将结果逆回来

litaoye 发表于 2012-8-29 21:07:58

可以试试这样:
先把4提取出来,求对数,求和,再指数运算,将结果逆回来
wayne 发表于 2012-8-29 20:41 http://bbs.emath.ac.cn/images/common/back.gif

如果最后可以逆回来的话,是否对这个精度要求会更高?

wayne 发表于 2012-8-29 21:36:13

6# litaoye
嗯,是的.不过,比起直接连乘来,取对数能表示更大的范围.
只是题目没有说明m*n 具体有多大, 不好讨论啊

wayne 发表于 2012-8-29 21:49:43

不知道能不能 转化成 整数运算.

litaoye 发表于 2012-8-29 22:56:39

6# litaoye
嗯,是的.不过,比起直接连乘来,取对数能表示更大的范围.
只是题目没有说明m*n 具体有多大, 不好讨论啊
wayne 发表于 2012-8-29 21:36 http://bbs.emath.ac.cn/images/common/back.gif

目标是算m = 200,n = 100吧!

wayne 发表于 2012-8-30 11:08:16

9# litaoye
额,太大了吧,结果都有一万多位了。

看来 litaoye 的目标方法就是 用某种巧妙的数学手段化简表达式了
页: [1] 2 3
查看完整版本: 用1*2的骨牌覆盖m*n的矩形