以前在找了 MIME 的一些资料,只显示 doc、xls 等 office 2002 之类的格式有 MIME

如 .doc MIME 就设置成 application/msword 就可以了。在网页里面docx 文件是没问题,但是下载下来了之后就变成doc格式了,虽然打开是没问题,但总感觉有点不爽。今天我又搜索了一些。搜到了:

原文网址

.dotx,application/vnd.openxmlformats-officedocument.wordprocessingml.template
.docx,application/vnd.openxmlformats-officedocument.wordprocessingml.document
.xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.pptx,application/vnd.openxmlformats-officedocument.presentationml.presentation

.doc,application/msword

.dot,application/msword

.xls,application/vnd.ms-excel

文件的大小函数为:filesize()
文件是否存在的函数为:file_exits();
但是这两个函数只针对本地

那么:远程文件是否存在,远程文件大小 如何得知呢?

搜索了一下,有人居然说,把远程文件下载过来再判断这个远程文件的大小,这是什么歪理。

庆幸大部分人还是清醒的,一般应该使用判断header反馈的信息进行判断。

php中如何获得header信息呢? php的函数真多,这个也不例外

1.最简单的获取远程文件大小办法

$a_array = get_headers(url,true);
url就是网址了,至于第二个参数

就可以得到类似下面的这个数组

