算法初步課件_第1頁
算法初步課件_第2頁
算法初步課件_第3頁
算法初步課件_第4頁
算法初步課件_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、1.1算法與程序框圖,1.1.1算法的概念,先去括號,再乘除,后加減,1,什么是算法呢,要把大象裝冰箱,分幾步,答:分三步,第一步:打開冰箱門,第二步:把大象裝冰箱,第三步:關(guān)上冰箱門,問,簡單地說,算法就是解決問題的程序或步驟,什么是算法呢,第一步,第二步,第三步,消元,解一元一次方程,2,得,解得,代入求解,將 代入,得,寫一寫,寫出解第二個方程組的算法,第一步,第二步,第三步,解,得,將代入得,變一變,在數(shù)學(xué)上,通常是按照一定規(guī)則解決某一類問題的明確有限的步驟,算法的定義,例1,1)設(shè)計一個算法,判斷7是否為質(zhì)數(shù),2)設(shè)計一個算法,判斷35是否為質(zhì)數(shù),算法,探究,你能寫出”判斷整數(shù)n(n

2、2) 是否為質(zhì)數(shù)”的算法嗎,第一步,給定大于2的整數(shù)n,第二步,令i=2,算法的基本特點,1、有窮性,一個算法應(yīng)包括有限的操作步驟,能在執(zhí)行有窮的操作步驟之后結(jié)束,2、確定性,算法的計算規(guī)則及相應(yīng)的計算步驟必須是唯一確定的,既不能含糊其詞,也不能有二義性,3、邏輯性,算法中從開始的“第一步”到“最后一步”之間做到 環(huán)環(huán)相扣,分工明確,“前一步”是“后一步”的前提,“后一步”是“前一步”的繼續(xù),算法1,第二步:計算10150,第三步:寫出運算結(jié)果,算法2,第一步:取n=100,第二步:計算,第三步:寫出運算結(jié)果,寫出求1+2+3+ +100的一個算法,1+100)+(2+99)+ +(50+51

3、,第一步:將原式變形為,你會了嗎,2.任意給定一個正實數(shù),設(shè)計一個算法求以這個數(shù)為半徑的圓的面積,第一步:輸入任意一個正實數(shù)r0,第二步:計算圓的面積: S=r2,第三步:輸出圓的面積S,1.1.2程序框圖,程序框圖,程序框圖又稱流程圖,是一種用程序框、流程線及文字說明來表示算法的圖形,在程序框圖中,一個或幾個程序框的組合表示算法中的一個步驟;帶有方向箭頭的流程線將程序框連接起來,表示算法步驟的執(zhí)行順序,例 用程序框圖表示“判斷整數(shù)n(n2)是否為質(zhì)數(shù)”的算法,設(shè)n是一個大于2的整數(shù),一般用i=i+1表示,i=i+1,說明:i表示從2(n-1)的所有正整數(shù),用以判斷例1步驟2是否終止,i是一個

4、計數(shù)變量,有了這個變量,算法才能依次執(zhí)行.逐步考察從2(n-1)的所有正整數(shù)中是否有n的因數(shù)存在,畫程序框圖的規(guī)則,1)使用標(biāo)準(zhǔn)的圖形符號,2)框圖一般按從上到下,從左到右的方向畫,3)除判斷框外,大多數(shù)流程圖符號只有一個進入點和一個退出點。判斷框具有超過一個退出點的唯一符號,4)判斷框分兩大類,一類判斷框“是”與“否”兩分支的判斷,而且又且僅有兩個結(jié)果;另一類是多分支判斷,有幾種不同的結(jié)果,5)在圖形符號內(nèi)描述的語言要非常簡練清楚,算法的基本邏輯結(jié)構(gòu),順序結(jié)構(gòu),用程序框圖來表示算法,有三種不同的基本邏輯結(jié)構(gòu),條件結(jié)構(gòu),循環(huán)結(jié)構(gòu),三種基本結(jié)構(gòu)(表示一個良好算法的基本單元,順序結(jié)構(gòu),條件結(jié)構(gòu)(選

5、擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),While(當(dāng)型)循環(huán),Until(直到型)循環(huán),順序結(jié)構(gòu),順序結(jié)構(gòu)是由若干個依次執(zhí)行的步驟組成的。這是任何一個算法都離不開的基本結(jié)構(gòu),例1 已知一個三角形的三邊邊長分別為a、b、c,利用 海倫-秦九韶公式設(shè)計一個算法,求出它的面積,畫出 它的程序框圖,程序框圖,習(xí)題1 設(shè)計一算法:輸入圓的半徑,輸出圓的面積,并畫出流程圖,算法分析,第一步:輸入圓的半徑,第二步:利用公式“圓的面積=圓周率(半徑的平方)”計算圓的面積,第三步:輸出圓的面積,思考:整個程序框圖有什么特點,條件結(jié)構(gòu)(選擇結(jié)構(gòu),算法的流程根據(jù)條件是否成立有不同的流向。條件結(jié)構(gòu)就是處理這種過程的結(jié)構(gòu),例2 任意給定3

6、個正實數(shù),設(shè)計一個算法,判斷分別以這3個數(shù)為三邊邊長的三角形是否存在.畫出這個算法的程序框圖,解:算法如下。 S1 輸入x S2 若x為奇數(shù),則輸出A=3x+2;否則輸出A=5x S3 算法結(jié)束,習(xí)題2 設(shè)x為一個正整數(shù),規(guī)定如下運算:若x為奇數(shù),則求3x+2;若x為偶數(shù),則為5x,寫出算法,并畫出程序框圖,循環(huán)結(jié)構(gòu),在一些算法中,從否處開始,按照一定條件,反復(fù)執(zhí)行 某一處理步驟的情況,這就是循環(huán)結(jié)構(gòu)。反復(fù)執(zhí)行的處 理步驟稱為循環(huán)體,在循環(huán)結(jié)構(gòu)中,通常都有一個起到循環(huán)計數(shù)作用的變量, 這個變量的取值一般都含在執(zhí)行或中止循環(huán)體的條件中,例3 設(shè)計一個計算1+2+3+100的值的算法,并畫出程序框

7、圖,算法分析: 需要一個累加變量和一個計數(shù)變量,將累加變量的初始值 設(shè)為0,計數(shù)變量的值可以從1到100,1.2,基本算法語句,第一章 算法初步,探究新知】 我們知道,順序結(jié)構(gòu)是任何一個算法都離不開的基本結(jié)構(gòu),輸入、輸出語句和賦值語句基本上對應(yīng)于算法中的順序結(jié)構(gòu),計算機從上而下按照語句排列的順序執(zhí)行這些語句,輸入語句和輸出語句分別用來實現(xiàn)算法的輸入信息,輸出結(jié)果的功能,如右圖,輸入語句和輸出語句分別用來實現(xiàn)算法的輸入信息,輸出結(jié)果的功能,例1 用描點法作函數(shù)yx33x224x30的圖象時,需要求出自變量和函數(shù)的一組對應(yīng)值.編寫程序,分別計算當(dāng) x5,4,3,2,1,0,1,2,3,4,5 時的

8、函數(shù)值,INPUT “x=”;x y=x3+3*x2-24*x+30 PRINT x PRINT y END,程序,輸入語句,賦值語句,打印語句,打印語句,表示結(jié)束,輸出語句,輸出語句,一.輸入語句,INPUT “提示內(nèi)容”;變量,輸入語句的一般格式,說明: (1)輸入語句的作用是實現(xiàn)算法的輸入信息功能; (2)“提示內(nèi)容”提示用戶輸入什么樣的信息, 變量是指程序在運行時其值是可以變化的量; (3)輸入語句要求輸入的值只能是具體的常數(shù), 不能是函數(shù)、變量或表達式; (4)提示內(nèi)容與變量之間用分號“;”隔開, 若輸入多個變量,變量與變量之間用逗號“,”隔開,例如,輸入一個學(xué)生數(shù)學(xué),語文,英語三門

9、課的成績, 可以寫成,INPUT “數(shù)學(xué),語文,英語”;a,b,c,注意: INPUT語句不但可以給單個變量賦值,還可以給多個變量賦值,其格式為,INPUT “提示內(nèi)容1,提示內(nèi)容2,提示內(nèi)容3,”;變量1,變量2,變量3,練一練:請你用輸入語句表達課本P5和P9頁程序框圖中輸入框中的內(nèi)容,P7頁,INPUT “n=”; n,P9頁,INPUT a, b, c,二.輸出語句,PRINT “提示內(nèi)容”;表達式,說明: (1)“提示內(nèi)容”提示用戶輸出什么樣的信息,表 達式是指程序要輸出的數(shù)據(jù),輸出常量,變量的值和字符串等系統(tǒng)信息。 輸出數(shù)值計算的結(jié)果,2)輸出語句的用途,輸出語句的一般格式,3)同

