周超
摘 要 在數(shù)學(xué)的學(xué)習(xí)研究,以及一切用到數(shù)學(xué)的地方,數(shù)學(xué)公式是無法離開的東西,數(shù)學(xué)公式使抽象的數(shù)學(xué)具體化成為了一種人類可以理解并交流的語言。然而在數(shù)學(xué)發(fā)展的幾千年中,參與者只有人類自己,自然而然的數(shù)學(xué)公式的發(fā)展也是向著符合人類思考方式的方向發(fā)展。本文結(jié)合計(jì)算機(jī)技術(shù)對(duì)數(shù)學(xué)公式的立體結(jié)構(gòu)進(jìn)行了研究。
【關(guān)鍵詞】數(shù)學(xué)公式 計(jì)算機(jī) 立體結(jié)構(gòu)
1 結(jié)構(gòu)概述
在數(shù)學(xué)的學(xué)習(xí)研究,以及一切用到數(shù)學(xué)的地方,數(shù)學(xué)公式是無法離開的東西,數(shù)學(xué)公式使抽象的數(shù)學(xué)具體化成為了一種人類可以理解并交流的語言。
然而在數(shù)學(xué)發(fā)展的幾千年中,參與者只有人類自己,自然而然的數(shù)學(xué)公式的發(fā)展也是向著符合人類思考方式的方向發(fā)展。
現(xiàn)在隨著計(jì)算機(jī)的發(fā)展,數(shù)學(xué)的研究已經(jīng)不止人類一個(gè)參與者,從幾十年前數(shù)學(xué)就已經(jīng)離不開“計(jì)算機(jī)”這個(gè)強(qiáng)有力的參與者,然而這幾十年中計(jì)算機(jī)的參與過程一直強(qiáng)行使用人類的數(shù)學(xué)語言,導(dǎo)致處理過程較為復(fù)雜。
現(xiàn)在使用的主要數(shù)學(xué)公式由阿拉伯?dāng)?shù)字,英文字母,希臘字母,以及一些專用符號(hào)組成,其結(jié)構(gòu)為線性的字符組合。
我所構(gòu)建的結(jié)構(gòu)其組成元素與傳統(tǒng)數(shù)學(xué)公式?jīng)]有太大不同,其區(qū)別主要在于結(jié)構(gòu)上是立體的樹形圖,而不是線性結(jié)構(gòu)(數(shù)組)。這樣做的優(yōu)點(diǎn)是式使公式更加接近數(shù)學(xué)本身,舉例來說:
如圖1所示,(a+b)*(a-b)在傳統(tǒng)的表現(xiàn)形式中是這個(gè)樣子,其數(shù)學(xué)含義是兩個(gè)部分相乘,但是從公式來看他是一串沒有本質(zhì)差別的信息,人類可以方便的通過*將其分割成兩部分并且明白兩部分間的關(guān)系,然而計(jì)算機(jī)處理就需要強(qiáng)行模仿人類的這一過程,找到“*”并且將其分割為兩部分。如果再加上“+”,“-”括弧等處理起來將會(huì)十分麻煩,而在我的結(jié)構(gòu)中這個(gè)公式是一棵樹,首先是分為(a+b)與(a-b)這兩部分,(a+b)又分為a,b兩部分(a-b)同理。
通過這種結(jié)構(gòu)能夠節(jié)省計(jì)算機(jī)資源,開發(fā)人員在開發(fā)相關(guān)程序時(shí)也能更加輕松,簡單。當(dāng)然,因?yàn)檫M(jìn)行各種工作的過程中離不開人的參與,所以必然會(huì)牽扯到傳統(tǒng)類型公式的處理,采用我的結(jié)構(gòu)后這種處理只需要進(jìn)行一次,既將字符串轉(zhuǎn)化為立體公式的過程,這一過程可以采用統(tǒng)一的封裝起來的方法,開發(fā)人員需要操作的只有適合計(jì)算機(jī)處理的立體結(jié)構(gòu)了。
2 立體結(jié)構(gòu)公式詳解
首先,我們需要了解運(yùn)算符,我將運(yùn)算符分為兩種,第一種:表示數(shù)據(jù)關(guān)系的關(guān)系類型,即四則運(yùn)算與括弧。第二種:對(duì)單個(gè)數(shù)據(jù)進(jìn)行處理的操作類型,如乘方運(yùn)算,三角函數(shù)運(yùn)算等。對(duì)于第二種又分為兩類,有操作數(shù)的:如乘方運(yùn)算,無操作數(shù)的:如三角函數(shù)運(yùn)算。
構(gòu)建立體結(jié)構(gòu)公式的第一步是根據(jù)關(guān)系類型運(yùn)算符建立主要框架:
關(guān)系類型運(yùn)算符所代表的關(guān)系并不是數(shù)據(jù)之間的關(guān)系而是與整個(gè)公式的關(guān)系,如“a+b”中的“+”并不是說“a”與“b”之間的關(guān)系是加,是指“b”與公式的關(guān)系是公式整體加上了“b”,“a”前其實(shí)隱含一個(gè)加號(hào)也就是“+a+b”,“a*b”也是如此。
乘除運(yùn)算的優(yōu)先級(jí)高于加減運(yùn)算,也就是說乘除符號(hào)代表的是更加細(xì)致的數(shù)學(xué)結(jié)構(gòu),如“a+b*a”這個(gè)公式中‘*表示的是“a”與“b*a”這部分的關(guān)系,而‘+表示的是“b*a”與整個(gè)公式的關(guān)系。建立框架的第一步自然是要首先分析更宏觀的部分即加減運(yùn)算,首先分析加減號(hào)(同級(jí)括弧外),在這個(gè)例子中存在兩個(gè)加號(hào),第一級(jí)也就是由兩個(gè)加號(hào)分割而來的兩部分這樣也就形成了+a這個(gè)葉子與+(b*a)這棵子樹,圖2‘*又將(b*a)分割為*b與*a兩個(gè)葉子圖3。那么整體的結(jié)構(gòu)也就構(gòu)建完成圖4。
考慮括號(hào)后構(gòu)建會(huì)稍微復(fù)雜一些,括號(hào)會(huì)獨(dú)立成為一棵子樹并使其中的節(jié)點(diǎn)深度加一,因此在構(gòu)建框架時(shí)要注意區(qū)分分隔符是否在同級(jí)括號(hào)內(nèi),如a+b+c圖5a+b+(c)圖6a+(b+c)圖7。
每一個(gè)葉子都含有兩部分信息,即運(yùn)算符與基本元素,而子樹節(jié)點(diǎn)上的內(nèi)容只有運(yùn)算符本身,其他信息包含在其孩子內(nèi)。
構(gòu)建立體結(jié)構(gòu)公式的第二步是根據(jù)操作類型運(yùn)算符完善結(jié)構(gòu):
操作類型運(yùn)算符所操作內(nèi)容必定是一個(gè)葉子或一棵子樹,因?yàn)橐豢米訕渲锌梢灾话粋€(gè)葉子,所以為了方便默認(rèn)操作類型運(yùn)算符所操作內(nèi)容是一棵子樹。如“a+sin23”圖8“a+sin(20+a)”圖8。
對(duì)于有操作數(shù)的操作類型運(yùn)算符,操作數(shù)與操作內(nèi)容類似為一棵子樹,然而操作數(shù)只是運(yùn)算符的一個(gè)屬性所以不能算作主要樹的一部分,因此結(jié)構(gòu)需上升到的三維結(jié)構(gòu)如“a+b^(b+20)”其中包含兩棵樹圖10、圖11,相互關(guān)系為包含關(guān)系,但并不是樹與子樹的關(guān)系,而是通過一個(gè)運(yùn)算符建立的間接的包含關(guān)系圖12。
自此已經(jīng)可以完整的構(gòu)建比較復(fù)雜的數(shù)學(xué)公式如“a+b+(sin(x^2)-(z/b)+ab)”圖13。
注:“節(jié)點(diǎn)”“樹”等相關(guān)名詞為“數(shù)據(jù)結(jié)構(gòu)”相關(guān)內(nèi)容
作者單位
青島理工大學(xué)(臨沂) 山東省臨沂市 273400