一种有效数字运算结果的有效位数智能选取及表示方法

文档序号:6365196阅读:359来源:国知局
专利名称:一种有效数字运算结果的有效位数智能选取及表示方法
技术领域
本发明涉及物理实验领域,尤其是一种物理实验中有效数字运算结果的有效位数选取及表示方法。
背景技术
物理实验数据运算结果的有效数字位数的取舍是物理实验数据处理中的一个重要环节。目前,物理实验数据运算结果的有效位数的选取方法通常采用的是人工选取的方式,即人为手动选取,或者在计算机数据处理系统中人为设定运算结果位数(在程序中嵌入或在系统界面上输入),由计算机根据这个位数和四舍六入五配偶的规则(如高级语言中的有效数字位数取舍函数,该函数中的位数参量需要人为设定)自动选取运算结果的有效数字位数。若运算的有效数字位数有变化,则运算结果的有效数字位数就有相应的变化,这样,就需要有不同的人为设定。一个物理实验项目通常有多项数据处理内容,且各处理结果的有效位数不一定相同,则就要有多个不同的人为设定。无论是将这种设定放在程序当中还是从界面输入,这种设定都可能会受到人为因素的影响而与输入的运算数据位数以及运算类型可能不相对应,同时这种设定还增加了人为的负担。这种人为选取方式不利于大量的、位数随机的物理实验数据的精确而高效地处理,不利于物理实验数据智能处理平台的开发。