10、輸入語句一樣,表達式前也可以有“提示內(nèi)容,思考:在課本P7頁圖1.1-2程序框圖中的輸出框的內(nèi)容怎樣用輸出語句來表達,參考答案: 輸出框: PRINT “n is a prime number .” PRINT “n is not a prime number.,PRINT “S=”; S,三.賦值語句,1)賦值語句的一般格式,變量表達式,2)賦值語句的作用是:先計算出賦值號右邊表達 式的值,然后把這個值賦給左邊的變量,使該變量的 值等于表達式的值。 (3)賦值語句中的“”稱作賦值號,與數(shù)學(xué)中的等 號的意義是不同的.賦值號的左右兩邊不能對換. (4)賦值語句左邊只能是變量名字而不是表達式, 如

11、:2=x是錯誤的;右邊表達式可以是一個數(shù)據(jù)、 常量或算式;不能利用賦值語句進行代數(shù)式的 演算。(如化簡、因式分解、解方程等) (5)對于一個變量可以多次賦值,例題解析】 例2:編寫程序,計算一個學(xué)生數(shù)學(xué)、語文、 英語三門課的平均成績,分析:先寫出算法,畫出程序框圖,再進行編程,結(jié)束,程序框圖,INPUT “Maths,Chinese,English”;a,b,c y=(a+b+c)/3 PRINT “y=”;y END,程序,例3:給一個變量重復(fù)賦值,程序,A=10 A=A+15 PRINT A END,A的輸出值是多少,分析:此程序給變量A賦了兩次值.A的初值為10,第二次賦值后,初值被“覆

