《高中數學 算法案例課件 新人教A版必修3》由會員分享,可在線閱讀,更多相關《高中數學 算法案例課件 新人教A版必修3(35頁珍藏版)》請在裝配圖網上搜索。
1、四四.算法案例算法案例多項式求值的秦九韶方法多項式求值的秦九韶方法 nnnxaxaxaaxP22101n xPnktkukkxt kk2210kxaxaxaau kk1kk1kktauuxttn, 2 , 1k (3.4.2)作為遞推公式(3.4.2)的初值為: 000au1t(3.4.3)(1)逐項法多項式求值。 輸入:存放 的系數數組A(0:n); xPn自變量x值。其中1n 輸出: 值P xPn xt;x1A0Ap tiAPP;xtt 012n1nnnaxaxaxaxaxP k1kknnaxuuau0 , 1 , 1 nk 0nuxP xPn xPn1n nAP iAxPP 例. 中國剩
2、余定理(孫子定理)若k2,且m1,m2,mk是兩兩互素的k個正整數,令M= m1m2mk=m1M1=m2M2=mkMk。 則同余式組:x1=b1(modm1),x2=b2(modm2),xk=bk(modmk) 其正整數解是:Xb1M1M1+b2M2M2+bkMkMk(modM) 其中Mi是滿足同余式: MiMi1(mod mi) (i = 1,2k) 用孫子定理解同余式組: xi=bi(modmi) ( i = 1,2k )的算法步驟如下:kiiiiiiiiiiikiiMbaxMM, ., k)(imMMMkimMMmM1i0)(mod a . 31 )(mod1 . 2)., , 1( .
3、 1數解是:,則同余方程組的正整令的同余方程:分別解關于分別計算設2.對半法查找對半法查找(二分法二分法)算法算法對這種算法的實質是在一個有限且有序的對象中,通過每次縮減一半查找范圍而達到迅速確定目的一個有效算法。因此有著很廣泛的應用。例如,在數學中有很多方程是寫不出根的解析表達式的,但是根的存在范圍比較容易確定,那么如何才能找到它的根的一個足夠準確的近似值呢?這時對半查找算法就可以大顯身手了。由初等函數f(x)=0構成的方程,如果有f(a)f(b)0,則可以肯定方程f(x)=0在(a , b)至少有一個實數根。 選擇(a , b)的中點c,若f(c)=0,則根就是x=c。若f(c)0,則用c
4、值取代相應的a或b(取代原則是:保證有f(a)f(b) a b c 10,abc=30723,且,且a b+c,試確定,試確定a、b、c的值。的值。分析問題分析問題解決這個問題應當從解決這個問題應當從abc=30723入手。把入手。把30723三個整三個整數相乘的積,只能有有限種情況,我們可以把這些情況一一數相乘的積,只能有有限種情況,我們可以把這些情況一一羅列出來,然后分析哪一種情況是符合條件的。從而找到答羅列出來,然后分析哪一種情況是符合條件的。從而找到答案。案。(在列舉所有情況時,注意三個因子都大于在列舉所有情況時,注意三個因子都大于10,這可以減,這可以減少列舉的工作量少列舉的工作量)
5、。把把30723分解為分解為3個大于個大于10的因子的乘積只有的因子的乘積只有5種情況種情況1119147(三個因子的和是三個因子的和是177)1121133(三個因子的和是三個因子的和是165)194957 (三個因子的和是三個因子的和是101)114957 (三個因子的和是三個因子的和是117)192177 (三個因子的和是三個因子的和是117)在這在這5種情況中考察,符合種情況中考察,符合ab+c而且最大的數小于而且最大的數小于100的,的,只有最后一種情況,即只有最后一種情況,即a=77,b=21,c=19。計算算法計算算法設計窮舉算法的關鍵是如何列舉所有可能的情況,絕對不能設計窮舉算
6、法的關鍵是如何列舉所有可能的情況,絕對不能遺漏,最好不要重復。在列舉時注意變量的范圍,可以減少遺漏,最好不要重復。在列舉時注意變量的范圍,可以減少工作量。工作量。我們可以從最小的變量我們可以從最小的變量c入手,讓它從入手,讓它從10開始變化。但變化開始變化。但變化的范圍到哪里為止呢?粗略估算一下,三個數相乘是的范圍到哪里為止呢?粗略估算一下,三個數相乘是30723,最小的最小的c不超過它的立方根。我們可以用平方根做近似替代,不超過它的立方根。我們可以用平方根做近似替代,不必作太多推算。不必作太多推算。當當c值產生之后,就可以處理變量值產生之后,就可以處理變量b。因為它不小于。因為它不小于c,讓
7、它,讓它從從c開始,也讓它變化到開始,也讓它變化到30723的平方根。的平方根。有了有了c和和b的值之后,就要判斷他們是否都是的值之后,就要判斷他們是否都是30723的因子。的因子。如果是,計算出第三個因子如果是,計算出第三個因子a,然后進行判斷:,然后進行判斷:a是否大于是否大于b+c并且并且a100。滿足條件就是解答了。滿足條件就是解答了。例題例題 (錢幣問題錢幣問題)在日程生活中常常需要用一些較小面額的錢幣去組合出一定的幣值?,F有面值為1元、2元和5元的鈔票(假設每種鈔票的數量都足夠多),從這些鈔票中取出30張使其總面值為100元,問有多少種取法?每種取法的各種面值的鈔票各為多少張?分析
8、問題分析問題顯然列出一條算式來解決錢幣問題是有困難的。既然解析法很難用上,我們嘗試通過列舉所有可能的情況(窮舉),從中判斷出合符條件的解答。 當鈔票數量比較多,總幣值比較大時,人工列舉所有鈔票組合(窮舉)就很麻煩,這時需要使用計算機來幫我們窮舉。但使用計算機來窮舉,必須清楚地說出窮舉的每一個步驟,并通過程序設計語言轉化為計算機能后執(zhí)行的過程,才能解決問題。 錢幣問題有3種面額的鈔票,鈔票的總張數是30張,又應當如何窮舉呢?經分析可以知道:當有兩種面額的鈔票數目確定了之后,可以從總張數為30確定第三種鈔票的張數,然后由總面額是否100元而判斷這個組合是否合乎要求。此外,先確定面額大的鈔票可以使窮
9、舉的次數少些。設計算法設計算法 用ONE、TWO、FIVE分別記錄1元、2元、5元鈔票的張數。變量ANSWER記錄符合條件的解的數目。窮舉的過程如下:讓ANSWER=0,FIVE=0;TWO=0讓ONE=30 TWO FIVE;檢查5FIVE2TWOONE 是否等于100,若是, 則得到一組解,這時讓ANSWER增加1。并且輸出解答如果TWO30,那么讓TWO增加1,轉步驟;如果FIVE20,那么讓FIVE增加1,轉步驟結束可把這些步驟用框圖表示如圖4-7:Click to display漢諾漢諾(Hanoi)塔問題是一個著名的應用遞歸算法解決的問題。塔問題是一個著名的應用遞歸算法解決的問題。
10、 問題問題4-17: 傳說在古代印度的貝拿勒斯神廟里安放了一塊黃銅板,傳說在古代印度的貝拿勒斯神廟里安放了一塊黃銅板,板上插了三根寶石柱,在其中一根寶石柱自上而下由小到大板上插了三根寶石柱,在其中一根寶石柱自上而下由小到大地疊放著地疊放著64個大小不等的金盤。一名僧人把這些金盤從一根個大小不等的金盤。一名僧人把這些金盤從一根寶石柱移到另外一根上。僧人在移動金盤時遵守下面寶石柱移到另外一根上。僧人在移動金盤時遵守下面3條規(guī)條規(guī)則:則:一次只能移動一個金盤。一次只能移動一個金盤。每個金盤只能由一根寶石柱移到另外一根寶石柱。每個金盤只能由一根寶石柱移到另外一根寶石柱。任何時候都不能把大的金盤放在小的
11、金盤上。任何時候都不能把大的金盤放在小的金盤上。神化說,如果僧人把64個金盤完全地從一根寶石柱移到了另外一根上,世界的末日就要到了。當然,神化只能當故事聽,世界不可以因為個別人的活動而導致末日。不過,如果能夠計算出僧人按規(guī)則搬完64個金盤,地球能否繼續(xù)存在也的確是個問題!因為即使僧人的動作十分敏捷,每秒都能移動一個金盤,那也得要幾億年!分析問題分析問題 要模擬金盤的移動過程是比較困難的,但如果用遞歸的思想來進行(壓縮規(guī)模,把問題解決在最簡單的情況),則問題可以解決。 我們把3根寶石柱分別命名為A、B、C。最初有N個金盤放在A,需要把它們全部按規(guī)則移動到B。 當N=1時,直接把金盤從A搬到B就可
12、以了,1次成功。 當N2,那么需要利用C柱來過渡。按照遞歸的思想,我們假設已經找到一種把N1個金盤從一根柱搬到另外一根柱的方法,然后看看如何通過它來實現搬動N個金盤。我們只要把N1個金盤從A搬到C,然后把最大的金盤從A搬到B,最后把C上的N1個金盤搬到B就可以了??窟f歸的思想,我們輕而易舉地完成了整個搬動。設計算法設計算法我們定義一個過程Hanoi(N,A,B,C),表示有N個金盤需要從A柱搬到B柱(以C柱為過渡)。那么完成它只需3步:Hanoi(N1,A,C,B)它的意思是把A柱上的N1個金盤搬到C柱,AB它的意思是把一個(最大的)金盤從A柱搬到B柱,Hanoi(N,C,B,A)它的意思是把C柱上的N1個金盤搬到B柱。