标签:
进入20世纪,物理学家应该是敲锣打鼓:高兴的是物理学大厦已经完美,不会有什么新现象新理论,剩下的只是修修补补,物理学已经完美了;同时应该很悲哀:物理学家是不是应该不再存在要转成工程师了。1900年之前基本上传统物理学,不管是力学,电磁学,热力学都有经获得了巨大成就,解释了人们认识到的基本所有现象,未能解释的人们也时间问题而不是工具问题。很快,这种悲观(说悲观是说,哎,物理学家要失业了,但是对全人类来说应该是骄傲的,因为人类似乎已经理解了上帝)就被一些新现象新想法抛开了,物理学家又有工作了!这些新现象很大一部分跟量子力学相关,而后量子力学的后续发展主城了现代物理的主要部分:粒子物理,核物理,原子物理,凝聚态物理等等。之前的传统物理学分支也相对应被称作经典物理。
量子力学是对经典物理的大颠覆。经典物理学认为:
这些经典假设似乎无懈可击,但是量子力学对这些假设一一挑战
1. 世界不是决定论的:在原子尺度以下,你只能预测可能性,比如,你不能确定一个电子究竟在哪,而只能说在哪里的可能性是多少。
2. 不管是光还是物质,都有波粒二象性。
3. 在特定情况下,物理量是离散的,比方说时间,质量,长度,都有个最小值,低于这个值,人们不知道他有什么意义。
4. 观察会影响实验。当然,这个最著名的就是薛定谔的猫,这么装的一个题目,似乎人人都知道,我们理工科见怪不怪,文科有人拿来耍帅??。但是我更喜欢同意论点的另外一个提法:”Is the moon there when nobody looks? “
至于量子力学如此不同于我们的直觉,为什么能被接受?很简单,解释了一些解释不了的现象。
那量子力学为什么会开始?那得谈几个重要问题。
第一,黑体辐射问题
传统上认为,黑色物体吸收一切光,而不反射。很明显这是错的:假如只吸收不反射,那黑色物体温度会一直升高,结果就是穿个黑衣服会被烤焦。那既然所有物体都会辐射能量,辐射速率是多大?这个问题最终的合理解释是基于普朗克将能量量子化。有人说普朗克的量子化表述是为了解决所谓的“紫外灾变”,事实上,紫外灾变的提出是在普朗克之后十年,所以普朗克仅仅是为了得到一个更符合实验数据的理论而已。
第二,光电效应
简单来说,把光照射在金属表面,会产生电子。当时的实验观察是这样的
1) 电子多少跟照射光的强度(密度)有关;2)最大能量跟照射用的光频率有关。
1905年爱因斯坦建立了光子的概念解释了这个问题。他说光是一份份的,一个光子的能量是hv,这里h是普朗克常数(h=6.62606896×10^(-34) J·s),v是光的频率。当光照射金属表面,电子被激活,但是一个电子只能接受一个光子贡献的能量,所以自然最大能量只与光子的频率有光。光电效应的解释,也是量子力学的一个重要起点,但是一旦量子力学发展出一切都是概率的理论后,爱因斯坦就不再支持革命之后的量子力学。当然,爱因斯坦不是拒绝概率与统计,而是没有足够的理由这样做。爱因斯坦最反对的是不确定性原理。或者说,爱因斯坦认为量子力学没错,但是不完备。这段最精彩的历史应该是爱因斯坦与波尔在1930年的一场讨论,爱因斯坦试图用一些思想性实验找到能精确测量的两个不相容的物理量,比如坐标与动量。而波尔化解了爱因斯坦出的难题。但是很明显,爱因斯坦并没有完全信服。但是不得不说,爱因斯坦对量子力学的思考之深入,远远超过当时很多完全支持量子力学的人。
第三,物质是波还是粒子
光有二象性,那物质粒子呢?德布罗意说了任何物质都有二象性。那为什么,光通过一个窄缝就衍射了,人出一道门没有衍射?很简单,虽然也有二象性,但是这种效果极其不明显,于是被粒子性主导。比如一个人60kg, 运动速度1m/s,那么他的波长=h/momentum=h/60=1.1^-35m, 可以忽略了。假如一个电子(mass = 9.11 x 10¯31 kg) 速度为 5.31 x 106 m/s, 它的波长是1.37 x 10¯10 m, 比电子本身大了10^6倍!
好吧,我承认,以上只是想到什么说什么,以下才是我要做的东西:我很自私,没有做过双缝干涉的实验,写这篇是为了写个程序玩一下这个double slits experiment而已,仅仅是为了动画效果比较好看。那程序得先从理论说起,其实很简单,解下边这个二维薛定谔方程:
2.第二种方法更简单,finite difference的方法。
这个方法很简单,以至于我懒得写过程了。事实上是写到这已经写吐了,一点耐心没有了,干脆把程序放上来吧。注意:不是matlab是scilab写的。
clear; lines(0); N = 200; //grid size L = 4; dt = 0.0005; x = linspace(-L,L,N); y = x; a = 2*L/(N+1); bx = 1; by = 0.025; aa = a/2; //potential function describing the screen+slits function z = V(xx,yy) z = 0; if (abs(xx)<L/40) then if (abs(yy-1)>1/2) then if (abs(yy+1)>1/2) then z = 200; end end end endfunction u = zeros(N,N); v = u; bt = 1*(2*%pi/1); //initial wavefunction for i=2:N-1 for j=2:N-1 u(i,j) = cos(bt*(x(i)))*exp(-bx*(x(i)-L/2)^2)*exp(-by*(y(j))^4); v(i,j) = -sin(bt*(x(i)))*exp(-bx*(x(i)-L/2)^2)*exp(-by*(y(j))^4); end end sc = 1/sqrt(max(u.^2+v.^2)); u = sc*u; v = sc*v; sc = 1; u = sc*u; v = sc*v; sc = 0.5/a^2; fg = scf(0); fg.figure_size = [880+18,720+134]; fg.color_map = jetcolormap(256); //time stepping loop for k=1:2000 drawlater(); clf(); Matplot(((u.^2+v.^2).^(1/2))*255+1,"042"); ax = gca(); ax.tight_limits = "on"; ax.margins = [1,1,1,1]*0.05; drawnow(); disp(sum(u.^2+v.^2)); name = sprintf("%04d.png", k); printf("%s\n",name); if (modulo(k,20)==0) then while (~isfile(name)) xs2png(0,name); end end for kk=1:1 for i=2:N-1 for j=2:N-1 H = -sc*(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1)-4*u(i,j)); H = H+V(x(i),y(j))*u(i,j); v(i,j) = v(i,j)-H*dt; end end for i=2:N-1 for j=2:N-1 H = -sc*(v(i+1,j)+v(i-1,j)+v(i,j+1)+v(i,j-1)-4*v(i,j)); H = H+V(x(i),y(j))*v(i,j); u(i,j) = u(i,j)+H*dt; end end end end
结果是这样的:
标签:
原文地址:http://www.cnblogs.com/pdu83/p/5433661.html