12、蓋”,A的值變?yōu)?5,因此輸出值是25,變式引申:在此程序的基礎(chǔ)上,設(shè)計一個程序, 要求最后A的輸出值是30,A=10 A=A+15 PRINT A A=A+5 PRINT A END,程序,例3:給一個變量重復(fù)賦值,程序,A=10 A=A+15 PRINT A END,例4交換兩個變量A和B的值,并輸出交換前后 的值,分析:引入一個中間變量X,將A的值賦予X,又將B 的值賦予A,再將X的值賦予B,從而達到交換A, B的值.(比如交換裝滿水的兩個水桶里的水需要 再找一個空桶,INPUT A INPUT B PRINT A,B X=A A=B B=X PRINT A,B END,程序,不能,練習(xí)

13、1:編寫一個程序,要求輸入一個圓的半徑, 便能輸出該圓的周長和面積.( 取3.14,分析:設(shè)圓的半徑為R,則圓的周長C=2R,面積S=R2,可以利用順序結(jié)構(gòu)中的INPUT語句,PRINT語句和賦值語句設(shè)計程序,INPUT “R=”;R C=2*3.14*R S=3.14*R2 PRINT “C=”;C PRINT “S=”; S END,算法中的條件結(jié)構(gòu)是由條件語句來表達的,條件語句是處理條件分支邏輯結(jié)構(gòu)的算法語句,條件語句的一般格式,只含一個“分支”的條件結(jié)構(gòu),寫成條件語句為,當(dāng)計算機執(zhí)行這種形式的條件語句時,首先對IF后的條件進行判斷,如果條件符合,就執(zhí)行THEN后的語句體,否則執(zhí)行END

14、 IF之后的語句,含兩個“分支”的條件結(jié)構(gòu),寫成條件語句為,當(dāng)計算機執(zhí)行上述語句時,首先對IF后的條件進行判斷,如果條件符合,就執(zhí)行THEN后的語句體1,否則執(zhí)行ELSE后的語句體2,條件語句的作用 在程序執(zhí)行過程中,根據(jù)判斷是否滿足約定的條件而決定是否需要轉(zhuǎn)換到何處去。需要計算機按條件進行分析、比較、判斷,并按判斷后的不同情況進行不同的處理,1、編寫一個程序,求任意實數(shù)的絕對值,程序如下,程序框圖,開始,y=-x,y=x,輸出 y,結(jié)束,x0,是,否,例題解析,例題解析,例6:編寫程序,輸入一元二次方程ax2+bx+c=0的系數(shù),輸出它的實數(shù)根,算法分析,一元二次方程的根有三種不同情況,設(shè)判

15、別式=b2-4ac,1)當(dāng)0時,一元二次方程有兩個不等的實數(shù)根,2)當(dāng)=0時,一元二次方程有兩個相等的實數(shù)根,3)當(dāng)0時,一元二次方程沒有實數(shù)根,程序,INPUT “ a,b,c =”;a,b,c d=b*b-4*a*c IF d=0 THEN p=-b/(2*a) q=SQR(d)/(2*a) IF d=0 THEN PRINT “One real root:”;p ELSE x1=p+q x2=p-q PRINT “Two real roots:“;x1,x2 END IF ELSE PRINT “No real root!” END IF END,例7:編寫程序,使得任意輸入的3個整數(shù)按

