mathematica 发表于 2011-3-12 09:41:25

用mathematica计算中国剩余定理

只给出一个具体的例子,
比如求
x=2mod3
x=1mod4
x=2mod5
则只需要输入
ChineseRemainder[{2,1,2},{3,4,5}]
得到17
如果再加一个条件 x=3mod6 则
ChineseRemainder[{2,1,2,3},{3,4,5,6}]
得到空集(没输出结果),也就是没有解的意思

需要注意的是得到的只是最小的正整数解,
如果想得到所有的解,那么必须加上
GCD而不是3*4*5(虽然这两者相等)

比如
ChineseRemainder[{1, 3}, {2, 4}]
求的是x=1mod2 x=3mod4的最小正整数解
结果是3,但是全部解是x=3mod4(GCD=4),而不是
x=3mod8(2*4=8)

这个在高手很简单,但是我写出来,让大家都能够受惠,我
其实是写给初学者的,也是在中国普及mathematica,
当然我的普及是很小很小的

mathematica 发表于 2011-3-12 09:47:22

在百度中输入:mathematica 计算中国剩余定理
得到的第一个搜索结果是:
pari中如何计算中国剩余定理?
http://bbs.emath.ac.cn/thread-1004-1-1.html
得到的结果居然是我写的.
不过与mathematica软件没太大关系,倒是与用户mathematica
有不小的关系,其实我原本想找到mathematica如何计算中国剩余定理,
由此看来,搜索引擎毕竟是机器,还是不够智能呀!
为了使得那边的用户能够看到这边的帖子,我决定把这边的链接发送到那边!

mathematica 发表于 2011-3-12 09:53:20

哎!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
在google中输入:mathematica 计算中国剩余定理
居然被墙!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
太垃圾了,讨厌,连中国剩余定理都要封杀!!!!!!!!!!!!!!!!!
仅仅是因为这个“中国剩余定理”中包含“中国”二字,
不过搜索结果的第一个仍旧是我写的帖子:
pari中如何计算中国剩余定理?
http://bbs.emath.ac.cn/thread-1004-1-1.html

具体如何做到自己可以去努力吧,如果用Google搜索不到这个
结果,可以考虑联系我!!!!!!!!!!!!!!!!!!!!!

其实我乐于在数学研发论坛发帖,就是因为我觉得我的帖子也许
某天某日某时某刻能“造福”某人,虽然我并不知道是否能够“造福”
别人以及如果“造福”了别人却不知道是谁!

mathematica 发表于 2011-3-12 10:02:12

a = Range
b = Table, {n, 10}]
ChineseRemainder
这么短的程序,我就不给注释了,初学者也应该能看明白的(不过我本身也是初学者,虽然
我在2005、2006年这样就接触Mathematica了,但是由于没有电脑,所以一直没好好认真
学过!)

海里游 发表于 2011-11-15 15:09:41

能算出最小适合下面条件的数吗?

x=5mod11
x=9mod13
x=3mod17
x=13mod37
x=19mod31
x=17mod43
x=11mod123
类似这样的我倒也能运行。
不过由于编程水平太低,只能运行类似这样十位以下的数字,除数也不能过大。

mathematica 发表于 2011-11-17 18:47:38

能算出最小适合下面条件的数吗?

x=5mod11
x=9mod13
x=3mod17
x=13mod37
x=19mod31
x=17mod43
x=11mod123
类似这样的我倒也能运行。
不过由于编程水平太低,只能运行类似这样十位以下的数字,除数也不能过 ...
海里游 发表于 2011-11-15 15:09 http://bbs.emath.ac.cn/images/common/back.gif

随便建立一个文本,重新命名为123.gp,输入以下内容:
chinese(Mod(5,11),Mod(9,13))
chinese(Mod(3,17),%)
chinese(Mod(13,37),%)
chinese(Mod(19,31),%)
chinese(Mod(17,43),%)
chinese(Mod(11,123),%)
然后在pari/gp中输入
\r 123    (表示读入上面的文件)
最后一个结果就是你所需要的计算结果!

mathematica 发表于 2012-4-26 16:39:37

我写了一个pari/gp的子函数,然后可以直接调用这个子函数得到结果!
其实很简单的!
子函数见附件!
命令见图!

mathematica 发表于 2012-4-26 16:40:48

为了方便不愿意注册论坛的人看到这个子函数,我把子函数贴出来!

/*计算多个同余的中国剩余定理*/
\\日期:2012年4月26日16:39:15
\\例子:chineseM(,)=chinese(Mod(1,2),Mod(2,3),Mod(3,5))
chineseM(a,b)=
{
    local(c,n);
    c=chinese(Mod(a,b),Mod(a,b));\\初始用来循环计算的值
    n=length(a);
    for(k=3,n,
      c=chinese(c,Mod(a,b))
      );\\循环计算多个同余的中国剩余定理
    c\\返回c的值
}

mathematica 发表于 2012-7-13 12:36:47

顶我自己!!!!!!!!!!!!!!!!!
页: [1]
查看完整版本: 用mathematica计算中国剩余定理