发明内容
为了克服已有的物理实验中的有效数字运算结果的有效位数采用人工选取方式、不利于处理海量数据、位数随机场合、适用性较差的不足,本发明提供一种采用智能选取、有效适用处理海量数据、位数随机场合、适用性良好的有效数字运算结果的有效位数智能选取及表示方法。本发明解决其技术问题所采用的技术方案是有效数字运算结果的有效位数智能选取及表示方法,所述选取方法包括以下步骤(I)从左至右搜索数值运算式字符串中的每一个字符,若字符不为“ +
八”,则该字符为运算数据中的一个数字或小数点或三角函数、对数运算符中的一个
字符;(2)以字符“ +为断点搜索提取运算式中的每一个数据或三角函数表示式或对数表示式;当搜索的字符为“ + ”或时,则检查其前一位相邻的字符,若前一位字符为“E”,说明数据为科学记数法表示,则继续往后搜索;若不为“E”,则“ + ”或
处就为数据提取的断点,提取每一个加减项;(3)再以为断点提取每一个加减项中的乘除项,以为断点提取乘除项中的幂底数据或幂底三角函数表示式或幂底对数表示式,对于科学记数法的幂底数据的识别方法同(2)。以三角函数运算符和对数运算符搜索识别三角函数表示式和对数表示式,若三角函数表示式和对数表示式存在,则进行三角函数运算和对数运算,计数它们运算结果的有效位数,将这些有效数字代替并放置在三角函数表示式或对数表示式的位置处成为算术运算的数据;(4)对于乘除运算数据、幂中的底数数据,计算各数据的有效数字个数IV记下其中最小的个数min Inj,则这些数据的乘除幂运算结果的有效数字的个数就为。对这些数据进行乘除幂运算,将运算结果用科学记数法表示,根据mining来决定运算结果的有效位数,根据四舍六入五配偶的修约规则来决定该运算结果有效数字的取值。将该值代替并放置在该乘除幂运算项的位置处,组成新的只含有加减运算的数值运算式;(5)通过数据表示形式的转换,统一各加减数据中科学记数法的指数表示形式,并提取出该指数形式。计算该加减运算式中的每一个数据的误差位Hli,记下其中最高的误差位max ImJ ,则运算结果的误差位就为max {mj。对这些数据进行加减运算,根据max ImJ来决定运算结果中位数最高的误差位,根据四舍六入五配偶的修约规则来决定该运算结果有效数字的取值。本发明的有益效果主要表现在采用智能选取、有效适用处理海量数据、位数随机场合、适用性良好。


图I是加减项提取的算法流程图。图2是乘除项提取的算法流程图。图3是幕底项提取的算法流程图。图4是三角函数、对数的识别及其运算数据提取的算法流程图。图5是小时、度、分、秒的提取算法流程图。图6是数据的科学记数法表示算法流程图。图7是有效数字的运算及其运算结果有效位数的选取流程图。图8是有效数字运算式的输入及运算结果的显示的示意图。
具体实施例方式下面结合附图对本发明作进一步描述。参照图I 图8,物理实验数据运算结果的有效位数与运算数据的有效位数以及运算类型有关,运算结果的有效数字位数确定后,此有效数字的末位且只有末位才是可疑位或误差位,该可疑位的取值要由四舍六入五配偶的修约规则来决定。(I)力口、减运算
力卩、减运算结果的末位与加、减运算数据中最先出现的(位数最高的)可疑位相同,如213. 26+16. 8 ^ 230. I。其中运算数据“213. 26”的可疑位是小数点后第2位,而“16. 8”的可疑位在小数点后的第I位上而高于小数点后的第2位。因此,运算结果的可疑位就在小数点后的第I位上,通过进位则得结果为230. I。(2)乘、除、幕运算乘、除运算结果的有效数字位数与乘、除运算数据中有效数字位数最少的相同,如325. 78*0. 0145/789. 2 ^ 0. 00599。其中运算数据“0. 0145”的有效数字位数最少,为3位,则运算结果的有效数字位数就为3位,通过进位得运算结果为“0. 00599”。幂运算结果的有效数字位数与幂底数据的有效数字位数相同,如5. 24~2 ^ 27. 5。其中幂底数据“5. 24”的有效数字位数为3位,则运算结果的有效位数就为3位,通过进位得运算结果为“27. 5”。(3)三角、对数运算三角、对数运算结果的有效数字位数由运算对象的三角函数值、对数值与该运算对象增加I个单位后的三角函数值、对数值相比较来确定。如x = 43° 26' , sin x =0. 6875100985,当 x 增加 I 个单位后,即 x = 43。21',则有 sin x = 0. 6877213051,可看出,两个运算结果的小数点后第4位就开始有变化了,则小数点后第4位就为误差位,因此,运算结果就取到小数点后第4位处,即sin 43° 26' ^ 0. 6875。(4)四舍六入五配偶的误差位修约规则要舍去的数字中的最高位数若为1、2、3、4时,则舍去这些数字,若为6、7、8、9时,在舍去这些数字的同时进I。如将下列数据保留三位小数时,有2. 14346 ^ 2. 143,2. 14372 ^ 2. 144要舍去的数字中的最高位数若为5,而5后面又有不为零的数字时,则舍去这些数字并进I。若5后面无数字,或虽有数字但都为数字0时,进或舍就取决于要保留的最后一位数的奇偶性。若要保留的最后一位数是偶数,则舍去5后面的所有数字,若要保留的最后一位数是奇数,则舍去5后面的所有数字的同时进I。如将下列数据保留三位小数时,有2. 1435 ^ 2. 144,2. 14450 ^ 2. 144,2. 144501 ^ 2. 145以上就是物理实验数据运算结果的有效位数选取原则,此原则是计算机智能选取物理实验数据运算结果有效位数的依据。方法是采用计算机识别有效数字运算式中各个运算数据的有效位数和各个运算类型,根据加、减、乘、除、三角、对数运算结果的有效位数选取原则和四舍六入五配偶的误差位修约原则,对物理实验数据运算结果的有效位数进行计算机智能选取。本实施例的有效位数智能选取及表示方法包括运算数据有效位数的计数算法、数据运算式中数据和运算符的识别算法、基于运算优先级的数字运算算法、位数随机的运算结果数据的科学记数法的智能表示算法,根据运算数据有效位数和运算类型来选取运算结果有效位数的位数智能选取算法。有效数字运算式的计算机表示形式由于计算机只能存储文本格式的运算式,因此,无论怎样的运算式输入模式,计算机最终获得的运算式都只能是一个文本形式的字符串(它是计算机高级语言系统所能接收的形式,非文本的输入必须转换成文本的形式来给计算机高级语言系统接收),参照文献[I]:陈庆章.Visual Basic程序设计基础[M].杭州浙江科学技术出版社,2007。文本字符串形式的运算式如下所示6. 875*567. 3/8. 9~2+67. 4359/456-4. 32~3_46*6. 5+2*sin ( n /3) -log (4. 765)其中,““ “ “ “ ~ “ sin ”、“ cos ”、“ tan ”、“ Iog’’ 分别表示力口、减、乘、除、幂、正弦、余弦、正切、自然对数等运算符。计算机高级语言系统中的三角函数一般只有“sin”、“COs”、“tan”,因此,其它形式的三角函数都需转换成“sin”、“COs”、“tan”的形式来输入或输入后再转换成“sin”、“cos”、“tan”的表示形式,同样,其它形式的对数也都要转换成“log”的形式来给计算机运算。三角函数和对数以函数的形式出现,即在这些运算符后面用括号将操作对象括起来,如sin()、IogO。角度用弧度来表示。 有效数字运算式的计算机输入为便于直接使用计算机高级语言系统中的运算功能,尽量采用与计算机高级语言系统所能接收的文本格式来向计算机输入运算表达式则可简化表达式的转化工序,这还可方便计算机对该运算式的后序操作。同时,输入的数据形式还要能反映出数据的有效位数,因为,数据的有效位数反映了物理实验仪器的测量精度。对直接测量量,如长度、温度、重量等十进制的测量量,其数值的表示形式与文本形式相同。而时间、角度等六十进制的测量量,其数值的表示形式与文本形式是有差别的,如78° 23'的文本形式只能用弧度来表示时方可被计算机高级语言系统接收并运算。78° 23'的误差位显而易见是在“分”上,若要用弧度78* /180+23* / (180*60)来反映误差位就显得不直接了,同时增加了计算机对其识别的难度。若将其运算成一个数值后再来判别角度的误差位则根本判别不出来。因此,为便于数据误差位的精确判别,采用与原始数据表示形式相同的形式来输入原始数据。(I)十进制数的输入十进制的物理实验数据的末位就是误差位,其表示形式就是文本形式,可直接用计算机键盘将这种数据输入至计算机中。如4. 6754。(2)时间的输入时间的输入形式为8:3' 45"。其中数字和小时字符“”用计算机键盘来直接输入,分字符“'”、秒字符“"”可采用智能ABC输入法来输入,因为在任何Windows系统中,智能ABC输入法都是其默认的汉字输入法。(3)角度的输入角度的输入形式为345° 15'。其中数字用计算机键盘直接输入,度字符“。”,分字符“'”采用智能ABC输入法来输入。(4)运算符的输入物理实验数据处理中的运算通常为加、减、乘、除、幂、正弦、余弦、正切、自然对数等运算,相应的运算符为“ + ”、“-”、“*”、“/”、“~”、“sin”、“C0S”、“tan”、“l0g”,这些运算符
可全部采用计算机键盘来直接输入。数据、算术运算符、三角函数、对数的识别与提取一算法I :当计算机获得了有效数字运算式后,首先要做的就是识别出运算式中的运算数据和运算符,以便计数运算数据的有效位数和推导出运算结果的有效位数,识别采用扫描搜索的方式进行,即从运算式的最前面扫描搜索至运算式的最后面,通过识别的方法来提取出运算式中的所有数据和运算符。方法是以算术运算符为断点来提取算术运算数据、三角函数表达式和对数表达式,用三角函数运算符和对数运算符来识别三角函数表达式和对数表达式。由于运算结果的有效位数与运算符的具体类型有关,因此,识别提取操作可按运算符的运算优先级从低级到高级的次序分层进行,算法如下(I)按照从运算式的最前面到最后面的顺序依次搜索和识别运算式expression中的每一个字符4,当搜索到“ + ”和号时,就以此为断点提取子运算式,它是相邻两个断点之间的运算表达式,该子运算式称为加减项AS_Iterm(i)。若没有搜索到“ + 号,则说明该运算式中没有加、减运算,此时只有一个加减项AS_Iterm(l),该项中只可能有乘除幂运算、三角函数运算、对数运算。加减项提取的算法流程图如图I所示。
(2)效仿(1),搜索每一个加减项AS_Iterm(i),当搜索到和“/”号时,就以此为断点提取子运算式,它是相邻两个断点之间的运算表达式,该子运算式称为乘除项MD_Iterm(J)0若没有搜索到号,则说明此加减项是运算数据或幂运算表达式或三角函数表达式或对数表达式,此加减项就为MD_Iterm(l)。乘除项提取的算法流程图如图2所示。
(3)效仿(I),搜索每一个乘除项,当搜索到时,则前面搜索到的就为幂底表达式,称为幂底项P_Iterm。若没有搜索到“ ~ ”,则该乘除项没有幂运算,只可能是数据或三角函数表达式或对数表达式。幂底项提取的算法流程图如图3所示。 (4)效仿⑴,搜索幂底项(若无幂底项P_Iterm,则搜索乘除项MD_Iterm(j)),通过搜索字符串“sin”或“cos”或“tan”或“log”来识别三角函数或对数表达式(在VB中,“log”表示自然对数),若无“sin”或“cos”或“tan”或“log”,则该项就为算术运算数据,否则计SIN = “sin”或COS = “cos”或TAN = “tan”或LOG = “log”。若搜索到三角函数或对数表达式,则提取其括号中的数据。三角函数、对数运算数据提取的算法流程图如图4所示。(5)时间、角度数据的识别与转换由于数据包括十进制数据和时间、角度等六十进制数据两种类型,因此,在数据运算之前有必要对数据的类型进行识别,以便完成相应的有效位数计数、转换及运算。通过识别字符”、“',,、“" ”来识别小时、度、分、秒,数据中若没有这些字符,则其为十进制数。十进制数可直接采用高级语言系统中的运算功能进行运算,对于时间、角度的算术运算采用小时、度、分、秒分别运算,即小时与小时运算、度与度运算、分与分运算、秒与秒运算,当运算结果超过60则进一个单位。对于角度的三角函数运算,则必需将角度化成弧度来运算。小时、度、分、秒提取算法实现过程①初始化数据字符变量data ="",小时字符变量hour ="",度字符变量degree ,分字符变量minute,秒字符变量second ="";②从左至右搜索角度、时间数据字符串string中的每一个字符dn ;③识别字符dn ;④若dn 不为“”、“。”、“'”、“"”,则 data = data+dn ;若 dn 为字符“”,则 hour=data ;若 dn 为字符“。”,贝丨J degree = data,若 dn 为字符“'”,贝丨J minute = data,若 dn为字符“"”,贝丨J second = data ;⑤搜索再下一个字符dn+1,若n+1小于或等于string的长度,则n = n+l,并进入③;否则结束搜索。若data或hour或degree或minute或second不为空字符""时,贝Ij其为小时、度、分、秒提取的结果。以上小时、度、分、秒提取算法流程图如图5所示。弧度的转化算法如下Ji = 3. 1415926data = Val (degree)* n /180+Val (minute)* n /180/60+Val (second)*3i /180/60/60十进制数据的判别算法如下
If SIN = " " And COS = " " And TAN = " " And LOG = " " Then运算数据=dataEnd If十进制运算数据有效位数的计数一算法2 :运算式中的运算数据提取出来后,就可计数它们的有效位数。这里所要计数的运算数据是指只参与算术运算的数据,即只参与力口、减、乘、除、幂运算的数据。对于时间、角度的算术运算,由于通过对“”、“。”、“"”的识别可直接判别出运算结果的误差位,而无需用运算数据的有效位数来判别,因此,这里只需对十进制数据进行有效位数的计数。三角函数和对数括号中的数据虽然也是有效数字,但无需计数其有效位数,而是要计数三角函数值和对数值的有效位数。有效数字在数据中,从第一个不为零的数字开始直到最低位的数字为止的所有数字都为有效数字,这些数字的个数即为该数据的有效位数,数据中的最后一位为误差位或可疑位。如32. 670的有效数字位数为5位(即“32670”5个数字),最后一位的“0”为误差位。0.04092的有效数字位数为4位(即“4092” 4个数字),最一位的“2”的为误差位。运算数据有效数字位数的计数算法如下从左至右(即从数据的最高位到最低位)搜索数据中的每一个数字,当搜索到第一个不为零的数字时,有效数字的个数计为l(n = I)。此后,每搜索到一个数字时,有效数字的个数就加1,即n = n+1,直到搜索到最低位的数字为止。数据搜索结束后的n值即为该数据的有效数字的个数,数据的最后(或最低)一位即为可疑位或误差位。运算数据有效数字的误差位的定位——算法3 :加减运算结果的有效位数是由各加减项(这里是指参与加减运算的数据)的误差位来决定的,因此,必须要识别定位出每一个加减项的误差位,才可导出加减运算结果的有效位数。(I)定位十进制数的误差位在数据的表现形式中,误差位总是出现在个位或更低的位数上。因此,从左至右(即从数据的最高位到最低位)搜索数据中的每一个数字,当搜索到小数点时开始计数误差位,此时计m = 0,往后每搜索到一个数字,m就减1,即m = m_l,一直搜索到最低位数字为止。搜索终止时,数据的误差位就为m,若没有搜索到小数点,则m = 0,即误差位在个位上。m = -I时,小数点后第I位是误差位,m = -2时,小数点后第2位是误差位,...。(2)定位时间、角度的误差位通过对“”、“。”、“'”、“"”等单位符号的识别来识别时间、角度的误差位,即
误差位在最小的单位上。如34° 56'的误差在“分”位上,42' 15"的误差在“秒”位上。计数三角函数值、对数值的有效位数一算法4 (I)利用算法3定位原运算数据的最后一位误差位,并对该位进I后得到新的运算数据;(2)对原数据和新数据分别计算它们的对数值或三角函数值;(3)按从最高位到最低位的顺序,--比较这两个对数值中相同位上的数字,同时 利用算法2计数这两个对数值的有效数字位数,直到这两个相同位上的数字不相等为止,此时,所计数得到的位数即为原运算数据对数值的有效数字位数。由于在高级语言系统中,角度是用弧度来表示的,而物理实验数据是用度数来表示角度的,根据这个特点,必须先识别角度的误差位,以便在该位加I后得到新角度,再将其转换成弧度来进行三角函数运算。 位数随机的有效数字的科学记数法的表示一算法5 :根据有效数字的运算规则,在乘、除、幂运算的结果中,误差位可能高于个位,这时就必需要用科学记数法来表示该运算结果。如在21. 3X456. 7 = 9727. 71中,由于运算数据的有效数字位数最少的是3位(如数据“21. 3”),则运算结果就只能得出3个有效数字,即运算结果的十位就是误差位了,运算的有效结果只能用科学记数法表示为9. 73X 103。计算机在自动处理这种情况下的运算时,除了要自动运算外,还要能够自动将计算结果转换成科学记数法的形式,即将9727. 71转换成9.73E+3m的形式,其中,E表示底数10,+3表示10的指数(即数量级表示)。科学记数法中的指数值与有效数字位数有密切的关系,它是科学计数法的计算机表示的依据。当数据的绝对值小于I时,如0. 00056082,第一个不为0的数字“5”的前面“0”的个数(=4)即为该数据科学记数法中负指数的大小,即5. 6082X10'当数据的绝对值大于I时,如56082394. 107。从与第一个不为0的数字“5”后相邻的数字开始直到个位的所有数字的个数(=7)即为该数据科学记数法中正指数的大小,即:5. 6082394107XIO70设数据的字符串为(11(12(13...4[1],其中L为字符串的长度。从左至右(即从数据的最高位到最低位)搜索提取并识别字符串数据中的每一位数字字符dn,若第I位字符Cl1 =“0”,则该数据为绝对值小于I的数据,记指数为index = -1,往后每搜索的I位字符dn若为“0”,则指数减1,即index = index-1,直到搜索到第I个不为“0”的字符dn为止。当搜索到第I个不为“0”的字符dn时,重建新的数据字符串string,此时令string = dn+〃 .",
”为小数点字符。往后每搜索到I位字符d ,string就增加I位字符d ,即string =string+dn;若第I位字符Cl1古"0",该被搜索的数据即为绝对值大于I的数据,此时记string = (I1+".",并令index = O。往后每搜索到I位不为“ ”的字符Uj string =string+dn,且在搜索到”之前,每搜索到I位字符d 时,贝丨J index = index+1,当搜索到”时,则停止指数的累加。当数据搜索完后则可得科学记数法的数据字符串为string =string+" E" +StHindex),设StrO为将数值型数据转换成字符型数据的转换函数[1],算法流程图如图6所示。四舍六入五配偶的处理——算法6 :数据运算结果的有效位数由运算数据的有效位数来决定,运算结果的有效位数决定后就要涉及到运算结果有效数字位数的取舍问题,运算结果有效数字位数的取舍要遵循有效数字位数的取舍原则——四舍六入五配偶[2_4],取舍算法如下从左至右(即从数据的最高位到最低位)搜索运算结果数据中的每一位数字,每搜索到一位数字或小数点就按原来的顺序与前面搜索到的数字排列成一个字符串,即string = string+Str (dn),其中,dn是搜索到的当前位数字。当搜索到第I个可疑位(数据运算后的结果可能不止一个可疑位)处的数字dn时,则检查该可疑位后面I位相邻的数字。若该数字大于5,贝丨J dn+l, string = string+Str (dn+l),并终止搜索;若该数字小于5,则dn不变,string = string+Str (dn),并终止搜索;若该数字等于5,则再检查该数字后所有位处的数字,直到最低位为止。其中只要有一位数字大于 ,则^+丨,string =string+Str (dn+l);若全为“0”或无数字,则检查dn的奇偶性。若《为奇数,则dn+l, string=string+Str (dn+l),若 dn 为偶数,则 dn 不变,string = string+Str (dn)。完成四舍六入五配偶的处理后,则提取字符串string。若数据中不存在指数部分“E+index”(index为不等于零的正负指数),则string就为取舍的结果;S“E+indeX”存在,则提取之,取舍的结果就为 string = string+ " E〃 +Str (index)数据表示形式的转换——算法7 :在有效数字的加减运算中,为确定运算结果的误差位,往往需要将运算数据转换成统一的形式,如2. 34 X 103+1. 8976-2. 68 X IO1= (2. 34+0. 0018976-0. 0268) X IO3 = 2. 32 X IO3上式中,运算数据全部转换成IO3的形式,可知最高误差位在小数点后第二位处(如数据“2. 34”)。这样,为保持每个运算数据的误差位不变,以运算数据中幂指数最大的为准(如“103”),将各数据全部转换成该最大指数的形式。这样,运算结果的误差就在小数点后的第二位处(如“2.32X 103”)。转换算法如下设原数据的指数为n,当改为m(m > n)时,则数据中的小数点向左移m_n位,亦即数据左边增加了 m-n个“0”,小数点移至第一个“0”的后面。示意如下
d0 . d_xd_2h dLx\0n = 0^OOA^O d0d_^d_2 A dLx\0m
个 ‘‘ 0”有效数字运算式的运算及运算结果有效位数的智能取舍一算法8 :考虑到运算结果的误差位可能高于个位的情况,将每一步的运算结果都转换成科学记数法的表示形式,再对该形式的数据进行有效数字的取舍处理。运算算法如下从左至右搜索数值运算式字符串中的每一个字符,若字符不为“ +
则该字符为运算数据中的一个数字或小数点或三角函数、对数运算符中的一个字符。首先采用算法1,以字符“ +为断点搜索提取运算式中的每一个数据或
三角函数表示式或对数表示式。当搜索的字符为“ + ”或时,则检查其前一位相邻的字符,若前一位字符为“E”,说明数据为科学记数法表示,则继续往后搜索;若不为“E”,则“ + ”或处就为数据提取的断点,提取每一个加减项。再以为断点提取每一个加减项中的乘除项,以为断点提取乘除项中的幂底数据或三角函数表示式或对数表示式,以三角函数运算符和对数运算符搜索识别三角函数表示式和对数表示式,若三角函数表示式和对数表示式存在,则采用算法3进行三角函数运算和对数运算,计数它们运算结果的有效位数,将这些有效数字代替并放置在三角函数表示式或对数表示式的位置处成为算术运算的数据。接下来就对乘除运算数据、幂中的底数数据运用算法2来计算各数据的有效数字个数Iij,记下其中有效数字最少的个数min {n」},则这些数据的乘除幂运算结果的有效数字的个数就为mining。对这些数据进行乘除幂运算,运用算法5将运算结果用科学记数法表示,运用算法2、6和min {rij}来选取该运算结果的最后一位,提取该有效数字,将其代替并放置在该乘除幂运算项的位置处,组成新的只含有加减运算的数值运算式。运用算法7统一各加减数据中科学记数法的指数表示形式,并提取出该指数形式,运用算法4计算该加减运算式中的每一个数据的误差位IV记下其中位数最高的误差位maxImJ。对这些数据进行加减运算,运算结果的误差位则为max ImJ,运用算法2、6和maxlmj来选取该结果的最后一位。算法流程图如图7所示。有效数字运算及其运算结果有效位数智能选取的过程设有效数字运算式如下,
5. 24~2*6. 25/1. 25-8. 95~4+12. 5*3. 252016-2. 4736+40. 4625/3. 25将该式输入至一个文本框I中,按“数据运算”按钮2后,系统则自动对该运算式进行运算,并在该按钮下面的列表框3中显示了该运算式的运算结果。为便于验证,运算过程将分步显示在列表框中,示意图如图8所示。列表框中的第0行为原数值运算表达式,系统首先计数每个加减项中最少的有效数字位数,第I项“5. 24~2*6. 25/1. 25”中的最少有效数字位数为3位,如数据“5. 24”、“6. 25”、“ I. 25”都是3位有效数字。第2项“8. 95~4”只有I个运算数据“8. 95”(其中指数为常数,不属于有效数字),其有效数字位数是3位,则该项最少的有效数字位数就是3位。第3项“12. 5*3. 252016”中有效数字位数最少的数据是“12. 5”,有效位数是3。第4项“2. 4736”是I个数据,有效数字位数是5位。第5项“40. 4625/3. 25”中有效数字位数最少的数据是“3. 25”,有效位数是3。这些最少的有效位数都是各项运算结果的有效数字取舍的依据。列表框中的第I行是原式中幂运算的结果,幂运算是该式子中运算优先级最高的运算。在原式的第I个加减项“5. 24~2*6. 25/1. 25”中,幂的运算结果为“27. 4576”,则得出第I行中的第I个加减项“27. 4576*6. 25/1. 25”的表现形式。而原式中的第2个加减项只有幂I种运算,则“8. 95~4”的运算结果必须用有效数字来表示,根据有效数字幂运算结果的有效数字位数取舍原则,运算结果只能取3个有效数字。纯数字运算的结果为“6416. 41050625”,要取3个有效数字,则说明误差就已在十位上了,此时必须用科学记数法来表示,根据有效数字的取舍的原则,则取为“6. 42*10~3”。列表框中的第2行是除法运算的结果,第I加减项“27. 4576*6. 25/1. 25”的结果为“27. 4576*5”。而第5个加减项“40. 4625/3. 25”只有除法I种运算,因此,其运算结果要用有效数字表示。其纯数学运算结果为40. 4625/3. 25 = 12. 45,根据有效数字除法运算结果的有效数字位数选取原则,结果只能取3个有效数字,因此,根据四舍六入五配偶的原则,“5”是最后一位数字,且其前一位数字是偶数“4”,因此舍去“5”,结果为“ I. 24*10~I”。列表框中的第3行是乘法运算的结果,第I个加减项“27. 4576*5”的纯数学运算结果为 37. 288 (即 “5. 24~2*6. 25/1. 25” 的运算结果)。由于 “5. 24~2*6. 25/1. 25” 中的最少有数字位数为3位,根据有效数字乘法运算结果的有效数字位数选取原则,其最终运算结果只能取3个有效数字,因此,结果为“ I. 37*10~2”。第3个加减项“ 12. 5*3. 252016”的纯数学运算结果为40. 6502,由于结果取3个有效数字,则误差位在小数点后第I位“6”处,由于其后I位数是“5”,且“5”后面有不为0的数字“2”,则进位,结果就为“4. 07*10~1”。列表框中的第4行是将各加减项运算数据的形式统一化成10~3数量级的形式,可得有效数字的最高误差位在小数点后第2位处(如括号中的数据“6. 42”),则加减运算的最终结果的有效数字的误差位也就在小数点后第2位上,如列表框中第5行的最终运算结果 “-6. 23*10~3” 所示。系统运算的结果与人工运算的结果相同,运用图8系统对不同的有效数字多项式 进行了大量的实验,结果表明系统运算结果的正确率为100%。各个运算步骤显示了运算过程中各个分步运算结果的有效数字位数选取结果,显示了这些分步结果与总运算结果的逻辑关系,这些步骤是总运算结果的理由步骤,各个运算步骤是对各个分步运算结果有效位数选取方法的验证。该有效数字运算方法已具体用于了我院大学生物理实验数据处理评估系统中,其中就包括了评估大学生对其物理实验数据处理结果有效数字位数选取的正确性。
具体实施方式
是将该方法的实现程序构成了一个程序函数,该函数的输入参数就是有效数字运算式,输出参数就是最终运算结果的有效数字表示形式。计算机运用该函数对学生获取的物理实验数据进行有效数字智能运算处理,并将该处理结果作为评估标准来评估学生人为进行物理实验数据处理的结果。本实施例能够根据运算数据的随机有效位数和不同的运算类型自适应地选取其相对应的运算结果的有效数字位数,符合运算结果有效数字位数选取的原则和四舍六入五配偶的误差位修约原则,选取后的有效位数以及有效数字结果正确,正确率为100%,满足物理实验数据处理的要求。同时该方法无需人为设定运算结果的有效数字位数,消除了以往有效数字位数选取时人为因素的影响。
权利要求
1.一种有效数字运算结果的有效位智能选取及表示方法,其特征在于所述有效位智能选取及表示方法包括以下步骤 (1)从左至右捜索数值运算式字符串中的每ー个字符,若字符不为“ ~ ”,则该字符为运算数据中的ー个数字或小数点或三角函数、对数运算符中的一个字符; (2)以字符“+为断点搜索提取运算式中的每ー个数据或三角函数表示式或对数表示式;当捜索的字符为“ + ”或“-”吋,则检查其前一位相邻的字符,若前一位字符为“E”,说明数据为科学记数法 表示,则继续往后搜索;若不为“E”,则“ + ”或处就为数据提取的断点,提取每ー个加减项; (3)再以为断点提取每一个加减项中的乘除项,以为断点提取乘除项中的幂底数据或幂底三角函数表示式或幂底对数表示式,对于科学记数法的幂底数据的识别方法同(2)。以三角函数运算符和对数运算符搜索识别三角函数表示式和对数表示式,若三角函数表示式和对数表示式存在,则进行三角函数运算和对数运算,计数它们运算结果的有效位数,将这些有效数字代替并放置在三角函数表示式或对数表示式的位置处成为算木运算的数据; (4)对于乘除运算数据、幂中的底数数据,计算各数据的有效数字个数Iij,记下其中最小的个数min {nj,则这些数据的乘除幂运算结果的有效数字的个数就为min {nj,对这些数据进行乘除幂运算,将运算结果用科学记数法表示,根据mining来决定运算结果的有效位数,根据四舍六入五配偶的修约规则来决定该运算结果有效数字的取值。将该值代替并放置在该乘除幂运算项的位置处,组成新的只含有加减运算的数值运算式; (5)通过数据表示形式的转换,统ー各加减数据中科学记数法的指数表示形式,并提取出该指数形式。计算该加减运算式中的每ー个数据的误差位IV记下其中最高的误差位max ImJ ,则运算结果的误差位就为max {mj。对这些数据进行加减运算,根据max {mj来决定运算结果中位数最高的误差位,根据四舍六入五配偶的修约规则来决定该运算结果有效数字的取信。
全文摘要
一种有效数字运算结果的有效位数智能选取及表示方法,从左至右搜索数值运算式中的每一个字符,以“+”或“-”处为断点获取加减项,以“*”或“/”处为断点获取每一个加减项中的乘除项,以“^”处为断点获取每一个乘除项中的幂底项。先进行三角函数和对数的运算,选取运算结果的有效位数,将选取结果代替原三角函数或对数表达式。计数每一个加减项中乘除数据、幂底数据的有效位数,其中最少的位数就是这些数据乘除幂运算结果的有效位数,乘除幂运算后得到只含加减运算的运算式。统一各加减数据的科学记数法指数形式,计数各数据的误差位,得到有效数字的误差位。本发明采用智能选取,有效适用处理海量数据和位数随机的场合,适用性良好。
文档编号G06F7/10GK102622202SQ20121004096
公开日2012年8月1日 申请日期2012年2月22日 优先权日2012年2月22日
发明者吴姚鑫, 景程, 陈鲤江 申请人:浙江工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1