16、從大到小的順序輸出,算法分析:用a,b,c表示輸入的3個整數(shù);為了節(jié)約變量,把它們重新排列后,仍用a,b,c表示,并使abc.具體操作步驟如下。 第一步:輸入3個整數(shù)a,b,c. 第二步:將a與b比較,并把小者賦給b,大者賦給a. 第三步:將a與c比較. 并把小者賦給c,大者賦給a,此時a已是三者中最大的。 第四步:將b與c比較,并把小者賦給c,大者賦給b,此時a,b,c已按從大到小的順序排列好。 第五步:按順序輸出a,b,c,程序,INPUT “a,b,c =”;a,b,c IF ba THEN t=a a=b b=t END IF IF ca THEN t=a a=c c=t END IF

17、,IF cb THEN t=b b=c c=t END IF PRINT a,b,c END,算法中的循環(huán)結(jié)構(gòu)是由循環(huán)語句來實現(xiàn)的,循環(huán)結(jié)構(gòu)有兩種-當(dāng)型與直到型,當(dāng)型循環(huán)結(jié)構(gòu)(當(dāng)條件滿足時反復(fù)執(zhí)行循環(huán)體,直到型循環(huán)結(jié)構(gòu)(反復(fù)執(zhí)行循環(huán)體直到條件滿足,對應(yīng)于程序框圖中的兩種循環(huán)結(jié)構(gòu),一般程序設(shè)計語言中也有當(dāng)型(WHILE型)和直到型(UNTIL型)兩種語句結(jié)構(gòu),即WHILE語句和UNTIL語句,1)WHILE語句的一般格式是,WHILE 條件 循環(huán)體 WEND,其中循環(huán)體是由計算機反復(fù)執(zhí)行的一組語句構(gòu)成的。WHLIE后面的“條件”是用于控制計算機執(zhí)行循環(huán)體或跳出循環(huán)體的,WHILE當(dāng) 時候,WEN

18、D朝方向 行走,1)WHILE語句的一般格式是,WHILE 條件 循環(huán)體 WEND,當(dāng)計算機遇到WHILE語句時, 先判斷條件的真假,如果條件 符合,就執(zhí)行WHILE與WEND之間的循環(huán)體;然后再檢查上述條件,如果條件仍符合,再次執(zhí)行循環(huán)體,這個過程反復(fù)進行,直到某一次條件不符合為止.這時,計算機將不執(zhí)行循環(huán)體,直接跳到WEND語句后,接著執(zhí)行WEND之后的語句,2)UNTIL語句的一般格式是,DO 循環(huán)體 LOOP UNTIL 條件,DO做什么,LOOP UNTIL繞環(huán)回線走,直到達到某種 條件為止,思考:參照其直到型循環(huán)結(jié)構(gòu)對應(yīng)的程序框圖,說說 計算機是按怎樣的順序執(zhí)行UNTIL語句的,2

