| 恒's profileFrensel的日记PhotosBlogLists | Help |
|
|
April 25 使用Maple 11的Physics Package近来试用Maple 11的Physics Package,主要是关于量子力学计算的部份。不知道是我的水平低,还是Physics Package的功能局限,我觉得算一个么正变换,感觉用手算比用Maple 11算要方便……Maple 11那个Physics Package好像有许多古古怪怪的问题,我也搞不清楚。以下计算在压缩态|s> = SD|0>下算符Y1 = a exp(-i * phi)) + a^+ exp(i * phi)的不确定度sqrt( - ^2),其中S是压缩态算符,D为位移算符,|0>为真空态,a和a^+分别为湮灭和产生算符,phi为实数。我的计算过程非常繁琐,希望高人多多指点,给我一些简单的解决方法。相关计算过程请参考D.F.Walls, G.J.Milburn, Quantum Optics, (Springer-Verlag, Berlin, 1994). March 09 试用Maple 11的Physics Package通过别人的“通风报信”,使用众所周知的方法,经过一个晚上的艰苦工作(是计算机,不是我),Maple 11已经入手了。出于爱好学习的目的,我们决定“试用”一下Maple 11的新包,Physics Package。顾名思义,Physics Package就是拿来处理物理问题的。做物理的人肯定会感觉到,Maple并不能方便地处理日常遇到的很多数学问题,如指定某变量的对易性,抽象矢量分析(即不确定具体表象)等等。如今,这些问题都可以用Maple 11的Physics Package来处理。以下简单地演示对易关系的定义和展开。 众所周知,量子力学中有对易关系[x, p] = x * p – p * x = i * hbar,其中x是位置,p是动量,i是虚数,hbar是Planck常数 / (2 * pi)。那么在Maple 11中该如何定义该对易关系呢?首先载入Physics Package: January 10 Maple 11快出来了……很久没上来这了,忙着考试,也有地震光缆中断的原因。
刚刚去Maple的官网,发现Maple 11快出来了。其中注意到有一个新包,是关于物理的。下面是官网对该包的介绍:
Physics
有这东西,以后的计算会方便多了。另外,据闻还支持多线程编程,还能在2D绘图中加公式。要想办法弄一个下来玩玩才成,罪过啊…… November 09 数学方法和Maple近来发现一本好书,叫《A Short Course in Mathematical Methods with Maple》,在图书馆找到的英文原版书。这本书有几有优点:
1、分两部份,第一部份用“paper and pencil”的形式介绍数学方法的基本内容,第二部份按第一部份的架构,用Maple实现;
2、非常简单易明,是为物理和工程的学生准备的,没有令人呕心烦躁的所谓严格的数学推导;
3、内容少而精,不是面面俱到,但是都是非常基础重要的内容。
4、排版使用LaTex,非常整齐漂亮。插图使用Maple导出或PSTricks绘画,很能突出重点。
5、使用最新版的Maple 10。
此书的好处是除了能学会数学方法,还能学会如果用Maple去处理它们。要明白,大家都知道Maple能处理许多数学问题,如矢量分析、线性代数、级数、微分方程、偏微分方程等等,但究竟如何具体地用Maple去做,是不太清楚的。所以此书的第二部份,是非常好的Maple教程。
另外,Maple 10(应该是)开始有2D Math形式的输入方法,可把指令输入成我们手写时模样。强烈建议把指令输入成2D Math的形式。可参考Maple帮助中的Basic Features->Mathematics->2-D math。 February 25 高阶常微分方程重写为一阶常微分方程组Matlab中的ODE Solvers只能解一阶微分方程(组),如我们遇到高阶的常微分方程时,必须把其重写为一阶微分方程组,才能使用Matlab求解。 如果方程的形式为y'' = f(t, y, y'),我们可以通过y1 = y,y2 = y'代入原方程,使原方程化为: y1' = y2 y2' = f(t, y1, y2) 从而可以使用Matlab的ODE Solvers求解。 这其中的重写过程我们可以通过调用Maple的函数来完成。我们使用Matlab帮助中的一个例子,即van der Pol Equation来重写(Example: Solving an IVP ODE (van der Pol Equation, Nonstiff))。其中van der Pol Equation为: y(t)'' - mu(1 - y(t)^2)y(t)' + y(t) = 0 我们现在把它重写为两条一阶常微分方程组。首先载入Maple的DEtools: > maple('with(DEtools)'); 然后使用Maple的函数convertsys来重写方程: > maple('convertsys(diff(y(t), t, t) - mu * (1 - y(t)^2) * diff(y(t), t) + y(t) = 0, [], y(t), t)') ans = [[YP[1] = Y[2], YP[2] = mu*(1-Y[1]^2)*Y[2]-Y[1]], [Y[1] = y(t), Y[2] = diff(y(t),t)], NaN, []] 在方程形式为yp(n) = f(t, y, y'...yp(n-1))的情况下(yp(n)为y对t的n次导数),一般convertsys函数后两个参数不用变化。其中convertsys函数中的第二个参数为原方程初值条件,设定的形式为y(0) = ...,D(y)(0) = ...。 从ans中的第一项可以看出结果为: YP[1] = Y[2] YP[2] = mu*(1-Y[1]^2)*Y[2]-Y[1] 这便是两条一阶常微分方程组了,YP[1]即y1对t的一阶导数,Y[1]即是y1。 而ans中的第二项便是y1和y2的定义,即: Y[1] = y(t) Y[2] = diff(y(t),t) 经过重写,便可使用Matlab作数值求解了。 另外,Matlab 7中新增了ode15i函数,对“隐式”的“一阶”常微分方程直接做数值求解。 相关内容可参加Matlab帮助中的"Initial Value Problems for ODEs and DAEs"和Maple帮助中的"DEtools[convertsys]"。 January 31 使用maple.ini如果要Maple一启动就算动执行某些命令,如你希望Maple每次启动时虚数单位都使用"i"而非"I"时,可以使用初始化档案maple.ini。 在默认安装时,在C:\Program Files\Maple 10\LIB\中建立maple.ini文件,以记事本打开,里面写上相关的语句,那么以后Maple每次运行时,都会首先执行里面的命令。 所以,我们在maple.ini内写上: #Modify the imaginary unit to "i" interface(imaginaryunit=i): 然后运行Maple,便自动运行了“interface(imaginaryunit=i):”这句命令。我们通常在命后加上冒号,免得启动时出现执行结果。现在我们可以测试一下: >(1+i)*(1-i); 2 明显,"i"已经是虚数单位了,如要回复原状,可令: >interface(imaginaryunit=I): >(1+i)*(1-i); (1+i)(1-i) 现在"i"已不是虚数单位了,展开上式: >expand(%); 1-i^2 January 28 Command-line Maple如果你觉得Maple启动得太慢,占记忆体太多,或要进行很复杂的计算时,你可以考虑使用Command-line Maple。其启动方法为Start->All Programs->Maple 10>Command-line Maple 10或Maple安装目录下的bin.win\cmaple.exe。
Command-line Maple就是在命令行的形式下使用Maple,其指令的输入基本上和Standard Worksheet中一致,但也有少许不同。如Maple 10中的Standard Worksheet可以在命令后不加分号,在Command-line Maple中则不可以。 在Command-line Maple中可以运行大部份在Standard Worksheet中的命令,算式用prettyprint=1的形式表达(上回说到的),而且可以画图。在画图方面,二维图可以较好地表达出来,尽管也能画三维图,但模样较差。另外,Command-line Maple有些命令不能使用,如animate这种动态画图命令。 其中在Command-line Maple中画图时,其画图的device为char。即在Standard Worksheet时,令: >interface(plotdevice = char): 此时在Standard Worksheet中画的图,即和在Command-line Maple中的一致。如: >plot(sin(x), x=0..2*Pi);
1 + AAAAAAAA
+ AAAA AAAA + AA AAA + AA AA + AA AAA 0.5 AA AA + AA A + AAA A + AA AA + A A *A AA *-+--+-+-+--+-+-+--+-+--+-+-+--+-+-+--*-+-+--+-+-+--+-+--+-+-+--+-+-+--+-** 0 + 1 2 3 A 4 5 6A + AA AA + AA A + AA A -0.5 AA AA + A AA + AA AA + AAA AAA + AAAA AAAA -1+ AAAAAAAA 这时,你就可以在各大讨论区中和别人讨论问题时,方便地加上“图”。要注意的是,要令图更整齐地显示,要把字体设置为Courier New。此时,英文字和相关符号能严格对齐。 如要回复默认画图device,可令: >interface(plotdevice = default): 详细设置可参考帮助: >?interface January 12 续上次说到的pretty函数我发现Matlab中的pretty函数无法把指数函数的模样显示出来,求和或积分等却可以,但要用如下方法:
>> a=sym(maple('Int(x^2,x)'))
a = Int(x^2,x) >> pretty(a) / | 2 | x dx | / 即是要用Maple的显式积分指令Int,该指令不作计算,只是把式子的模样返回。之后在Matlab把结果转成符号,再用pretty函数作显示。求和的显示也是用类似的方法,但指数函数却不成,如:
>> a=sym(maple('exp(x)'))
a = exp(x) >> pretty(a) exp(x) 那位高人做到,请多多指教。
而在Maple中,也可以令输出变成该种样式,只要使用设定(Maple 10.02通过):
>interface(prettyprint = 1):
>Int(x^2,x)
/
| 2
| x dx
|
/
要恢复原状,只要令:
>interface(prettyprint = 3):
即可。
另外,昨天终于考完试,本科阶段的考试就只剩下下学期的一门课和毕业论文了~
今个学期的考试成绩出奇地好…… December 12 Maple的小技巧今天在google上的maple groups中看到一个小技巧
使用Classic Worksheet,输入公式执行,把输入和输出一起copy,就可以得到如下结果:
Sum(Int(sin(x)*tan(x)/(x+2*x^2),x),i=1..N)=f(x)/g(x);
N ----- / \ | sin(x) tan(x) f(x) ) | ------------- dx = ---- / | 2 g(x) ----- / x + 2 x i = 1 可见结果还是蛮漂亮的,只是有一点错位,改过来不难.
August 27 强大的Maple 10Maple的新版本,终于可以方便地编辑数学文本了。易用性也大为增强。
现在能把公式输入成很漂亮的形式,而且一些物理上常用的符号如hbar等都能够输入了。
美中不足的是其Complete Command的捷径键[Ctrl][Space]不能使用,我想应是该是中英文输入法切换问题而产生的,如果是纯英文系统,应该没有问题。 |
|
|