• 字典法算法实现容易。易于理解。下面的这个类,用字典法实现数组的排列。

    public class IndexArrayPermutations {
     private int[] indexarray;
     public IndexArrayPermutations(int n) {
      // TODO Auto-generated constructor stub
      //初始化长度为n的array数组。
      indexarray = new int[n];
      //给数组赋值。array={0,1,2,3,......,n-1}
      for (int i = 0; i < indexarray.length; i++) {
       indexarray[i] = i;
      }
     }
     
     //用字典法产生下一个排列
     public int[] nextIndexArray() {
      int length = indexarray.length;
      
      //第一步,寻找最后一个正序,寻找方法:从后向前找。
      int i = 0;
      for (i = length - 1; i > 0; i--) {
       if (indexarray[i - 1] < indexarray[i]) {// 则array[i-1],array[i]即为一个正序。
        break;
       }
      }
      //如果没找到,也就是到了最后的一个。
      if(i==0){
       return indexarray;
      }
      
      // 第二步,从后往前找一个比array[i-1]大的第一个数字。
      int j = 0;
      for (j = length - 1; j > i; j--) {
       if (indexarray[j] > indexarray[i - 1]) {
        break;
       }
      }
      
      // 第三部,交换array[i-1],array[j]
      int tmp = indexarray[i - 1];
      indexarray[i - 1] = indexarray[j];
      indexarray[j] = tmp;
      
      // 最后一步,把i-1后面(从i-2开始至length-1)的序列反序。
      // 反序
      while (i < length - 1) {
       tmp = indexarray[i];
       indexarray[i] = indexarray[length - 1];
       indexarray[length - 1] = tmp;
       i++;
       length--;
      }
      //反序完毕即即一次排列结束。
      return indexarray;
     }

    }

     

     

    //好吧,我只能说blogbus不适合写代码。或许我要离开这个地方。

  • 2012-01-28

    数组反序 - [java基础]

    简单实现数组反序列

    把一个数组的i位置到n位置的所有序列反序。
                           |---反序----|      
    index   0  1  2     i            n
    array={A,B,C,...,M,。。。,N,。。。};

    void reverse(int[] array,int i,int n){
        int tmp=0;
        while(n>i){
            tmp=array[i];
            array[i]=array[n];
             array[n]=tmp;
             i++;n--;
        }
    }

  • 表达式解析的方法

    一,程序中执行脚本

    二,使用java的动态编译。

    三,开源包。网上搜了几个包

    expressionj
    JSEL(兼容javascript)
    jeval
    Expr4J
    QLExpress
    IK Expression
    Fast EL

     
  • 程序员必须要不断学习。不断coding。代码量决定了程序员的实力。等代码积累到一定程度时,coding的时候就不用自己花太多时间了。由于很多代码是重复的,所以只需要把之前的自己积累的code拼接组装即可。

    节约工作时间,同时可以显得更牛比。

    所以平时必须积累code。

    code的积累,

    一靠自己的编写。平时的project中注意把一些可以作为通用代码的code积累下来。只是自己的代码可能不够可靠。

    二靠开源世界的各种工具包。java不是python,各种包不是太多。所以更要靠平时自己去搜寻。

  • 男孩如何追女孩
      1.未到火候,千万别说。有些男孩才跟人家约过几次,就提出要建立“更进一步”的关系,这十有八九要坏汤。爱情上的事妙就妙在一切尽在不言中。说清楚了,话挑明了,反而不美。本来人家肯单独出来跟你说话,这说明女孩对你不无好感。但是这种好感有时连她们自己都说不清,你却急于挑明,破坏了这种朦胧美,那就别怪人家敬而远之以致退避三舍了。看看周围那些还没开始就夭折的爱情,许多都是由男孩没有掌握好火候造成的。

  • 爱——世界上最伟大的魔法

    ————————————————简论《哈利波特》中爱的力量。

    20011104,哈利波特系列电影的第一部《魔法石》于美国上映。

    从此全球刮起一阵魔法狂潮。

    201184,哈利波特系列电影的终结篇《死亡圣器()》在我国内陆上映。

    至此电影全球电影票房已经超越《指环王3》成为全球第三最卖座电影。

    十年的时间,伴随着一代人的成长,哈利波特也走到了终结。在这部伟大的作品中,不仅为我们展示了多彩绚丽的魔法世界,而且讲解了神秘莫测的高端魔法。

    而这个世界上最伟大的魔法当然不是驱除邪魔的“呼神护卫”,也不是保卫自己的“除你武器”,更不是杀人于无形的“阿瓦达索命”。

    那是什么?邓布利多回答我们:“是爱。”

  • 不要和自己价值观偏差很远的人走的很近。要么引火烧身。要么就会有严重的自卑感。

  • 兽族新开局方法。

    游戏开始。苦工采金。基地两P

    拉一苦工BA

    基地出来的苦工BO

    接下来出来的苦工将要去造BB。此时的木头应该是60

    在这个苦工将要出来的时候。拉一个采金的苦工去伐木。此时3苦工采金。出来的苦工造BB。此时的木头是10。那个采金的苦工伐两轮。即可满30。把这个苦工回去采金。

    BA中的苦工就快造好祭坛。由于BOBA稍慢。所以BA一好即可把BA中的苦工拉去造BV

    这样的话,英雄出来的时候即可有商店。兵营。一个大G

     

    适合骚扰型开局。缺点是第二个大G会出的比较晚。

  • 2011-11-21

    python中的迭代库 - [Python]

    很久之前还自己花死力气去写一些可以生成排列组合的函数。而这一切都不必要。

    itertools即可实现这一切。

    比如:

    from itertools import permutations
    cols=range(4)
    for vec in permutations(cols):
        print vec

    然后你会看到
    (0, 1, 2, 3)
    (0...
  • 时钟的分,时,秒三根针一天(24小时)之内会重合几次?

  • 几年前在QQ空间转过,后来被和谐了。搞不懂SBTX和谐尼玛啊。

    此篇文章//转贴//,很有意思

    QQ空间字数有限,分为两篇。文中有些物理学家的名字拼写错误,做了修改。

    --------------------------------------------------------------------------------------------...
  • 这是几年前网上看到的帖子。然后就保存了下来。清理电脑时觉得还是挺不错的。就贴上了吧。

     

    =======================================================================================================

    发信人: chinasww(太空战舰), 信区: Advice
      : 科大物理系教材1
    发信站: 瀚海星云 (2005070801:19:36 星期五), 站内信件 WWWPOST

    本来对教材、书籍也长时间关注。一直没有时间写稍微详细一点的。在此正好考完,就抛砖引玉了,难免贻笑大方!
    。。。。。。。

  • i9100上的应用让我感觉云的力量真强大。各种好用的网络服务,再加上我自己的电脑硬盘空间有限。所以,就要更加利用好网络服务。

    今天查了下不翻墙访问google文档的方法。很有效,但是不知道是不是换了网通的缘故,打开有点慢。不过不影响什么。利用好google文档。还有picasa。恩。!

    不翻墙访问google文档的方法:http://blog.sina.com.cn/s/blog_4d6a65960100qom7.html(这类东西网上很多)

  • 好吧。。。小屁孩,你懂个屁。。我承认那天我很痛苦。。。但我真的没有时间去儿女情长了。

    有些事情该过去就过去吧。

  • 也许,或许,maybe。好多的不确定。正如测不准原理,目标越明确,方向却越模糊。

    各种不确定是自信心的不足,更是缺失勇气的未来。正如当初的我没有能力给她承诺,没有勇气面对未来。

    前夜,刻录的光盘读不出来了。最重要的照片消失的无影无踪。那一刻心头涌上莫名的失落感简直要把人窒息。当晚又是一个噩梦。她清晰的回来了。不!她从未离去!这种感觉如此强烈,真实,让人撕心裂肺。

    然而她真的走了。她不再属于我。她的心应该早就飞远了。苦苦的哀求亦是零功,何况我伤她太深。

    放手,太难了。

    我不曾相信过什么爱情。那些东西都是虚假的,伪善的,骗人的谎言。然而记忆消散于无形,迷雾散尽,爱早已留下痕迹。她是真的。

    我相信,这就是爱情。但再也追不回来了。

  • 2011-06-14

    向日葵人生 - [心情]

    青春逝去,麻木还是清醒,我无力平衡。

    未来在哪里?未来是什么?我要的是什么?

    追逐光和热的梦在现实中冰封。

    。。。回温。。。

    嘲笑这些伤痕,剩下的体温守卫那颗花。

    。。。狂风暴雨。。。奋不顾身。。。。。。旋转着。。。

    即便黄昏,依旧灿烂。

  • 2011-06-02

    累 二 - [废话一堆]

    我觉得老板不好。但是我觉得老板觉得自己对我很好。现在有一个跳槽的机会放在我面前,我是不是该好好珍惜,如果离开我现在的公司,也许我将一无所有。如果不走我怕失去

    这么良好的机会。我该何去何从?

    =========================================================...

  • 2011-05-16

    - [废话一堆]

    累,累的慌。

    好久都没心思写点东西。也不知道在这鬼地方能干多久。也不知道能坚持多久。

    跳槽,我没去。我总想改变点什么。想创造点什么。

     

    哼,,,,小p孩,你能做什么呢?

    在我决定留下的那天下午。公司的女同事哭了。

    我只是想多好的女孩子~。

    也...
  • 2011-04-19

    那天我自恋了 - [牛哄哄]

        你们谁能想象,哥穿上了衬衫,打起了领带,骑上自行车,背上公文包。那如犀利哥般忧郁的眼神,芙蓉姐般完美的身形,还有我标志性的飘逸秀发~~~。不要惊讶哥的华丽变身。虽然我知道,人潮人海中,像哥这般风一样的男子一瞬而过会便会引来无数路人的爱慕嫉妒恨,而哥还是哥。当你寂寞空虚无奈的时候,向天空怒吼哥的名字。。。哥便会穿越时空来抚慰你受伤的肉体和心灵。

  • 2011-04-18

    程序包 - [Mathematica编程]

    Mathematica中只有函数,没有子程序的概念。程序包是一段特殊格式的完整程序,其中定义了一个或者多个函数。只要将程序包运行一次,就如同内部的函数一样使用其中的函数。

     

    程序包的格式如下:

     

    BeginPackage[“上下文`”]

    函数名::usage=”函数说明字符串

     

    Begin[“`Private`”]

    程序段

    End[]

     

    EndPackage[]

     

     程序包中主要是自定义函数,函数由f[x_]With[],Modole[],Block[]定义。

     

    程序包中BeginEnd必须成对出现。

    从程序包中的第二句开始建立本程序包中函数的函数名,并给出使用的说明字符串,当程序包调入后用户可以用  ?函数名   来查询说明字符串。

     

    在程序中可以插入注释,格式为:

     (* 注释字符串 *)

     

  • 一.变换规则和表达式求值

    Mathenatica中,所有输入的东西都是表达式,Mathematica对用户键入的表达式的执行过程成为求值。求值的结果可能是数值,也可能表达式,也可能是图形等,出现问题时,还有可能给出的是文字提示。

    Mathematica求值的过程是:Mathematica试图运用变换规则库内的变换规则对表达式进行变换,直到没有变换规则可用为止。Mathematica的内部函数都是变换规则,启动时,变换规则库已经存在了一个内部的变换规则集合。

    用户可以自己定义一些变换规则,Mathematica会自动把这些规则加入到变换规则库中,组成用户自定义的变换规则集合。

    Mathematica会自动查找用户定义的规则集与内部规则集,从中寻求可用的变换规则。

    Mathematica一般会反复的查询规则集与内部规则集,直到计算出最后不变的形式,然后再输出计算结果。

     

    定义两个变换规则

    p=3 x;

    x=2;

    若查询p?p,返回p=3x

    输入表达式p,返回6

     

    在求表达式p的值时,Mathematica首先查询到p=3x,再查询到x=2,带入上式。得到p=6。输出结果。

     

    如果接着键入

    x=.

    清除了变换规则x=2

     

    若求表达式p。则返回3x。即Mathematica查询不到关于x的规则,则直接输出3x

     

    再看下面,输入下面语句。可以更好的认识规则和两种等号的区别。

    x = 2;

    p = 3 x;

    f[x_] = 3 x;

    q := 3 x;

    g[x_] := 3 x

     

    分别查询?p?f?q?g

    返回结果p=6f[x_]=6q:=3xg[x_]:=3x

     

    即对于新变量,新函数的及时定义是先同时查询规则库中的规则,运算,然后赋值给变量。

    但延迟定义即不会事先查询规则库。而是在正式使用的时候再查询规则库,计算,输出结果。

     

     

    下面的例为函数多规则定义。与其他的函数式编程语言很相近。输入

    f[x_]:=2 x;

    f[2]:=0;

     

    f函数被多条规则定义了。

    输入f[2],返回0

    输入f[3],返回6

    查询?f,返回f[2]=0   f[x_]:=2 x

    可以使用“f[x]=.”来消除f的定义。此后再使用f[2],则返回,f[2]=4

     

     

    二.非自动使用的变换规则

    使用“=”“:=”定义的规则都会把规则放入规则库中,还有另一类非自动使用的变换规则,它们不能放入规则库中,不会被Mathematica自动使用,只能由用户需要的时候键入执行。

     

    非自动使用的变换规则采用“->”,“:>”来代替“=”和“:=”。

    ->”,“:>”区别:是否对符号右边的表达式立即求值。

     

    执行变换的语句:

    表达式/.规则库

    对表达式中的各项尝试使用一次规则表中的规则。

    表达式//.规则表

      反复使用规则表中的规则直到结果不变。

     

    例,变换规则表的使用:

    输入[1] 2 x^y/.x->1

    返回[1] 2

     

    输入[2] 2 x^y/.{x->2,y->3}

    返回[2] 16

     

    输入[3] 2 x^y/.{{2->a},{x->2},{x->a,y->b^2} }

    返回[3] {a x^y,2^(1+y),2 a^(b^2)}\

     

    输入[4] f[y_]=%[[2]]

    接着查询[5] ?f

    返回[5] f[y_]=2^(1+y)

    输入[6] f[2],返回8

     

    更复杂的变换,使用带模式的变换规则

    输入[1] x^2+2 x^4-x^6/.x^n_->x^(n/2)

    返回[1] x+2x^4-x^3

     

    输入[2] %/.x->x^2

    返回[2] x^2+2 x^4-x^6

     

    输入[3] %1/.x^n_->x^(2 n)

    返回[3] x+2x^4-x^6

     

    Mathematica与人的理解不是一致。

    n_.代替n_    ,这是如果n不出现,则默认为n=1。类似的有x_+y_. ,这里y不出现,则y=0 x_y_.  y不出现,则y=1

    输入[4] %1/.x^n_.->x^(2 n)

    输出[4] x^2+2 x^4-x^6

     

    以下说明/.”与“//.”的区别

    输入[1] f[f[x]]/.f[x_]->Sin[x]

    输出[1] Sin[f[x]]

     

    输入[2] Sin[x^2+x^4]^2/./u_^n_->u^(n/2)\

    输出[2] Sin[x^2+x^4]

    可以看出,规则变换是从表达式外层向内层变换。

     

    输出[3] g[y^2+Sin[x^2]^2]/.u_^2->u

    返回[3] g[y+Sin[x^2]]

    在同一层中,只要匹配合适,则按规则变换。

     

    输入[4] x^4/.{x^4->x^2,x^2->x}

    输出[4] x^2

    虽然有多个变换规则,只是将表表达式变换一次。

     

     

    使用“//.

    输入[1] f[f[x]]//.f[x_]->Sin[x]

    返回[1] Sin[Sin[x]]

     

    输入[2] Sin[x^2]^2//.u_^2->u

    返回[2] Sin[x]

     

    输入[3] x^4//.{x^4->x^2,x^2->x}

    返回[3] x

     

     

    ->”和“:>”的区别

    输入[1] u_->Expand[u]

    返回[1] u_->u

     

    输入[2] u_:>Expand[x]

    返回[2] u:->Expand[x]

     

    输入[3] (1+x)^5/.u->Expand[x]

    返回[3] (1+x)^5

     

    输入[4] (1+x)^5/.u:>Expand[x]

    返回[4] 1 + 5 x + 10 x^2 + 10 x^3 + 5 x^4 + x^5

     

     

     三.带有条件的规则

    使用“:=”和“:>”定义的变换规则,还可以附加条件

    模式:=表达式/;条件

    模式:>表达式/;条件

     

    例:

    c[n_,k_]:=n!/k!(n-k)!/;IntegerQ[n]&&IntegerQ[k]&&n>0&&n>=k>=0

     

    则定义了组合数Cnk

    即,如果n是整数且n也为整数且n>0n>=k>=0,满足条件,函数c[n

    ,k]才会得到定义,并且计算。

     

    注意:Mathematica中,x!=Γ(x+1)x可以不是整数。

     

    还可以像下面的例子使用。

    输入[1] x^2+x^3/.x^n_:>x^(n/2)

    返回[1] x+x^(3/2)

     

    输入[2] x^2+x^3/.x^n_:>x^(n/2)/;IntegerQ[n/2]

    返回[2] x+x^3

    限定n为偶数时,才会匹配变换,两种结果不同。

     

  • 用几个基本的例子来区别“:=”和“=”的区别。

    首先,

    x = 2; f[x_] = 2 x; g[x_] := 2 x;

     

    接着,?f

    返回,f[x_]=4

     

    如果,?g

    返回,g[x_]:=2 x

     

    以上例子把:==的区别显示的已经很清楚了。再看,

    f[x_] = Expand[x]

    g[x_] := Expand[x]

     

    输入,f[(a + b)^2]

    返回,(a + b)^2

     

    输入,g[(a + b)^2]

    返回,a^2 + 2 a b + b^2

     

    =,在定义函数之时,先计算了等号右边的表达式。再把表达式赋值给函数。

    :=,在定义函数的时候,不会作计算。延迟到实际使用函数的时候,才会计算,并把计算值返回输出。

  • 一.模块

    编写Mathematica不需要事先声明变量。用户所使用的变量都是全局变量。

    Module是一种模块结构,在这种模块的内部可以建立并使用局部变量,具体格式如下。

     

    Module

    Module[{x, y, ...}, body]

    其中前面的表用于声明局部变量,后面的body是程序表达式(一般都是复合表达式)

    Module[{x=x0, ...},body]

    其中前面的表可以声明局部变量并且赋初值。

     

    With

    With[{x=x0, y=y0, ...}, body]

    Module的作用基本相同。

     

    二.

    Block(),与Module(模块)相似,但又有所不同。结构如下。

     

    Block

    Block[{x, y, ...}, expr]

    其中前面的表中声明局部变量在此结构中能够重新赋值,后面的expr是程序表达式(一般都是复合表达式)。结构返回expr的运行结果。

    Block[{x=x0, ...}, expr]

    给表中的变量赋予局部值。结构返回expr的运行结果。

     

    说明,每次调用Module时,它的局部变量被Mathematica重新命名(原名加标号),不会与同名全局变量或其他Module中的同名变量混淆。

    但是Block不重新命名块中声明的变量,如果已经存在同名的全局变量,则仍是同一变量,允许在expr中使用重新赋予的值。当Block执行完毕时,块中声明的变量的局部值被清除,并恢复原同名全局变量的值。因此,Block不能建立全局变量,只能声明能取局部值的全局变量,可用于暂时改变全局变量的值。

     

    三.函数模式

     

    函数名[参数1,参数2,……]:=( ….;…..;…..;…..)

    ()中的内容是具体的复合形式。

     

    当然Module形式定义的函数是最为安全的。

  • 一.表达式

    Mathematica中的所有形式的对象都是基于函数来实现的。但是这里的函数的概念在Mathematica中成为表达式。表达式是Mathematica中最基本的对象。

    许多不同形式的对象,如数学公式、列表、图形等,它们的形式不同,但是它们都是Mathematica中的表达式。

    表达式的一般格式:f[a,b,...]

    但是不介意把经常把表达式写成一般格式。

    例:

    x+y是表达式。写成一般格式是Plus[x,y]。显然,一般格式比较复杂而不利于输入。

     

     

    二.列表

    列表是 Mathematica 的主要结构,用来表示各种类型的集合、数组、序列。列表可以是任意结构和大小,甚至包含数百万个元素。

    列表的一般格式{e1, e2, ...}óList[e1,e2,…]

     

    Table函数

    构造任意维数的列表。也可以相对应的构造向量、矩阵、张量和其它数组。以下是Table函数的一些应用形式。

     

    Table[expr, {imax}]                产生一个 expr imax 拷贝的列表。

     

    Table[expr, {i, imax}]             产生i 1 imax 的一个的值的列表。

     

    Table[expr, {i, imin, imax}]     i=imin 开始。

     

    Table[expr, {i, imin, imax, di}] 使用步长 di. 

     

    Table[expr, {i, {i1, i2, ...}}]    使用连续值 i1, i2, .... 

     

    Table[expr, {i, imin, imax}, {j, jmin, jmax}, ...]   

    给出一个嵌套列表。和 i 相关联的列表是最外的列表。

     

    注:Table[expr, spec1, spec2] 等效于 Table[Table[expr, spec2], spec1]

     

     

     

    三.定义变量

    Mathematica 中,变量不仅可以代表一个数值,而且可以作为一个纯粹的符号来使用。

     

    Set(=) 直接赋值

    lhs=rhs

    计算 rhs 并把赋给 lhs lhs 将总是被 rhs 替换。

    {l1, l2, ...}={r1, r2, ...}

    计算 ri,并将结果赋给对应的 li 

     

     

    SetDelayed (:=) 延迟赋值 (当需要时为等号右侧赋值)

    lhs:=rhs

    lhs 延时赋给 rhsrhs 保留未计算的形式。当 lhs 出现时,它用 rhs 替换,并且每次重新计算。

     

     

     

    Unset (=.) 取消一个变量

    lhs=.

    去掉对 lhs 定义的任何规则。

     

     

    Clear —取消一个函数定义

    Clear[symbol1, symbol2, ...]

    清除关于 symboli 的值和定义。

    Clear["form1", "form2", ...]

    清除关于其名称与任何字符串模式 formi 相匹配的所有符号的值和定义。

     

    四.函数

    Mathematica中的表达式本质上都是由函数所定义的。Mathematica中有上千的函数。但是实际数学应用中的函数千变万化,需要自己定义。

     

    立即定义函数:

    f[x_]=expr 

    f[x_,y_]=expr

    定义函数f(x)Mathematica会先执行expr,然后再把计算的结果赋值给函数f

     

    延迟定义函数:

    f[x_]:=expr

    f[x_,y_]:=expr

    只有当真正调用函数f[x_]:=expr时,Mathematica才会将expr中的变量x换成变量值,再定义函数。

     

     

    和其他计算机语言类似。函数f,是一个特殊的变量。

     

    Mathematica允许把一个表达式作为函数的自变量。

    例如可以定义:

    Plus2[a_*b_]=a+b

     

     

     

     

    五.字符串

    Mathematica大部分是由结构的表达式,但它也可以用来作为无结构的文本处理系统。

    字符串的一般格式:"text" 字符串,包含统一的字符编码标准或专用字符

    一般字符串的头为String

    例:”This is a string.”

     Head[”This is a string.”]  返回的将是String

     

    字符串的一般操作

    连接字符串

    StringJoin (<>)

    "s1"<>"s2"<>...StringJoin["s1", "s2", ...] StringJoin[{"s1", "s2", ...}]

    例:”aaa”<>”bbb”<>”ccc”

    返回的是”aaabbbccc”

     

    StringLength

    StringLength["string"]  返回字符串中字符的个数。

    例:StringLength["Mathematica"]

    返回的是11

    六.模式

    Mathematica模式的标志是“_”,其基本规则是代表任意表达式。例如f[x_]表示形如f[anything]的表达式。并且将表达式angthing命名为x以便在变换规则中引用。可以把“_”放在表达式中的任何位置,得到与能以任何方式填充的表达式匹配的模式。

     

     

  •         Mathematica是世界上最为优秀的符号计算系统。虽然是商业软件,但是开源世界的scilabpython与之比起,差距还是比较大。和Matlab类似的是,Mathemataca具有丰富的函数库,和自身所独有的语法。可以说Mathematica就是一门计算机语言。初学Mathematica很容易被那些五花八门的函数所吸引,而偏离了学习一门语言的真正内容。

        事实上,市面上很多Mathematica的参考书籍也都是着重强调函数,而对语法的知识只做略微的介绍,甚至更本就不成体系。

        内部丰富的库函数固然重要,但是如果能熟练的掌握语法,就能编制出很多很不可思议的程序。正如学习Matlab那样,函数很强大,但是有了语法才能更全面的展现函数的威力。

        这里的一切资源来自网络与参考书籍。

  • Mathematica和其他任何编程语言一样,拥有赋值,条件,循环等齐全的程序设计语法。不过在Mathematica中,这些都是用函数来体现出来的。

     

    一.顺序语句

    expr1;expr2;...exprn

    依次对 expri 计算,将最后一个expn作为结果返回。

    expr1;expr2;...exprn;

    依次对 expri 计算。不返回任何结果。

     

     

    二.赋值语句

    1.基本赋值

    x=v 赋值 (Set)

    {x,y}={u,v} 赋多值

    {x,y}={y,x} 交换值

    {l1, l2, ...}={r1, r2, ...} 利用列表对多个变量赋值

    a[[i]]=v 对一个列表/数组/表达式元素赋值

     

    另外Mathematica支持,类C语言中的特殊赋值符号

    x++ (Increment)

    ++x (PreIncrement)

    x+=y (AddTo)

    x-- (Decrement)

    --x (PreDecrement)

    x-=y (SubtractFrom)

    x*=y (TimesBy)

    x/=y (DivideBy)

     

    2.立即与延迟

    另外Mathematica中的函数分为快速分配和延迟分配。

    基本形式就是利用“=”和“:=”。

    lhs=rhs 快速分配,在分配的同时计算 rhs

    lhs:=rhs 延迟分配,每次调用时重新计算 rhs

     

    3.清除赋值

    x=. 清除 x 的值(Unset)

    Clear 清除与一个符号相关的所有值

    ClearAll  ▪ Remove

     

     

    三.条件语句

    1.       方程与不等式

    Equal (==), Unequal () 数字方程

    SameQ (), UnsameQ () 字符等式

    Less(<)  ▪ Greater(>)  ▪ LessEqual(<=)  ▪ GreaterEqual (>=)

     

    2. 逻辑和布尔代数

    以下符号均是建立在布尔代数的基础之上的。

    And(&&, )

    Or(||, )

    Not(!, ¬)

    Nand()  ▪ Nor()  ▪ Xor()  Xnor()  ▪ Implies()  ▪ Equivalent()

    3.    条件语句

    3.1   If指令

    If[condition, t, f]

    如果conditionTrue,那么计算t语句,如果为 False 计算 f语句。

    If[condition, t, f, u]

    如果 condition 既不为 True 也不为 False ,则计算u语句。

     

    3.2   Which指令

    Which[test1, value1, test2, value2, ...]

    依次计算每个 testi ,返回相应于产生True的第一个valuei 的值。

     

    3.3   Switch指令

    Switch[expr, form1, value1, form2, value2, ...]

    计算 expr, 然后依次和每个 formi 比较,计算并返回相应于找到的第一个匹配的 valuei

     

     

    四.循环语句

    1.    Do指令

    Do[expr, {imax}]

    expr 计算 imax 次。

    Do[expr, {i, imax}]

    将变量 i 1 递增到 imax (步长为 1 ),计算 expr 

    Do[expr, {i, imin, imax}]

    i=imin 开始。 

    Do[expr, {i, imin, imax, di}]

    使用步长 di 

    Do[expr, {i, {i1, i2, ...}}]

    使用连续的值 i1i2...

    Do[expr, {i, imin, imax}, {j, jmin, jmax}, ...]

    对每一个 i 循环地根据不同的 j 等,计算 expr  

     

    2.    While指令

    While[test, body]

    重复计算test然后是body,直到test第一次不能给出True

     

    3.    For指令

    For[start, test, incr, body]

    执行 start,然后重复计算 body incr,直到 test 不能给出 True

     

    4.         Table函数

    该函数也有循环的功能,不过Table会返回列表。这类似于Python的解析列表。

     

     

     

    五.函数

    这里所谓的函数多为纯数学函数。

    一般用延迟定义来定义函数。

    f[x_]:=body

     

  • 感兴趣的东西太多,发现总是把自己的精力放在了太多太多杂七杂八的其他科目中。回过头来看看自己,学的东西乱七八糟。什么都有,但是没有一个是有实际用处的。那些电路,那些代码。。。。。。

    看群论,真的就感觉,数学之美是那么简洁而深刻。还有那么多牛X至极的物理书没有仔细钻研,自己却不知道为什么钻到其他的地方去学了些乱七八糟东西。

    《物理学中的群论基础》基本上就是陶瑞宝那本的简明版。但是有些东西看的很是不爽。配合陶先生的那本,凑活看看,还行。我要坚持把这书看完。然后定定心心的重新学一遍量子力学。。。

    深切感受自己到电动力学知识的薄弱。花点时间做一下林璇英,张之翔的《电动力学题解》,这本应该是国内最好的电动力学的习题集了。同时也可以稍带的复习数学物理方法。杰克逊的书想买,但是不知道为什么,现在市面上没有中文版的卖。还好是有电子版。但是,奚定平的那本习题解一是买不到,而是下不到。网上只有国外英文的习题答案。。。。。

  •     上班以来第一次休息。突然不知道该干什么了。我这半年在家是怎么过的。。。。so又开始了。开启迅雷,挂上QQ,带上耳机,听着低俗音乐。
        如果你是我的同学,请打开音乐,最好是那种舒缓的情歌。然后往下看。

        tt说,他们那边又走了2个人。也就是那boss手下也就两个卒子了。我劝tt你要走就早点走吧。tt说,要离职证明,一个月后才能走,但是谁来等你一个月。
        他一直担心房租的问题。他怕换了工作房租什么的会很贵。

        tt告诉我,姚换了个工作,结果原来的那个公司要姚赔偿损失。我啥也没说。我一直挺喜欢姚的。真的不知道该说什么好,只能无指向的咒骂了两句这个社会。

        小方应该是南京那边最幸运的了。到了公司半年就升了新校区主任。但是,新点招不到人。估计连老师也找不到。现在日子也好不到哪去。他的脾气我懂的,他不是那种特别有耐心的人,困难面前真怕他会坚持不住。他想让我去南京。小方一直很照顾我。这时候我应该去帮他的。但真的,我走不了。其实综合各种客观因素后我也害怕。小方自己说,他变了。我怕他不是以前的那个他了。我更怕因为工作上的不合谐,导致我和他的不和谐。

        小贺的状态应该还可以,不过上次见他也未见他脸上有半点活力。

        阿飞,我也不知道他到底怎么样。他总是那副腔调,就算穿上西装也是那副腔调。我只是不断的明示暗示,你该找个女人了。同样的话我也和tt说过。

        等有空了必须去南京看看我这帮兄弟,上次tt和小方请吃饭的,我有工资了,必须我来。

        说起来也搞笑,前两天a帆找我打魔兽,他那个臭水平,任意虐。我说,再打一局。他说打了一天,打不动了。照理来说,还是学生的他日子应该不是那么的遭。但是如果不是很糟的话,打一天的魔兽是不是也太浪费时间了。他和小薛不知道还有没有继续。。。。大学时,我偷偷的预言过,班对没有一个好结果。千万别被我预言中。我真切的希望他们都能修成正果。

        水han结婚了,我们班第一个结婚的。上礼拜他退出了我们的魔兽群。我想一个方面是,我有事没事的就在群里扯上两句无聊的话题,他是个非常现实的人。我的各种不切实际的扯淡性话题他肯定不会感兴趣,so他烦了,退了。另一方面,他的婚礼我们没一个人去了。其实这真的不怪我们,2月1号结婚,丫的还有两天过年。忙还来不及呢。他直接结婚了。。。。我只是希望他能理解我们。

        伟帅哥也还是伟帅哥,工作了就好,别歇着。我只是希望他别太沉不住气。
        但是tupi,帅气的tupi,别老是在上班的时间混网吧了。

        昨天晚上和minik在群里扯电影。凯子还是凯子。一如既往的伪装着自己的空虚。。。。。。他,正常。

    PS:刚看到rr上阿标的状态。。这丫的也要结婚了。结巴,结巴。。。哥会坚挺住的。

     

  • 我必须淡定。
    我就不信,脑残物理男没法混社会。
    我就不信,我Y的搞不出一份自己的事业!!!!!!!!!!!!


     

    日出和日落只在一念之间。