19、)UNTIL語句的一般格式是,DO 循環(huán)體 LOOP UNTIL 條件,從UNTIL型循環(huán)結(jié)構(gòu)分析,計算機執(zhí)行該語句時,先 執(zhí)行一次循環(huán)體,然后進行條件的判斷,如果條件不 滿足,繼續(xù)返回執(zhí)行循環(huán)體,然后再進行條件的判斷, 這個過程反復(fù)進行,直到某一次條件滿足時,不再執(zhí) 行循環(huán)體,跳到LOOP UNTIL語句后執(zhí)行其他語句, 是先執(zhí)行循環(huán)體后進行條件判斷的循環(huán)語句,提問:通過對照,大家覺得WHILE型語句與UNTIL型 語句之間有什么區(qū)別呢,區(qū)別:在WHILE語句中,是當(dāng)條件滿足時執(zhí)行循環(huán) 體,而在UNTIL語句中,是當(dāng)條件不滿足時執(zhí)行循環(huán) 體,例1.編寫程序, 計算自然數(shù)1+2+3+99+10

20、0的和,分析:這是一個累加問題.我們可以用WHILE型語句,也可以用UNTIL型語句,i=1 S=0,WHLIE i=100,S=S+i,i=i+1,WEND,PRINT S,END,i=1 S=0,DO,S=S+i i=i+1,LOOP UNTIL,i100,PRINT S,END,變式訓(xùn)練(1): 編寫程序求:n!=12345n的值,如何修改,WHILE語句,i=1 S=0,WHLIE i=100,S=S+i,i=i+1,WEND,PRINT S,END,INPUT “n=”;n,S=1,S=Si,in,S=1,n,S=Si,變式訓(xùn)練(2): 編寫程序求:1357101的值,如何修改,UN

21、ITL語句,i=1 S=0,DO,S=S+i,i=i+1,LOOP UNTIL i100,PRINT S,END,S=1,101,S=Si,i=i+2,直到型,S=1,S=Si,i=i+2,i101,算法案例,1.3,輾轉(zhuǎn)相除法更相減損術(shù),1.1.1,1、求兩個正整數(shù)的最大公約數(shù),1)求25和35的最大公約數(shù) (2)求225和135的最大公約數(shù),2、求8251和6105的最大公約數(shù),所以,25和35的最大公約數(shù)為5,所以,225和135的最大公約數(shù)為533=45,課前復(fù)習(xí),3,15,9,知識回顧:先用兩個數(shù)公有的質(zhì)因數(shù)連續(xù)去除,一直除到所得的商是互質(zhì)數(shù)為止,然后把所有的除數(shù)連乘起來,3,3,5