Array
(
[0] => HTTP/1.1 200 OK
[Date] => Sat, 29 May 2004 12:28:14 GMT
[Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
[ETag] => “3f80f-1b6-3e1cb03b”
[Accept-Ranges] => bytes
[Content-Length] => 438
[Connection] => close
[Content-Type] => text/html
)

所以,你可以很舒服的拿到远程文件的大小
$file_sizeofurl = a_array['Content-Length'];
2.用curl获取远程文件大小
如果服务器禁止get_headers 怎么办?
换一种办法,用curl
我总觉得curl就像一个虚拟的用户,什么都能模仿

下面直接给出一个老外的函数
请注意
echo '
head-->'.$head.'<----end
‘;

这句是我加的,为了知道header里面到底包含了什么东西
function remote_filesize($uri,$user='',$pw='')
{
// start output buffering
ob_start();
// initialize curl with given uri
$ch = curl_init($uri);
// make sure we get the header
curl_setopt($ch, CURLOPT_HEADER, 1);
// make it a http HEAD request
curl_setopt($ch, CURLOPT_NOBODY, 1);
// if auth is needed, do it here
if (!empty($user) && !empty($pw))
{
$headers = array('Authorization: Basic ' . base64_encode($user.':'.$pw));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
$okay = curl_exec($ch);
curl_close($ch);
// get the output buffer
$head = ob_get_contents();
// clean the output buffer and return to previous
// buffer settings
ob_end_clean();

echo ‘
head–>’.$head.’<—-end
‘;

// gets you the numeric value from the Content-Length
// field in the http header
$regex = ‘/Content-Length:s([0-9].+?)s/’;
$count = preg_match($regex, $head, $matches);

// if there was a Content-Length field, its value
// will now be in $matches[1]
if (isset($matches[1]))
{
$size = $matches[1];
}
else
{
$size = ‘unknown’;
}
//$last=round($size/(1024*1024),3);
//return $last.’ MB’;
return $size;
}

3.fsock获取远程文件大小的办法
先给函数
function getFileSize($url){
$url = parse_url($url);
if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){
fputs($fp,”GET “.(empty($url['path'])?’/':$url['path']).” HTTP/1.1rn”);
fputs($fp,”Host:$url[host]rnrn”);
while(!feof($fp)){
$tmp = fgets($fp);
if(trim($tmp) == ”){
break;
}else if(preg_match(’/Content-Length:(.*)/si’,$tmp,$arr)){
return trim($arr[1]);
}
}
return null;
}else{
return null;
}
}

哪个获取远程文件大小最快?
针对同一个url进行测试,curl > fsock > getheader
针对不同url测试,结果还是 curl > fsock > getheader
当然也许这个测试是不准确的,但getheader函数是明显要慢一些的

考虑到curl模块没有fsock那么普及,所以我自己还是用后面一个

速度上的差别大约是 curl比fsock快0.2秒,fsock比getheader快0.2秒。

远程文件的大小拿来干嘛用?
好像某些人用来分块下载文件
我是拿来判断远程文件是否更新(虽然不准),其他人有什么好办法不?给我留言吧

oracle改字段名

alter table tbname rename column internaltype to intervaltype;

oracle锁表

如果一个用户正在更新某张表但没有提交,另一个用户就不能对同一张表使用update命令操作

        SimpleDateFormat sdfParse = new SimpleDateFormat(”MMMMM dd, yyyy”, Locale.ENGLISH);
        SimpleDateFormat sdfFormat = new SimpleDateFormat(”yyyy-MM-dd”);
        SimpleDateFormat comFormat = new SimpleDateFormat(”yyyyMMdd”);
       
        long start = System.currentTimeMillis();
        Config.init(”app.properties”);
       
        //prepare db
        StringBuilder sql = null;
        Statement st = null;
        Connection conn = null;
        try{
            Class.forName(Config.get(”DB_DRIVER”)).newInstance();
            conn = DriverManager.getConnection(Config.get(”DB_DSN”), Config.get(”DB_USERNAME”), Config.get(”DB_PASSWORD”));
            st = conn.createStatement();
        }catch(InstantiationException e){
            e.printStackTrace();
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }catch(SQLException e){
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
       
        //change timezone
        Calendar calendar = GregorianCalendar.getInstance();
        int millisDiff = TimeZone.getTimeZone(Config.get(”TZ_DATA”)).getRawOffset() - TimeZone.getDefault().getRawOffset();
        calendar.setTimeInMillis(calendar.getTimeInMillis()+millisDiff);
       
        Calendar calYesterday = (Calendar)calendar.clone();
        calYesterday.add(Calendar.DAY_OF_YEAR, -1);

        Calendar calLastWeekDay = (Calendar)calYesterday.clone();
        calLastWeekDay.add(Calendar.DAY_OF_YEAR, - Integer.parseInt(Config.get(”OFFSET_DAYS”)));
       
        System.out.println(”From: “+sdfFormat.format(calLastWeekDay.getTime()));
        System.out.println(”To: “+sdfFormat.format(calYesterday.getTime()));
       
        int i = 0, m = 0;
        HashMap<String, HashMap> data = new HashMap<String, HashMap>();
        HashMap<String, String> item = null;//new HashMap<String, String>()
        String u = Config.get(”START_URL”);
        WebClient client = new WebClient();
        client.setCssEnabled(false);
        client.setJavaScriptEnabled(false);
        client.setRedirectEnabled(true);
        client.setThrowExceptionOnScriptError(false);
        client.setThrowExceptionOnFailingStatusCode(false);
        client.setTimeout(0);
        try {
            //login
            HtmlPage p = (HtmlPage) client.getPage(u);
            HtmlForm form = (HtmlForm) p.getFormByName(”sign_in”);

            HtmlInput email = (HtmlInput) form.getInputByName(”email”);
            HtmlInput pass = (HtmlInput) form.getInputByName(”password”);
            HtmlInput submit = (HtmlInput) form.getInputByValue(”サインイン”);
            email.setValueAttribute(Config.get(”USERNAME”));
            pass.setValueAttribute(Config.get(”PASSWORD”));

            HtmlPage pr = (HtmlPage) submit.click();
           
            //go to report page
            HtmlPage er = client
                    .getPage(”https://the.report.page”);

            form = er.getFormByName(”htmlReport”);
           
            //set options
            form.getInputByValue(”exact”).setChecked(true);
           
            form.getSelectByName(”startMonth”).setSelectedAttribute(String.valueOf(calLastWeekDay.get(Calendar.MONTH)), true);
            form.getSelectByName(”startDay”).setSelectedAttribute(String.valueOf(calLastWeekDay.get(Calendar.DAY_OF_MONTH)), true);
            form.getSelectByName(”startYear”).setSelectedAttribute(String.valueOf(calLastWeekDay.get(Calendar.YEAR)), true);
           
            form.getSelectByName(”endMonth”).setSelectedAttribute(String.valueOf(calYesterday.get(Calendar.MONTH)), true);
            form.getSelectByName(”endDay”).setSelectedAttribute(String.valueOf(calYesterday.get(Calendar.DAY_OF_MONTH)), true);
            form.getSelectByName(”endYear”).setSelectedAttribute(String.valueOf(calYesterday.get(Calendar.YEAR)), true);
           
            HtmlInput gt = form.getInputByValue(”レポートのダウンロード(CSV形式)”);
            InputStream in = null;
           
            //retry if not available
            int retry = 0;
            while(in == null && retry < 50){
                in = gt.click().getWebResponse().getContentAsStream();
                if(in == null){
                    System.out.println(”Data not available! wait for 1 minute…”);
                    Thread.sleep(60000);
                }
                retry++;
            }

            //parse report
            BufferedReader br = new BufferedReader(new InputStreamReader(in, “UTF-8″));
            String line = null, key = null;
            String[] cols = null;
            HashMap<String, String> tmp = null;
            br.readLine();

            while ((line = br.readLine()) != null) {
                i++;
                item = new HashMap<String, String>();
                cols = StringUtils.splitPreserveAllTokens(line, “\t”);//.split(”\t”);
                System.out.println(”line”+i+” = “+cols.length);
                if(cols.length<11 || i<2){
                    for(int k=0; k<cols.length; k++){
                        System.out.println(”cols["+k+"]=”+cols[k]);
                    }
                    continue;
                }

                String settleDate = sdfFormat.format(sdfParse.parse(cols[5]));
                key = cols[2].trim()+settleDate;
                item.put(”OUTGOINGID”, cols[2].trim());
                item.put(”SETTLEDATE”, settleDate);
                if(data.containsKey(key)){
                    tmp = data.get(key);
                    item.put(”ORDERCOUNT”, String.valueOf(Integer.parseInt(tmp.get(”ORDERCOUNT”)) + Integer.parseInt(cols[8].replaceAll(”,”, “”))));
                    item.put(”ORDERAMOUNT”, String.valueOf(Double.parseDouble(tmp.get(”ORDERAMOUNT”)) + Double.parseDouble(cols[9].replace(”¥”, “”).replaceAll(”,”, “”))));
                    item.put(”REVENUE”, String.valueOf(Double.parseDouble(tmp.get(”REVENUE”)) + Double.parseDouble(cols[10].replace(”¥”, “”).replaceAll(”,”, “”))));
                }else{
                    item.put(”ORDERCOUNT”, String.valueOf(Integer.parseInt(cols[8].replaceAll(”,”, “”))));
                    item.put(”ORDERAMOUNT”, String.valueOf(Double.parseDouble(cols[9].replace(”¥”, “”).replaceAll(”,”, “”))));
                    item.put(”REVENUE”, String.valueOf(Double.parseDouble(cols[10].replace(”¥”, “”).replaceAll(”,”, “”))));
                }
                data.put(key, item);
            }
           
            br.close();
            in.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
       
       
        //save report
        for(Entry<String, HashMap> entry:data.entrySet()){
            item = entry.getValue();
            sql = new StringBuilder();
            sql.append(”select OUTGOINGID, SETTLEDATE, sum(REVENUE) as REVENUE from “);
            sql.append(Config.get(”TBL_CPA”));
            sql.append(” where OUTGOINGID=’”);
            sql.append(item.get(”OUTGOINGID”));
            sql.append(”‘ and to_char(SETTLEDATE, ‘yyyy-mm-dd’)=’”);
            sql.append(item.get(”SETTLEDATE”));
            sql.append(”‘ group by OUTGOINGID, SETTLEDATE”);
           
            try{
                st.execute(sql.toString());
   
                double oldRev = 0;
                if(st.getResultSet().next()){
                    oldRev = st.getResultSet().getDouble(”REVENUE”);
                }
                System.out.println(”oldRev=”+oldRev);
                double newRev = Double.parseDouble(item.get(”REVENUE”));
                double varRev = newRev-oldRev;
                if (varRev != 0){
                    System.out.println(”newRev=”+newRev);
                    sql = new StringBuilder();
                    sql.append(”insert into “);
                    sql.append(Config.get(”TBL_CPA”));
                    sql.append(”(WEBSITE, OUTGOINGID, SETTLEDATE, ORDERAMOUNT, ORDERCOUNT, REVENUE, LOADDATE)”);
                    sql.append(”values(1, ‘”);
                    sql.append(item.get(”OUTGOINGID”));
                    sql.append(”‘, to_date(’”);
                    sql.append(item.get(”SETTLEDATE”));
                    sql.append(”‘, ‘yyyy-mm-dd’), “);
                    sql.append(item.get(”ORDERAMOUNT”));
                    sql.append(”,”);
                    sql.append(item.get(”ORDERCOUNT”));
                    sql.append(”,”);
                   
                    sql.append(String.valueOf(varRev));
                    sql.append(”, to_date(’”);
                    sql.append(sdfFormat.format(calYesterday.getTime()));//
                    sql.append(”‘, ‘yyyy-mm-dd’))”);
                   
                    st.execute(sql.toString());
                   
                    m++;
                }else{
                    System.out.println(”Found no change: “+item.get(”OUTGOINGID”)+” : “+item.get(”SETTLEDATE”));
                }
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
        System.out.println(”total=”+i+”; matched=”+m);
       
        //write log
        sql = new StringBuilder();
        sql.append(”begin user.log_proceduce(’the_site’, ‘cpa_”);
        sql.append(comFormat.format(calYesterday.getTime()));
        sql.append(”.dat’,”);
        sql.append(m);
        sql.append(”,0, null, ‘revenue’); end;”);
       
        try{
            st.execute(sql.toString());
        }catch(SQLException e){
            e.printStackTrace();
        }
       
        client = null;
        long cost = (System.currentTimeMillis()-start)/1000;
        System.out.println(”cost time: “+String.valueOf(cost)+” secs.”);

什么是云计算

  云理论是实现概念的定性值与数字的定量值之间自然转换的有力工具。

 

  本文在云理论的基础上,提出了实现概念计算(也叫简化计算)的云计算方法。概述了云模型与不确定推理;给出了计算的逻辑描述,将计算过程抽象成 为推理过程;运用机器学习的方法,给出了计算云化的过程,并且采用不确定推理的方法,给出了云的计算过程;简单阐述了云化计算的系统实现。

 

  随着网络的日益普及,“网络存储”这样的服务也日益深入人心,有了众多的使用者,网络服务业方面的开发商自然不会错过这个大市场。几天前,微软 推出了Windows Live SkyDrive,并已经在互联网上全面进行测试,虽然容量仅仅为500MB,但是毕竟是免费的,使用的人数量极为可观。而谷歌也不是等闲之 辈,SkyDrive刚刚登场就推出了自己的超大容量网络存储方案,不过收取的费用上还需要商榷。另外,苹果公司开发的.Mac平台也瞄准了“网络存储” 这块大蛋糕,随时准备加入这场 “战争”。

 

  近日,arstechnica等国外各大网站发表了一篇名为《Google, Microsoft and Apple building online storage havens: you win》的文章,引起了全球范围内网友的热烈讨论,微软、谷歌、苹果的“粉丝”在各大论坛议论纷纷,强烈支持各自的“阵营”,一时间硝烟四起,网络存储三 强鼎立的局面已经日渐明显。

 

  微软公司的SkyDrive走的是纯免费路线,不过不排除这只是微软公司的“鱼饵”,毕竟天上还是不会掉馅饼的。谷歌公司则直接与美元挂钩,要 想用我的服务,当然可以,而且非常欢迎,但是容量的大小是要用美元来衡量的。从2.8GB升级到2.8GB+6GB也许我们都还可以接受,但是500美元 直接买下 250GB的空间则有些奢侈了,而且仅局限于谷歌本身的服务拓展性也太小了。苹果公司的.Mac平台之前就已经有网络存储的服务了,不过现在容量却已经从 当时极不起眼的1GB升级到了10GB,同样是99美元的.Mac平台使用年费,加量不加价是感觉还是不错的。

 

  竞争必然会引起降价和服务质量的提升,相信这也是我们普通用户希望看到的,而网络存储全面普及的时代也将来临,希望从“云计算”(Cloud computing)的“云存储”发展起来的网络存储能够带给我们更多的惊喜,正如目前的IM即时通讯软件那样百花齐放。
Read the rest of this entry »

陈省身
(庆祝自然科学基金制设立15周年和国家自然科学基金委员会成立10周年的讲演)

    张存浩先生要我讲点数学,这么短的时间,而数学这么大,只好举几个要点谈谈。

    数学是什么?数学是根据某些假设,用逻辑的推理得到结论,因为用这么简单的方法,所以数学是一门坚固的科学,它得到的结论是很有效的。这样的结论自然对学问的各方面都很有应用,不过有一点很奇怪的,就是这种应用的范围非常大。

    最初你用几个数或画几个图就得到的一些结论,而由此引起的发展却常常令人难以想象。在这个发展过程中,我认为不仅在数学上最重要,而且在人类文化史上也非常突出的就是Euclid在《几何原本》。这是第一本系统性的书,主要的目的是研究空间的性质。这些性质都可以从很简单的公理用逻辑的推理得到。这是一本关于整个数学的书,不仅仅限于几何学。例如,Euclid书上首先证明素数的个数是无穷的,这便是一个算术的结论。随着推理的复杂化,便有许多“深刻”的定理,需要很长的证明。例如 ,有些解析数论定理的证明,便需几十条引理。

    最初,用简单的方法证明几个结果,大家很欣赏,也很重要。后来方法发展了,便产生很复杂的推理,有些定理需要几十页才能证明。现在有的结果的证明甚至上百页,上千页。看到这么复杂的证明,我们固然惊叹某些数学家高超的技巧和深厚的功力,但心中难免产生一些疑问,甚或有些无所适从的感觉。所以我想,日后数学的重要进展,在于引进观念,使问题简化。
先讲讲有限单群的问题。

1.有限单群

    我们知道,数学的发展中有一个基本观念——群。群也是数学之中各方面的最基本的观念。怎样研究群的结构呢?最简单的方法是讨论它的子群,再由小的群的结构慢慢构造大一些的群。群中最重要的一种群是有限群,而有限群是一个难极了的题目,需要有特别的方法,特别的观念去研究。

    命G为群,g∈G为一子群,如对任何g∈G-1g H g ∈H,则称H为正规的(nomal). 正规子群存在,可使G的研究变为子群H及商群G/H的研究。这样就有一个很自然的问题,有哪些有限的单群(*** group).单群除了它自己和单位元(identity)之外,没有其他的非平凡的正规子群(normalsubgroup). 数学上称其为简单群,其实一点也不简单。

    有限群论的一个深刻的定理是Fei-Thompson定理:非交换单群的阶(数)(即群中元素的个数)是偶数。更不寻常的是除了某些大类(素数阶循环群Zp,交错群An(n>=5), Lie型单群)外,后来发现了26个零零碎碎的有限单群(散在单群,离散单群), 现在知道,最大的散在单群的阶是241×320×59×76×112×133×17×19×23×29×31×41×47×59×71 =808,017…=1054

    这是很大的单群,由B。Fisher 和 R。L.Griess两位数学家所发现,数学家称它为魔群(怪物,Monster).

    单群的权威数学家D.Gorenstein相信有限单群都在这里了,这当然是数学上一个很好的结果。把单群都确定了,就像化学家把元素都确定了,物理学家把核子的结构都确定了一样。可这里有个缺点,Gorenstein并未将证明定出来。他讲若将证明写出来至少有1000页,而1000页的证明无论如何很容易有错误。可是Gorenstein又说,不要紧,若有错误,这个错误一定可以补救。你相信不相信?数学界有些人怀疑这样的证明是否必要。现在计算机的出现,许多问题可以验证到很大的数,是否还需要严格的证明,已变成数学上一个有争论的问题。这个争论看来一时无法解决。段学复先生是我的老朋友,是有限群论的专家,也许我们可以问一下他的意见。我个人觉得这个问题很难回答。不过数学家有个自由,当你不能做或不喜欢做一个问题时,你完全不必投入,你只需做一些你能做或喜欢做的问题。

2.四色问题

     把地图着色,使得邻国有不同的颜色,需要几种颜色?经验告诉我们,四色够了。但是严格的证明极难。这就是有各的四色问题。

    地图不一定在球面上,也可在亏格高的的曲面上(一个亏格高为g的曲面在拓扑上讲是球面加g个把手;亏格为1的曲面可设想为环面)。可惊奇的是,这个着色问题,对于g>=1的曲面完全解决了。可以证明:有整数χ(g),满足条件:在亏格为g的曲面上任何地图都可用χ(g)种颜色着色,使邻国有不同颜色,且有地图至少需要χ(g) 种颜色。这个数在g>=1时可以完全确定。我们知道χ(1)=7,即环面上的地图可用七色着色,四色不够。

    令人费解的是,证明地球上四色定理,困难多了。现有的证明,需要计算机的帮助,与传统的证明不同。而我们觉得最简单的情况,即我们住的地球球面上的着色问题反而特别复杂。把扩充的问题解决了,得到了很有意思的结论。但是回到基本问题,反而更难。

    这种现象不止这一个,还有很多,一个例子是所谓的低维拓扑,即推广的问题更简单,而本身核心的问题反而不易克服,这确是数学神秘性的一面。

3.椭圆曲线

    最近的数学进展,最受人注意的结果就是Fermat大定理的证明。Fermat大定理说:方程式xn + yn=zn ,n>2没有非平凡的整数解(即xyz<>0). 这个传说了300年的结果的证明,最近由Princeton大学的教授Andrew J.Wiles(英国数学家)给出。但证明中缺一段,是由他的学生Richard Tarlor补充的。因此,Fermat 定理现在已经有了一个完全的证明。整个文章发表在最近一期的“Annals of Mathematics”(Prinston大学杂志,1996,第一期)整个一期登的是Wiles与Taylor的论文,证明Fermat定理(Wiles为此同Robert Langlands 获得了1996年的Wolf奖与National Academy Science Award in Mathematics).

    有意思的是,证明这个定理的关键是椭圆曲线。这是代数数论的一个分支。有以下一则故事。英国的大数学家G.H.Hardy(1877-1947)有一天去医院探望他的朋友,印度天才数学家S.A.Ramanujan(1887-1920).Hardy 的汽车号是1729。他向Ramanujan说,这个数目没有意思。Ramanujan说,不然,这是可以用两种不同方法写为2个立方之和的最小的数,如1729=13+123=93+103这结果可用椭圆曲线论来证明。

    我们知道,要找一个一般方程的解不容易的,而要找一个系数为整数的多项式方程P(x,y) = 0(传统上叫Diophantine方程)的整数解更困难。因为普通的解不会是整数,这是数论中的一个主要问题。

    需要说明的,在Wiles 完成这个证明之前,我有一位在Berkley的朋友Kenneth A.Ribet ,他有重要的贡献。他证明了一日本数学家Yutaka Taniyama的某一个关于椭圆曲线的假设包含Fermat定理。于是可将Fermat 定理变为一个关于椭圆曲线的定理。Wiles根据Ribet的结果又继续经过了许多步骤,以至达到最后的证明。即在复平面内得到曲线。由复变函数论知道,复平面内的曲线就成为一个Riemann曲面。Riemann曲面为定向曲面,它可以是球,也可以是球加上好多把手。其中有一个最简单的情形,就是一个球加上一个把手,即一个环面。环面是个群,且为可交换群。

    所谓椭圆曲线,就是把这个曲线看成复平面内亏格(genus)等于1的复曲线。亏格等于1的曲线有一个非常深刻而巧妙的性质。即它上面的点有一个可交换群的构造。两个点可以加起来,且有群的性质。这是很重要的性质。椭圆曲线与椭圆无关。原因是,若所有曲线的亏格大于1,相当于Riemann曲面有一个Poincare度量,它的曲率等于1,所有曲面若其曲率等于—1,则叫做双曲的。亏格等于1的叫椭圆。亏格等于0的叫抛物线。椭圆曲线的研究是数论中非常重要,非常有意思的方面。最近一期的科学杂志(Science),有位先生写了一篇关于椭圆曲线的文章。椭圆曲线在电报的密码上有应用。而中国也有很多人在做代数几何与代数数论方面的工作。最近在黄山有一个国际性的,题为“代数几何与代数数论”的会议,由冯克勤先生主持。

    从这个定理我们应认识到:高深的数学是必要的。Fermat定理的结论虽然简单,但它蕴藏着许多数学的关系,远远超出结论中的数学观念。这些关系日新月异,十分神妙,学问之奥,令人拜赏。

    我相信,Fermat定理不能用初等方法证明,这种努力是徒劳的。数学是一个整体,一定要吸取几千年所有的进步。

4.拓扑与量子场论

    1995年初的一天晚上,我在家看晚间电视新闻。突然,我听到自己的名字,大吃一惊。原来加利福尼亚发一种彩票,头彩300万美元,若无人中彩的话,可以积累到下一次抽彩。我从前的一个学生,名Robert Uomini, 中了头彩美金2200万元。他曾选过我的本科课,当时还对微分几何很有兴趣。他很念旧,以100万美元捐赠加州大学,设立“陈省身讲座”。学校决定,以此讲座邀请名学者为访问教授。第一位应邀的为英国数学家Sir Michael Atiyah. 他到中国不止一次。他是英国影响最大的数学家,剑桥大学三一学院的院长,则卸任的英国皇家协会会长。Atiyah很会讲学,也很博学,他的报告有很大的吸引力。他作了八讲,讲题是“拓扑与量子场论”。

    这是当前一个热门的课题,把高深的数学和物理联系起来了,导出了深刻的结果。现在拓扑在物理上有非常重要的应用,这跟杨振宁的Yang-Mills场方程有很密切的关系。

    杨先生喜欢说,你们数学家写的东西,我们学物理的人看不懂,等于另外一种文字。我想我们搞数学的人有责任把我们的结果,写成不是本行的人也至少知道你讲的是怎么一回事。

    物理学,量子力学,尤其是量子场论与数学的关系其实并不复杂。说到数学的应用,讲一下矢量空间,Euclid空间就是一个矢量空间。再进一步,多个矢量空间构成一个拓扑空间,这就是所谓的矢量丛,即一束这样的空间。这样的空间有一些简单的性质。比如说,局部来讲,这种矢量空间是一个chart,是一个集,可用坐标来表示。结果发现矢量丛这种空间在物理上很有用。物理学的一个基本观念是“场”。最简单的场是电磁场,尤为近代生活的一部分。电磁场的“势”适合Maxwell方程。Hermann Weyl第一个看出这个势不是一个确定的函数。它可以变化。这在物理上叫做规范(gauge, 不完全确定的,可以变化的),这就是物理上规范场论的第一个情形。

    物理上有4种场:电磁场,引力场,强作用场和弱作用场。现在知道,这些场都是规范场。即数学系上是一束矢量空间,用一个线性群来缝住的。电磁场的重要推广,是Yang-Mills的规范场论。杨先生的伟大贡献就是在SU(2)(special unitary group in two variables)情形下得到物理意义明确的规范场,即同位旋(isospin)规范场,这种将数学现象给以物理的解释,是件了不起的工作,因为以往的Maxwell场论是一个可交换的群。现在变为在SU(2),群是不能交换的。而实际上,物理中找到了这样的场,这是科学上一个伟大的发展。数学家可以自豪的是,物理学家所需的几何观念和工具,在数学上已经发展了。

    杨先生之所以有这么大的成就,其中一个很重要的,很了不起的原因是除了物理的感觉以外,他有很坚实的数学基础。他能够在这大堆复杂的方程中看出某些规律,它们具有某种基本的数学性质。Yang-Mills方程的数学基础是纤维丛。这种观念Dirac就曾有过。Dirac的一篇基本论文中就讲到这种数学。但Dirac没有数学的工具。所以他在讲这种观念时,不但数学家不懂,就连物理学家也不懂。不过,其中有一个到现在还未解决的物理含义,即有否磁单极(magnetic monople)。可能会有。就是说,有否这样的场,它的曲率不等于0(曲率是度量场的复杂性的)?物理上要是发现了这种场,会是件不得了的事实。这些观念的数学不简单。

    Yang-Mills方程反过来影响到拓扑。现在的基础数学中,所谓低维拓扑(二维,三维,四维)非常受人注意。因为物理空间是四维空间。而四维空间有许多奇妙的性质。我们知道代数几何,曲线论,复变函数论等许多基础数学理论是二维拓扑。而现在必到四维,四维有spinor理论,有quantum结构。四维与物理更接近。它的结构是Lorentz结构,而不是Riemann结构。这方面有很多工作可做。根据Yang-Mills方程,对于四维拓扑,Atiyah的学生英国数学家Simon Donaldson有很重要的贡献。其中有一个结果就是利用Yang-Mills方程证明四维Euclid空间R4有无数微分结构与其标准结构不同。这一结果最近又由Seiberg-Witten的新方程大大的简化了。这是最近拓扑在微分几何,理论物理应用方面最引人注意的进展。

    二维流形的发展有一段光荣的历史,牵涉到许多深刻的数学,可以断言,三维,四维流形将更为丰富和神妙。

5.球装问题(Sphere Packing)

    如何把一定的空间装得最紧,显然是一个实际而重要的问题。项武义教授最近在这方面做了很重要的工作。这里先介绍一个有关的问题:围着一个球,可以放几个同样大小的球?我们不妨假定球的半径为一,即单位球。在平面情形,绕一单位圆我们显然可以放6个单位圆。而在三维空间的情况则更为复杂。如果把单位球绕单位球相切,不难证明,12个球是放得进的。这时虽然还剩下许多空间,但不可能放进第13个球。要证明这一结论并不容易。当年Newton与Gregory有个讨论。Newton 说第13个球装不进,Gregory说也许可以。这个争论长期悬而未决。一直到1953年,K.Schutte和B.L.van der Waerden才给了一个证明。这个证明是很复杂的。

    一个更自然的问题是怎样把一个立方体空间用大小相同的球装得最紧。衡量装得是否紧凑的尺度是密度(density),即所装的球的总的体积和立方体空间的体积的比例。

    Kepler于1611年提出了一个猜想:他认为立方体的球装的密度不会大于π/(181/2).

    项武义说他证明了这个猜想。可是有人(Gabor Fejes Toth)认为他的证明不完全,甚至有人(Thomas L.Hales)说是错误的。”Mathematical Intelligencer”这个杂志上(1995年),有关于这一问题的讨论,项武义有个答复。Toth 是匈牙利数学家,三代人搞同一个课题。匈牙利数学很发达,在首都布达佩斯有个200多人的几何研究所。我不知道几何中是否有这么多重要的问题需要这么多人去做。最年轻的Toth在“Mathematics Reviews”中有篇关于项的文章的评论。他说项的文章有些定理没有详细的证明。天下的事情就是这样。做重要工作有争议的时候,便产生一些有趣的现象。不过他觉得项的意思是对的。不但项的意思是对的,甚至表示这个意思他从前也有。最近项武义抒他认为没有的证明都有写出来了。

    最主要的,我要跟大家说的是立体几何在数学中是很重要而因难的部分。即使平面几何也可能很难。到了立体时,则更为复杂。近年来对碳60(C60)的研究显示了几何在化学中的应用。多面体图形的几何性质对固态物理也有重大的作用。。球装不过是立体几何的一个问题。立体几何是大有前途的。

6.Finsler几何

    最近经我鼓励,Finsler几何有重大发展,作简要报告如下:

    在(x,y)平面上设积分s = ∫ab F(x,y,dy/dx)dx其中y是x的未知函数。求这个积分的极小值,就是第一个变分学的问题。称积分s为弧长,把观念几何化,即得Finsler几何。

    Gauss看出,在特别情形:

    F2 =E(x,y) + 2F(x,y) y’ +G(x,y)y’2 ,y’=dy/dx其中E,F,G为x,y的函数,几何性质特别简单。1854年,Riemann的讲演讨论了整个情形,创立了Riemann-Finsler几何。百余年来,Riemann几何在物理中有重要的应用,而整体Riemann几何的发展更是近代数学的核心部分。

    Riemann的几何基础包含Finsler几何。我们最近几年的工作,把Riemann几何的发展,局部的和整体的,完全推广到Finsler几何,而且很简单。因此,我觉得以后的微分几何课或Riemann几何课都应该讲一般情形.最近有几个拓扑问题.最主要的一个是Riemann流形的一个重要性质,即英国数学家Hodge的调和积分。现在有2个年轻人,一个是David Bao, 另一个是他的美国学生,抒这个Hodge的调和积分推广到了Finsler情形。这将是微分几何的一块新园地,预料前景无限。1995年夏在美国西雅图有一Finsler几何的国际会议。其论文集已于今年由美国数学会出版.

    Finsler 几何在1900年有名的Hilbert演讲中是第23个问题。

7.中国的数学

    数学研究的最高标准是创造性:要达到前人未到的境界,要找着最深刻的关键。从另一点看,数学的范围,是无垠的。我愿借此机会介绍一下科学出版社从俄文翻译的《数学百科全书》,全书5大卷,每卷约千页。中国能出版这样的巨著,即是翻译,也是一项可喜的在就。这是一部十分完备的百科全书,值得赞扬的。

    对着如此的学问大海,入门必须领导,便需要权威性的学校和研究所。数学是活的,不断有杰出的贡献,令人赞赏佩服。但一个国家,比较可以集中某些方面,不必完全赶时髦。当年芬兰的复变函数论,波兰的纯粹数学,都是专精一门而有成就的例子。

    中国应该发展实力较强的方面。但由百科全书的例子,可看出中国的数学是全面的。这是一个可喜的现象。

    中国的财富在“人民”。中国的数学政策,除了鼓励尖端的研究以外,应该用来提高一般的数学水平。我有两个建议:(1)设立数学讲座,待遇从优,其资格可能是对数学发展有重大贡献的人;(2)设立新的数学中心,似乎成都,西安,广州都是可能的地点。中心应有相当的经费,部分可由地方负担,或私人筹措。近年因为国家开放,年轻人都想经商赚钱,当然国家社会需要这样的人。但是做科学的乐趣是一般不能理解的。在科学上做了基本的贡献,有历史的意义。我想对于许多人,这是一项了不得的成就。在岗位上专心学问,提携后进,“得天下之英才而教育之“,应该是十分愉快的事情。

    一个实际的问题,是个人应否读数学。Hardy 说,一个条件是看你是否比老师强。这也许太强一些。我想学习应不觉困难,读名著能很快与作者联系,都是测验。数学是小科学,可以关起门来做。在一个多面竞争的社会中,是一项有优点的职业,即使你有若干能力。

    中国的数学有相当水平。年来政治多变,达此情况,足风中华民族的勤劳本质。从前一个数学家的最高标准,是从国外名大学获得博士学位。我们国家现在所包需做的,是充实各大学的研究院,充实博士学位,人才由自己训练。

摘要:我国著名青少年教育家孙云晓先生曾说:“好习惯对儿童来说是命运的主宰,是成功的轨道,是终身的财富,是人生的格调”。……

我国著名青少年教育家孙云晓先生曾说:“好习惯对儿童来说是命运的主宰,是成功的轨道,是终身的财富,是人生的格调”。因此,作为父母,一定要在孩子的习惯培养上下大功夫。培养孩子的良好习惯可从以下几个方面做起:

(一)生活习惯

生活是人生第一课,也是最基本的课程,生活习惯的好坏,不仅影响幼儿的身心健康而且也是幼儿综合素质的体现。它饮食、 起居、排便、卫生等习惯,做到按时睡眠、起床、安静睡眠并有正确的睡姿,不挑食、不偏食、细嚼慢咽,饭前便后正确洗手、早晚刷牙,饭后漱口等。父母要根据 孩子的年龄特点,适当为孩子立规矩,如:玩具玩完后必须放回原处,逐渐养成自己的东西自己整理和爱清洁,讲卫生,有条理的好习惯。

(二)文明礼貌习惯

礼貌看起来是种外在行为的表现,实际上它反映着人的内心修养,体现一个人自尊和尊重他人的意识。父母要教育孩子,学习使用文明礼貌用语,如“您好 ”、“请”、“谢谢”、“对不起”、“请原谅”。同时,要注意培养孩子的文明举止,见人要热情打招呼,别人问话要先学会倾听,并有礼貌地回答,保持服装整 洁,站有站相,坐有坐相。

(三)道德习惯

养成良好的道德习惯,幼儿才能和别人友好相处,积极追求美好的事物,自觉遵守社会行为规范,具有高度责任感,将来才能成为社会上成熟可敬的人。它包 括各种行为规则,尊敬关爱长辈,不随地地大小便、不损坏花草、树木、爱护公共财务,遵守交通规则,能换位思考、团结友爱等等。

(四)学习习惯

良好的学习习惯对幼儿的学习兴趣与学习成绩有很大的影响,与幼儿的成材直接相关。它包括自主学习、合作学习、探究性学习。学习好的孩子学习习惯都比 较好,而学习不好的孩子多数并不是因为脑子笨,而是没有良好的学习习惯。如:不长时间看电视、玩电脑游戏,不需要父母的督促、陪伴能自觉完成学习任务,学 习专心认真,经常进行广泛的阅读,知道珍惜时间,什么时间做什么事情等。

(五)思维习惯

良好的思维习惯有助于孩子从正确的角度和方面思考问题,有助于孩子能力的锻炼,知识的获取以及运用所学的知识灵活的解决问题。如:感觉接触了解新鲜事物,善于观察,勤于动脑,遇到问题能独立思考和解决。特别是要具有创新精神和创新能力。

(六)劳动习惯

培养孩子爱惜劳动成果,孩子劳动不是为了创造物质和精神财富,而是为了培养初步的劳动习惯,促进孩子身心健康成长。要求自己能做的事情自己做,自己穿脱衣服、学着铺床叠被等,另外帮父母干些家务活,如:帮助摆碗筷、擦桌、扫地、倒垃圾等等。

值得注意的是,在培养孩子各种良好习惯的同时,父母首先要转变自己的观念,增长培养意识,提高自身素质,以身作则。在进行培养时还要注意方式方法,坚持不懈,严格要求。总而言之,播下一种行动,收获一种习惯;播下一种习惯,收获一种命运。

数学不是“数”学

          “数学是一门研究数量关系和空间形式的科学的说法在中国曾经十分流行,这可能与恩格斯著作的长期影响有关。对于数学,今天人们更加认同于如下的说法:

  

  数学是一个完全自成体系的知识领域…数学仅仅讨论它本身想象中的实体及关系(《科学技术百科全书》[麦格劳-希尔图书公司]第1卷数学,科学出版社1980,235-236页);

  

   到1900年,数学已经从实在性中分裂出来了;它已经明显地而且无可挽回地失去了它对自然界真理的所有权,因而变成了一些没有意义的东西的任意公理的必然推论的随从了( 克莱因《古今数学思想》第4册,上海科学技术出版社1979,111页)。

  

  照此说法,数学就不是学了。然而,数学与生俱来的强大应用性并不因为数学已经从实在性中分裂出来了而有稍微的减弱。既是抽象的又有实在的一面,人们逐渐形成了对数学的主流看法——数学的现状一方面是其内在的统一性,另一方面是外界应用的更高的自觉性,数学的两种趋势是从外部寻求新问题和在内部追求统一(美国国家研究委员会《振兴美国数学——90年代的计划》,叶其孝等译,世界图书出版公司1993),而不再局限于给数学下一个定义。

  

   无理数是一个能恰好地描述数学特征的案例。从数学发展史看,人类对无理数的发蒙始于古希腊毕达哥拉斯(Pythagoras,公元前582-497)学 派,但二千四百年后才产生包括无理数在内的实数严格定义;从当今教育的知识体系看,学生在初中阶段开始接触无理数,直到大学毕业却仍然不明白无理数的实质 含义。历史与现实两者的契合正好说明无理数的两面特征,应用性使得它是常见的数学工具之一,而抽象性又使所有非数学工作者不能真正认识它。

  

  数系的扩张过程以自然数为基础,德国数学家克罗内克(Kronecker,1823-1891)说上帝创造了整数,其它一切都是人造的(克莱因《古今数学思想》第4册,上海科学技术出版社1979,41页)。零与自然数的产生源于人类在生存活动中的原始冲动,这一推测想来不会有问题,人的双手有十指与十进制的广泛使用也当然有密切关系;

  

  类似于 2+3=5 的事实产生了加法的概念,然而2加上几会等于1呢?由此需要定义负数:一个数的负数即它与该数之和等于0;进而定义减法。产生零、负自然数,合称整数;

  

  加法的重复进行产生了乘法,2×3=6 就是三个2相加。然而2乘以几会等于1呢?由此需要定义倒数:一个数的倒数即它与该数之积等于1,进而定义除法,产生既约分数,合称有理数。

 

   以上过程不论用抽象的数学语言还是通俗语言来描述都容易为人接受,可以说由于计数、测量的需要而扩大了数系。

  

  最早出现的无理数也与计数、测量有关。乘法的重复进行产生了乘方,23 就是三个2相乘,然而哪个数的平方会等于2呢?毕达哥拉斯学派提出了这个问题,边长为1的正方形的对角线的长度不是既约分数,后来用√2表示对角线的长度,无理数的概念初步形成。

  

   以下是关于√2不是有理数的一个证明,载于欧几里德《几何原本》,但据说是更早的毕达哥拉斯学派所作 :设√2是既约分数p/q,即√2=p/q,则2q2=p2,这表明p2是偶数,p也是偶数(否则若p是奇数则p2是奇数),设p=2k,得 q2=2k2,于是q也是偶数,这与p/q是既约分数矛盾。

  

   虽然开方运算可能产生无理数,但仿照上述办法来扩张数系会遇到困难。例如仅用开方定义新的数例如√2,3√2(后来被称为初等无理数)是不够的; (1+√2) 就不能通过对某有理数开方而得,那么(1+√2)是什么?试作一比较,任何有理数总可以乘以某整数而还原成整数,但(1+√2)的任何次乘方却不可能得到 有理数。

 

   考虑到此,容易想到的办法是用有理数的加减乘除、乘方、开方定义新的数,后来被称为复合无理数,显然它包含了初等无理数。毕竟扩张数系的动力之一是使代数方程有解,例如(1+√2)的产生使得方程x2-2x-1=0有解。

  

  但又有新的问题,挪威数学家阿贝尔(Abel,1802-1829)于1825年证明一般五次方程不能只用根式求解,紧接着法国数学家伽罗瓦(Galois,1811-1832)解决方程须有何种性质才可求根式解的问题,复合无理数立即黯然失色。

  

  数学家顽强地推进,索性将新的数系定义为所有有理系数方程的根(后来称为代数数),有理数、初等无理数、复合无理数都被包括在内。数系的扩张本来是从现实需要出发的问题,但现在已经开始变得抽象了,因为代数数中那些不是有理数、初等无理数、复合无理数的究竟什么样子?这不仅不能回答,似乎也并不重要,重要的是这样的确实存在。

  

  不得不面对的烦恼是,一个代数数的描述与运算都必须通过相关的代数方程的系数,而且代数方程的根通常不是唯一的。

  

  彻底摧毁这一定义方式的是1844年柳维尔(Liouville,1809-1882)证明非代数数的存在。早在1830年代,e=1+(1/1!)+(1+2!)+…+(1/n!)+…与圆周率π被证明是无理数,在柳维尔的结论宣布后不久,1873年、1883年数学家埃尔米特(Hermite,1822-1901)与林德曼(Lindemann,1852-1939)先后证明e,π不是代数数。

  

  由于有理数可表示成有限小数或无限循环小数,人们想到用无限不循环小数来定义无理数,这也是直至19世纪中叶以前的实际做法。它看起来很通俗,不明白无理数奥妙的人大体也是这样理解无理数的。但这样做遇到的困难更大:关键的问题是你无法判断一个数是无限不循环的,也不能将两个无限不循环的数进行加减乘除。

  

  不循环的无限小数当然是难以认识,如果我们翻用一下列夫?托尔斯泰著名小说《安娜?卡列尼娜》中的名句幸福的家庭都是幸福的;不幸的家庭各有各的不幸,那就是:循环的小数都是一样的循环,不循环的小数各有各的不循环!16世纪德国数学家施蒂费尔(Stifel,约1486-1567)说当我们想把它们数出来(用十进小数表示)时,…就发现它们无止境地往远处跑,因而没有一个无理数实质上是能被我们准确掌握住的…。而本身缺乏准确性的东西就不能称其为真正的数…。所以,正如无穷大的数并非数一样,无理数也不是真正的数,而是隐藏在一种无穷迷雾后面的东西(克莱因《古今数学思想》第1册,上海科学技术出版社1979, 292页)

  

  克莱因指出所有在Weierstrass(德国数学家外尔斯特拉斯1815-1897——引注)之前引进无理数的人都采用了这样的概念,即无理数是一个以有理数为项的无穷序列的极限。但是这个极限,假如是无理数,在逻辑上是不存在的,除非无理数已经有了定义(克莱因《古今数学思想》第4册,上海科学技术出版社1979,46页)。

  

  一本著名的数学教材将无限不循环小数称为中学生的实数用这个定义,实数是非常具体的对象,但在定义加法和乘法时所包含的困难是不容忽视的,在介绍了加法定义的一种方式及指出乘法可类似处理后说不过,乘法逆元素的存在将又一次是最困难的并就此打住(斯皮瓦克《微积分》下册,张毓贤等译,人民教育出版社1981,695页)。

  

  根据施蒂费尔的说法我们只能说√2不是有理数,而不能说它是无理数,因为我们还没有定义什么是无理数。前述古希腊人关于√2无理性的证明应当是不存在这样的有理数使其平方等于2。由于除了有理数就没有数,√2根本就不是

  

   现在可以看到无理数问题的困难所在:从开方运算的逆运算与确定边长为1的正方形的对角线长度的需要,都应当在有理数的基础上再扩大,这与以往从自然数扩 大到整数、从整数扩大到有理数没有什么两样。然而在具体做法上,利用运算的逆向进行或通过对有理数进行代数运算或用代数方程的根而产生的是不完全的,无限不循环小数的说法又不合理不严格。这一困难使数学史上数系的扩张停滞了两千多年。

  

   进一步扩张数系的必要性是不成问题的,在很长时间里人们将无理数理解为其近似值,从实用的角度来说,一个没有严格定义的东西难道就不能存在、不能使用 吗?但是数学奉行严密逻辑的理念自欧几里德《几何原本》以来就坚定不移,不以现实为背景的非欧几何的产生(18世纪)加深了数学家对于摆脱实在性的趋同。

  

  从整数产生有理数曾经主要是根据测量、计数的需要,但现在要回到始点从头做起。例如纯粹从数学发展的内在动力与逻辑展开来定义有理数:

  

  设p,q是整数,则数偶(p,q)称为有理数,规定两个有理数的乘法、加法规则,证明它们符合交换律、结合律等等。这是一个用以参考的范式:将某种对象定义为实数,其目标与要求应当是能包含以上已有的所有对象,有通常的加法乘法且符合运算规则。

  

  以下介绍的两种定义中的仅指有理数,而实数是用按特定方式构成的那样一些对象东西

  

  戴德金(Dadekind,1831-1916)定义:一个实数定义为有理数的一个集合,这个集合是数轴上所有有理数从某处分开的左边一半(数学术语为分割),且没有最大的数。

  

  按戴德金的定义,实数集合的每个元是有理数集合的一个子集,一个实数是有理数的一个集合。例如所有小于2的有理数集合确定一个实数,它就是2;所有其平方小于2的有理数集合确定一个实数,它就是√2。须注意这两例有一个重要区别,对应于有理数的分割右半有最小的数2,对应于无理数的分割右半没有最小的数。戴德金的定义来源于这样的启示:每个有理数作为有长度的线段,对应着数轴上的坐标。边长为1的正方形的对角线线段也应对应数轴上的一个点,这意味着如果只有有理数,数轴上存有空隙”——尽管有理数非常稠密。应当填补这些空隙使数轴成为完美的,欧几里德《几何原本》中曾记载过这一思想的雏形。

  

  康托(Cantor,1845-1918)定义:一个实数定义为有理数的柯西序列a1,a2,…,an,此处an都是有理数,且满足对于任意自然数p必有自然数N,使当m>N,n>N时有|am-an|<1/q。康托的定义来源于如下的启示:若只限于有理数,则微积分的命题单调有界数列必收敛可能不成立,例如有理数数列x0=1,xn+1=(xn+2/xn)/2 是单调递减的、有界的,其极限是√2。

  

  在以上两种定义中还要分别规定实数之间的大小比较、如何运算然后证明运算是符合熟知的规则的。另一个需要解决的重要问题是,这两种实数定义所规定的这些东西在抽象意义上是不是相同的?如果不能肯定回答岂不会带来一片混乱,何况还会有其它形式的实数定义。这些问题当然都已一一妥帖解决。

 

    试对两种定义做一比较评判:康托的定义较实在,由于明显涉及了无限(必定有时间如何发展的直觉)的概念称为是动态的。例如,说数列 1,1.4,1.41,1.414,1.4142,…定义无理数√2,必须附加对于数列变化规律的种种说明。戴德金的定义较虚幻,但是是静态的,它摆 脱了由时间直觉所附加的束缚。

  

  为了加深印象,现在我们必须用最简明最通俗的语言来描述一下实数:按戴德金的说法,一个实数是有理数的一个集合;按康托的说法,一个实数是有理数的一个(柯西)序列。数学史上还有别的实数定义,在那里实数又有另外一副面孔。

  

  几乎在构建实数体系的同时,1874年康托还证明了无理数比有理数多得多、非代数数比代数数多得多!这也意味着,无形的、不是根式的无理数竟比直观的、根式的无理数多得多!数轴上代表有理数的点虽然是稠密的——任何两个有理数点之间恒有无数多有理数点,但是除有理数点外的空隙更多。空隙一旦填满,稠密概念发展成了连续的概念,数轴上点与实数完全对应,无理数问题画上了永远的句号。这里涉及关于集合中元素个数的比较问题,本文限于篇幅就此打住了。

 

  实数体系的建立,使得诸如3√2表示什么得以明确,高等数学中命题单调有界数列必收敛、闭区间连续函数的性质得以证明。

  

  然而从应用角度或对于非数学工作者(绝大多数人)而言,却是再次回到古希腊。无理数仍然是小数,人们并不真正关心它的无尽不循环,事实上也无法弄清楚,只是按需要取作适当位数的近似值。例如说到圆周率π,为什么要关心它是循环的还是不循环的呢?十位小数就足以使地球周界准确到一英寸以内,三十位小数便能使整个可见宇宙的四周准确到连最强大的显微镜都不能分辨的一个量(丹齐克《数:科学的语言》苏仲湘译,上海教育出版社2000年,98页)。

 

  至于数学家,在定义了无理数之后依然两手空空,数学家所知道的无理数确实少的可怜:知道得最多的只是各式各样的根式,这是古希腊人即已知道的;其次是π与e两个非代数数。那些比代数数多得多的无理数在哪儿?1900年数学家希尔伯特(Hilbert,1862-1943)提出著名的23个数学问题即包括了这一内容。以后的进展是,数学家证明若α是代数数(除0与1)、β是无理的代数数,则αβ是非代数数(1934年)。然而,若稍微追问一句(π+e)是无理数还是有理数?则至今都没有严密的答案。数学家心安理得的是建立了无懈可击的实数体系,在坚实的基础上,任何闲言碎语都是不足道的。无理数所体现的完美无缺、一丝不苟的纯粹理性与无孔不入、尽人皆知的世俗应用,可谓占尽天上人间风光,正是数学的魅力之所在。

分类

 

3月 2010
« 7    
1234567
891011121314
15161718192021
22232425262728
293031  

Blogroll