今天去了听David Gross的讲座。
讲的是弦论.
有一点:
In string theory, we cannot:
1. Probe arbitrary small distance.
delta x=hc/E+GE/c^4
在量子力学中也是这个样子啊.
2. squeeze a circle to zero size.
底下画了两个圆柱体.不知是不是说:
既然我们把点粒子看成弦, 这条弦就不能再压缩成一点?
----------
不对,好像是和对称性有关 (6/4/2007)
Wednesday, May 30, 2007
Tuesday, May 15, 2007
遭遇bug
这几天编了一个求OPE的程序,发现了两个Mathematica 5的bug:
1. Goto语句
Mathematica中自带的例子:
q = 2; Label[begin]; Print[q]; q += 1; If[q < 6, Goto[begin]]
这样写成一排,可以运行,但是如果这样写:
q = 2;
Label[begin];
Print[q];
q += 1;
If[q < 6, Goto[begin]]
即写成几行的形式,就不行了,总是说找不到Label,而通常这两种写法都应该时一样的。平时用的时候也总是说找不到Label。
2. 求导的问题 如果对三阶或三阶以上导数的函数求导,出现问题,而低于三阶就没问题:
1. Goto语句
Mathematica中自带的例子:
q = 2; Label[begin]; Print[q]; q += 1; If[q < 6, Goto[begin]]
这样写成一排,可以运行,但是如果这样写:
q = 2;
Label[begin];
Print[q];
q += 1;
If[q < 6, Goto[begin]]
即写成几行的形式,就不行了,总是说找不到Label,而通常这两种写法都应该时一样的。平时用的时候也总是说找不到Label。
2. 求导的问题 如果对三阶或三阶以上导数的函数求导,出现问题,而低于三阶就没问题:
也可能是我用错了,如果谁知道,告诉我一下。
另外:
求OPE的程序终于出炉了,有些新优点,终于可以不用传说中的OPEdef.m的那个包了!
Wednesday, May 09, 2007
海盗分金子?编个程先!!
从前,有5个海盗,100个金币,这5个海盗都是及其聪明并且贪婪,要把这100个金子给分了。5个人轮流提方案,如果超过半数以上的人同意则此方案通过,否则将提方案的这个人给杀了(比如扔进大海)。问最后的分配方案。
作为推广,我们可以假设有n个海盗,n个金币,解决程序(Mathematica)如下:
z = 10;
gold = 200;
(*程序的输入 : 总的海盗数(需 ≥ 5); 总的金币数*)
p = Table[0, {i, z}];
(*海盗拥有金钱列表*)
p[[1]] = 0;
p[[2]] = 0;
p[[3]] = 0;
p[[4]] = gold;
(*4个海盗时的情况, 作为初始值*)
f = 5;
(*从海盗数5开始计算*)
While[
f ≤ z,
a = Table[0, {i, f - 1}];
x = Table[a[[1]]++;
Do[If[a[[j]] == 2, a[[j]] = 0; a[[j + 1]]++], {j, f - 1}]; a, {k, 2^(f - 1) - 1}];
(*所有可能的投票情况*)
n = IntegerPart[(f - 1)/2] + 1;
(*至少要得到n个人的支持*)
y = Table[If[Count[x[[i]], 1] == n, x[[i]], 0], {i, Length[x]}];
y = Union[y]; y = Rest[y];
(*y存储这种方案通过时的支持者情况*)
v = Table[0, {i, Length[y]}, {j, f - 1}];
Do[If[y[[i, j]] == 1, v[[i, j]] = p[[j]] + 1], {i, Length[y]}, {j, f - 1}];
(*v存储各种情况要发放的金币数目, 对支持者需比此方案否决的情况多发一个金币, 反对者不发
*)
s = Table[Apply[Plus, v[[i]]], {i, Length[y]}];
(*选出发放金币最少的那种方案*)
p[[f]] = gold - Min[s];
q = Do[If[Sum[v[[i, j]], {j, f - 1}] == Min[s], Return[v[[i]]]], {
i, Length[y]}];
Do[p[[i]] = q[[i]], {i, f - 1}];
f++; Print[f - 1]
]
p
程序说明:
1. 应该有很多种分配方案,但此程序之给出一种,如果要给出所有,要对程序作一点修改。
2. 适用于海盗数目大于或等于5个的情况。少于5个很容易可以人工推出。如果一定要加入少于5个的情况也可以,只是程序稍微长一点。
3. 本程序不适宜解海盗数目太多的情况,超过20就运行的很慢了。运行时间大约呈2^(海盗人数)增长。
4. 有问题请联系 13321331929 黄俊挺
作为推广,我们可以假设有n个海盗,n个金币,解决程序(Mathematica)如下:
z = 10;
gold = 200;
(*程序的输入 : 总的海盗数(需 ≥ 5); 总的金币数*)
p = Table[0, {i, z}];
(*海盗拥有金钱列表*)
p[[1]] = 0;
p[[2]] = 0;
p[[3]] = 0;
p[[4]] = gold;
(*4个海盗时的情况, 作为初始值*)
f = 5;
(*从海盗数5开始计算*)
While[
f ≤ z,
a = Table[0, {i, f - 1}];
x = Table[a[[1]]++;
Do[If[a[[j]] == 2, a[[j]] = 0; a[[j + 1]]++], {j, f - 1}]; a, {k, 2^(f - 1) - 1}];
(*所有可能的投票情况*)
n = IntegerPart[(f - 1)/2] + 1;
(*至少要得到n个人的支持*)
y = Table[If[Count[x[[i]], 1] == n, x[[i]], 0], {i, Length[x]}];
y = Union[y]; y = Rest[y];
(*y存储这种方案通过时的支持者情况*)
v = Table[0, {i, Length[y]}, {j, f - 1}];
Do[If[y[[i, j]] == 1, v[[i, j]] = p[[j]] + 1], {i, Length[y]}, {j, f - 1}];
(*v存储各种情况要发放的金币数目, 对支持者需比此方案否决的情况多发一个金币, 反对者不发
*)
s = Table[Apply[Plus, v[[i]]], {i, Length[y]}];
(*选出发放金币最少的那种方案*)
p[[f]] = gold - Min[s];
q = Do[If[Sum[v[[i, j]], {j, f - 1}] == Min[s], Return[v[[i]]]], {
i, Length[y]}];
Do[p[[i]] = q[[i]], {i, f - 1}];
f++; Print[f - 1]
]
p
程序说明:
1. 应该有很多种分配方案,但此程序之给出一种,如果要给出所有,要对程序作一点修改。
2. 适用于海盗数目大于或等于5个的情况。少于5个很容易可以人工推出。如果一定要加入少于5个的情况也可以,只是程序稍微长一点。
3. 本程序不适宜解海盗数目太多的情况,超过20就运行的很慢了。运行时间大约呈2^(海盗人数)增长。
4. 有问题请联系 13321331929 黄俊挺
Tuesday, May 08, 2007
意识对物质的作用
意识是什么?也许是大脑的活动吧,要这样说,意识也是物质。
前一段时间听一个师兄说了一个故事:比如某个装置正在产生随机数,0和1,在这个过程中如果你一直在想要出现某个数,例如0,那么0就会出现多一些,还说有人做过实验。
今天小小实验了一下。使用Mathetica程序产生随机数。注意这里应该是伪随机数,不是真正的随机数,但是产生随机数的种子好像一直不同,就是不同的时候执行程序都会得到不同的一系列数,我这里就假设种子的产生会对意识有反应吧。
x = Table[ Clear[a]; a = Random[]; If[a ≤ 1/2, a = 0, a = 1], {i, 1, 10000000} ];
Count[x,0]
Count[x,1]
发现程序结果和我所想的有时一样,有时不一样,比例差不多。我试了10次,对5次,错5次。
看来我的大脑对电脑影响不大啊。也许是运行太快了,还来不及产生影响?
如果能加上一个时间延迟的语句就好了,这样运行起来可以时间长一点,可惜不知道Math有没有这个函数。如果有知道的,请告诉我一下。
还有就是有谁知道默认的Random函数的种子是怎么产生的?
前一段时间听一个师兄说了一个故事:比如某个装置正在产生随机数,0和1,在这个过程中如果你一直在想要出现某个数,例如0,那么0就会出现多一些,还说有人做过实验。
今天小小实验了一下。使用Mathetica程序产生随机数。注意这里应该是伪随机数,不是真正的随机数,但是产生随机数的种子好像一直不同,就是不同的时候执行程序都会得到不同的一系列数,我这里就假设种子的产生会对意识有反应吧。
x = Table[ Clear[a]; a = Random[]; If[a ≤ 1/2, a = 0, a = 1], {i, 1, 10000000} ];
Count[x,0]
Count[x,1]
发现程序结果和我所想的有时一样,有时不一样,比例差不多。我试了10次,对5次,错5次。
看来我的大脑对电脑影响不大啊。也许是运行太快了,还来不及产生影响?
如果能加上一个时间延迟的语句就好了,这样运行起来可以时间长一点,可惜不知道Math有没有这个函数。如果有知道的,请告诉我一下。
还有就是有谁知道默认的Random函数的种子是怎么产生的?
Subscribe to:
Posts (Atom)