22、,輾轉(zhuǎn)相除法(歐幾里得算法,觀察用輾轉(zhuǎn)相除法求8251和6105的最大公約數(shù)的過程,第一步 用兩數(shù)中較大的數(shù)除以較小的數(shù),求得商和余數(shù)8251=61051+2146,結(jié)論: 8251和6105的公約數(shù)就是6105和2146的公約數(shù),求8251和6105的最大公約數(shù),只要求出6105和2146的公約數(shù)就可以了,第二步 對6105和2146重復(fù)第一步的做法6105=21462+1813同理6105和2146的最大公約數(shù)也是2146和1813的最大公約數(shù),思考:從上述的過程你體會到了什么,完整的過程,8251=61051+2146,6105=21462+1813,2146=18131+333,181

23、3=3335+148,333=1482+37,148=374+0,例2 用輾轉(zhuǎn)相除法求225和135的最大公約數(shù),225=1351+90,135=901+45,90=452,顯然37是148和37的最大公約數(shù),也就是8251和6105的最大公約數(shù),顯然45是90和45的最大公約數(shù),也就是225和135的最大公約數(shù),思考1:從上面的兩個例子可以看出計算的規(guī)律是什么,S1:用大數(shù)除以小數(shù),S2:除數(shù)變成被除數(shù),余數(shù)變成除數(shù),S3:重復(fù)S1,直到余數(shù)為0,第一步,給定兩個正數(shù)m、n 第二步,計算m除以n所得到余數(shù)r 第三步,m=n;n=r 第四步,若r=0,則m、n的最大公約數(shù)等于m; 否則返回第二

24、步,輾轉(zhuǎn)相除法求最大公約數(shù)算法,輾轉(zhuǎn)相除法是一個反復(fù)執(zhí)行直到余數(shù)等于0停止的步驟,這實際上是一個循環(huán)結(jié)構(gòu),否,開始,輸入兩個正數(shù)m,n,mn,r=m MOD n,r0,輸出n,結(jié)束,m=x,m=n,n=r,否,是,是,x=n,n=m,更相減損術(shù),算理:可半者半之,不可半者,副置分母、子之?dāng)?shù),以少減多,更相減損,求其等也,以等數(shù)約之,第一步:任意給定兩個正整數(shù);判斷他們是否都是偶數(shù)。若是,則用2約簡;若不是,則執(zhí)行第二步,第二步:以較大的數(shù)減較小的數(shù),接著把所得的差與較小的數(shù)比較,并以大數(shù)減小數(shù)。繼續(xù)這個操作,直到所得的減數(shù)和差相等為止,則這個等數(shù)或這個等數(shù)與約簡的數(shù)的乘積就是所求的最大公約數(shù),

25、例1、用更相減損術(shù)求98與63的最大公約數(shù),解:由于63不是偶數(shù),把98和63以大數(shù)減小數(shù),并輾轉(zhuǎn)相減,即:986335; 633528; 35287; 28721; 21714; 1477,所以,98與63的最大公約數(shù)是7,二者算理相似,有異曲同工之妙 1、都是求最大公約數(shù)的方法,計算上輾轉(zhuǎn)相除法以除法為主,更相減損術(shù)以減法為主,計算次數(shù)上輾轉(zhuǎn)相除法計算次數(shù)相對較少,特別當(dāng)兩個數(shù)字大小區(qū)別較大時計算次數(shù)的區(qū)別較明顯。 2、從結(jié)果體現(xiàn)形式來看,輾轉(zhuǎn)相除法體現(xiàn)結(jié)果是以相除余數(shù)為0則得到,而更相減損術(shù)則以減數(shù)與差相等而得到(差為0,輾轉(zhuǎn)相除法與更相減損術(shù)的區(qū)別,秦九韶算法,1.3.2,問題1設(shè)計求

26、多項式f(x)=2x5-5x4-4x3+3x2-6x+7當(dāng)x=5時的值的算法,并寫出程序,點評:上述算法一共做了15次乘法運算,5次加法運算.優(yōu)點是簡單,易懂;缺點是不通用,不能解決任意多項多求值問題,而且計算效率不高,這析計算上述多項式的值,一共需要9次乘法運算,5次加法運算,問題2有沒有更高效的算法,分析:計算x的冪時,可以利用前面的計算結(jié)果,以減少計算量,即先計算x2,然后依次計算,的值,第二種做法與第一種做法相比,乘法的運算次數(shù)減少了,因而能提高運算效率.而且對于計算機來說,做一次乘法所需的運算時間比做一次加法要長得多,因此第二種做法能更快地得到結(jié)果,問題3能否探索更好的算法,來解決任

27、意多項式的求值問題,f(x)=2x5-5x4-4x3+3x2-6x+7 =(2x4-5x3-4x2+3x-6)x+7 =(2x3-5x2-4x+3)x-6)x+7 =(2x2-5x-4)x+3)x-6)x+7 =(2x-5)x-4)x+3)x-6)x+7,v0=2 v1=v0 x-5=25-5=5 v2=v1x-4=55-4=21 v3=v2x+3=215+3=108 v4=v3x-6=1085-6=534 v5=v4x+7=5345+7=2677,這種求多項式值的方法就叫秦九韶算法,f(x)=anxn+an-1xn-1+an-2xn-2+a1x+a0,我們可以改寫成如下形式,求多項式的值時,

28、首先計算最內(nèi)層括號內(nèi)一次多項式的值,即,v1=anx+an-1,然后由內(nèi)向外逐層計算一次多項式的值,即,一般地,對于一個n次多項式,v2=v1x+an-2,v3=v2x+an-3,vn=vn-1x+a0,這樣,求n次多項式f(x)的值就轉(zhuǎn)化為求n個一次多項式的值.這種算法稱為秦九韶算法,f(x)=(anx+an-1)x+an-2)x+a1)x+a0,秦九韶算法,點評:秦九韶算法是求一元多項式的值的一種方法. 它的特點是:把求一個n次多項式的值轉(zhuǎn)化為求n個一次多項式的值,通過這種轉(zhuǎn)化,把運算的次數(shù)由至多n(n+1)/2次乘法運算和n次加法運算,減少為n次乘法運算和n次加法運算,大大提高了運算效率

29、,v1=anx+an-1,v2=v1x+an-2,v3=v2x+an-3,vn=vn-1x+a0,觀察上述秦九韶算法中的n個一次式,可見vk的計算要用到vk-1的值,若令v0=an,得,這是一個在秦九韶算法中反復(fù)執(zhí)行的步驟,因此可用循環(huán)結(jié)構(gòu)來實現(xiàn),問題畫出程序框圖,表示用秦九韶算法求5次多項式f(x)=a5x5+a4x4+a3x3+a2x2+a1x+a0當(dāng)x=x0 (x0是任意實數(shù))時的值的過程,然后寫出程序,算法步驟如下: 第一步,輸入多項式次數(shù)n、最高次項的系數(shù)an和x的值. 第二步,將v的值初始化為an,將i的值初始化為n-1. 第三步,輸入i次項的系數(shù)ai. 第四步,v=vx+ai,i

30、=i-1. 第五步,判斷i是否大于或等于0,若是,則返回第三步;否則,輸出多項式的值v,否,程序框圖,開始,輸入n,an,x的值,i0,i=n-1,v=an,v=vx+ai,i=i-1,輸出v,結(jié)束,是,輸入ai,進位制,1.3.3,問題1我們常見的數(shù)字都是十進制的,但是并不是生活中的每一種數(shù)字都是十進制的.比如時間和角度的單位用六十進位制,電子計算機用的是二進制.那么什么是進位制?不同的進位制之間又有什么聯(lián)系呢,進位制是人們?yōu)榱擞嫈?shù)和運算的方便而約定的一種記數(shù)系統(tǒng),約定滿二進一,就是二進制;滿十進一,就是十進制;滿十六進一,就是十六進制;等等,滿幾進一”,就是幾進制,幾進制的基數(shù)就是幾,可使

31、用數(shù)字符號的個數(shù)稱為基數(shù).基數(shù)都是大于1的整數(shù),例如:二進制可使用的數(shù)字有0和1,基數(shù)是2; 十進制可使用的數(shù)字有0,1,2,8,9等十個數(shù)字,基數(shù)是10; 十六進制可使用的數(shù)字或符號有09等10個數(shù)字以及AF等6個字母(規(guī)定字母AF對應(yīng)1015),十六進制的基數(shù)是16,注意:為了區(qū)分不同的進位制,常在數(shù)字的右下腳標(biāo)明基數(shù),如111001(2)表示二進制數(shù),34(5)表示5進制數(shù),十進制數(shù)一般不標(biāo)注基數(shù),問題2十進制數(shù)3721中的3表示3個千,7表示7個百,2表示2個十,1表示1個一,從而它可以寫成下面的形式,3721=3103+7102+2101+1100,想一想二進制數(shù)1011(2)可以類

32、似的寫成什么形式,1011(2)=123+022+121+120,同理,3421(5)=353+452+251+150,C7A16(16)=12164+7163+10162 +1161+6160,一般地,若k是一個大于1的整數(shù),那么以k為基數(shù)的k進制數(shù)可以表示為一串?dāng)?shù)字連寫在一起的形式,anan-1a1a0(k) (0ank,0an-1,a1,a0k,意思是:(1)第一個數(shù)字an不能等于0; (2)每一個數(shù)字an,an-1,a1,a0都須小于k,k進制的數(shù)也可以表示成不同位上數(shù)字與基數(shù)k的冪的乘積之和的形式,即,anan-1a1a0(k)=ankn+an-1kn-1 +a1k1+a0k0,注意

33、這是一個n+1位數(shù),問題3二進制只用0和1兩個數(shù)字,這正好與電路的通和斷兩種狀態(tài)相對應(yīng),因此計算機內(nèi)部都使用二進制.計算機在進行數(shù)的運算時,先把接受到的數(shù)轉(zhuǎn)化成二進制數(shù)進行運算,再把運算結(jié)果轉(zhuǎn)化為十進制數(shù)輸出.那么二進制數(shù)與十進制數(shù)之間是如何轉(zhuǎn)化的呢,例1:把二進制數(shù)110011(2)化為十進制數(shù),分析:先把二進制數(shù)寫成不同位上數(shù)字與2的冪的乘積之和的形式,再按照十進制數(shù)的運算規(guī)則計算出結(jié)果,解:110011(2)=125+124+023+022+121+120=132+116+12+1=51,問題4你會把三進制數(shù)10221(3)化為十進制數(shù)嗎,解:10221(3)=134+033+232+231+130 =81+18+6+1=106,總結(jié): k進制數(shù)轉(zhuǎn)化為十進制數(shù)的方法,先把k進制的數(shù)表示成不同位上數(shù)字與基數(shù)k的冪的乘積之和的形式,即,anan-1a1a0(k) =ankn+an-1kn-1+a1k1+a0k0,再按照十進制數(shù)的運算規(guī)則計算出結(jié)果,例 設(shè)計一個算法,把k進制數(shù)a(共有n位)化為十進制數(shù)b,算法步驟如下,開始,輸入a,k,n,b=0,i=1,把a的右數(shù)第i位數(shù)字賦給t,i=i+1,in,輸出b,結(jié)束,否,是,INPUT a,k,n i=1 b=0 t=a MOD 10 DO b=b+t*k(i-1) a=a10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論