信息安全案例教程:技術與應用 第2版 課件 第2章 數(shù)值計算_第1頁
信息安全案例教程:技術與應用 第2版 課件 第2章 數(shù)值計算_第2頁
信息安全案例教程:技術與應用 第2版 課件 第2章 數(shù)值計算_第3頁
信息安全案例教程:技術與應用 第2版 課件 第2章 數(shù)值計算_第4頁
信息安全案例教程:技術與應用 第2版 課件 第2章 數(shù)值計算_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章數(shù)值計算信息學院2024引言2.1案例:蒙特卡洛模擬計算圓周率2.2數(shù)字運算符2.3數(shù)值計算常用函數(shù)2.4相關標準庫2.5編程實踐:Numpyfinancial2.6本章小結2.7習題本章將深入學習數(shù)字運算符以及數(shù)值計算常用的函數(shù)。在章首案例的指引下,還將學習相關標準庫的引入和使用。在編程實踐中,將介紹如何安裝和使用第三方庫。通過本章學習,你將初步領略到Python的功能強大。2.1案例:蒙特卡洛模擬計算圓周率蒙特卡羅(MonteCarlo)是摩洛哥的一座城市,以賭博聞名于世。20世紀40年代,計算機之父馮

諾伊曼(JohnvonNeumann)等人提出了蒙特卡羅算法,該算法通過大量隨機樣本去了解一個高度復雜的系統(tǒng),與賭博中的隨機性、概率性有著天然而密切的聯(lián)系,故而命名。蒙特卡羅法也稱為隨機模擬法,其基本原理就是不斷抽樣、逐漸逼近。本章以計算圓周率為例,看一看如何采用蒙特卡羅法逐漸逼近問題的解。圓周率

是圓形的周長與直徑的比值,是一個無限不循環(huán)小數(shù),其精確數(shù)值一直是千百年來數(shù)學家們追蹤的目標。2.1案例:蒙特卡洛模擬計算圓周率有一個正方形內部相切一個圓,圓的半徑為r,正方形的邊長為2r,圓的面積為

r2,正方形的面積為4r2,圓和正方形的面積之比是π/4。在這個正方形內部,隨機產生n個點(這些點服從均勻分布),計算它們與中心點的距離是否大于圓的半徑,以此判斷是否落在圓的內部。統(tǒng)計圓內的點數(shù),與n的比值乘以4,就是π的值。理論上,n越大,計算的π值越準。編寫程序并將文件命名為ch02.py,運行程序。輸入要模擬生成的點的個數(shù),程序計算輸出

的近似值和運行耗時??梢钥吹?,隨著點數(shù)的增加,蒙特卡洛模擬計算的精確度越來越高,但程序運行速度也越來越慢。2.1案例:蒙特卡洛模擬計算圓周率由于隨機性,程序每次運行的結果都不會完全相同,如果在不同計算機上運行程序,由于軟、硬件條件的不同,程序運行時間也不同,但都遵循以上規(guī)律。第1章中已經介紹了數(shù)字的幾種基本類型以及算術運算符,本節(jié)介紹比較運算符和邏輯運算符。與算術運算符不同,比較運算符和邏輯運算符也適用于其他標準數(shù)據(jù)類型,包括字符串、列表、元組。2.2數(shù)字運算符數(shù)字類型支持比較運算,用來比較數(shù)值的大小,返回布爾值True或False。不同于很多其他語言,Python的多個比較運算可以在同一行上進行,求值順序為從左到右,如:3<4<5。2.2.1比較運算符運算符功能expr1<expr2expr1小于expr2expr1>expr2expr1大于expr2expr1<=expr2expr1小于等于expr2expr1>=expr2expr1大于等于expr2expr1==expr2expr1等于expr2expr1!=expr2expr1不等于expr2注意:判斷是否相等的比較運算符“==”,是兩個等號,它不同于一個等號的賦值運算符。本章案例中要將隨機產生的點與中心點的距離和圓的半徑進行比較,以此來判斷這個點是否落在圓的內部。假設圓的半徑為1,變量dist表示隨機產生的點與中心點的距離,變量points是隨機產生的點數(shù),變量in_points用來統(tǒng)計落在圓內的點數(shù),則代碼如下:points=int(input("Numberofpoints:"))in_points=0foriinrange(1,points+1):…ifdist<=1:in_points+=1這里的if語句是單分支結構,和第1章中介紹的雙分支結構相比,沒有else部分,即條件不滿足時什么也不會做。2.2.1比較運算符程序中已經有了兩層縮進,第一層縮進是for循環(huán)體,第二層縮進是for循環(huán)體內if下的語句塊。for循環(huán)體對每一個隨機產生的點都要迭代一次,但只有落在圓內的點才會執(zhí)行if下的語句塊。。邏輯運算符也稱為布爾運算符,其優(yōu)先級低于比較運算符,其中not的優(yōu)先級高于and和or。前面提到的Python支持的一行上進行多個比較運算,本質上是由and連接起來的多個表達式,比如:3<4<5等同于3<4and4<5。邏輯非是單目運算符,運算后True變False,或者False變True。邏輯與、邏輯或為雙目運算符,只有兩個表達式的值均為True時,邏輯與的結果為True;只有兩個表達式的值均為False時,邏輯或的結果為False。2.2.2邏輯運算符運算符功能操作性定義notexpr邏輯非如果expr為False,返回True;否則返回Falseexpr1andexpr2邏輯與如果expr1為False,返回expr1;否則返回expr2expr1orexpr2邏輯或如果expr1為True,返回expr1;否則返回expr2Python的邏輯運算符為短路(short-circuit)運算符,即一旦結果確定就會返回值。在邏輯與中,如果expr1為False就會返回False,不會再去執(zhí)行expr2。同樣,在邏輯或中,如果expr1為True就會返回True,不會再去執(zhí)行expr2。邏輯運算遵守類似于算術運算的代數(shù)法則,稱為布爾代數(shù)。and類似于乘法運算,or類似于加法運算,not類似于取負,0和1對應False和True。2.2.2邏輯運算符由于邏輯運算符的優(yōu)先級低于比較運算符,在描述分配律和摩根定律(DeMorgan'slaws)的表達式中,比較運算符“==”的左右兩邊都加上了括號,表示先執(zhí)行邏輯運算,再執(zhí)行比較運算。2.2.2邏輯運算符法則布爾代數(shù)普通代數(shù)0、1律(aandFalse)==Falsea*0=0(aandTrue)==aa*1=a(aorFalse)==aa+0=a(aorTrue)==True

還原律(not(nota))==a-(-a)=a分配律(aand(borc))==((aandb)or(aandc))a*(b+c)=a*b+a*c(aor(bandc))==((aorb)and(aorc))

摩根定律(not(aorb))==((nota)and(notb))

(not(aandb))==((nota)or(notb))

在數(shù)字運算中,如果兩個操作數(shù)的數(shù)字類型不一致,Python會進行數(shù)字類型的自動轉換,也就是說會自動將一個操作數(shù)轉換為與另一個操作數(shù)相同的數(shù)字類型,無須程序員通過類型轉換函數(shù)來進行轉換。自動類型轉換的具體規(guī)則如下:如果兩個操作數(shù)是同一種數(shù)字類型,無須進行類型轉換;否則,如果有一個操作數(shù)是浮點型,另一個操作數(shù)被轉換為浮點型。將整型轉換為浮點型,只要在后面加個“.0”就可以了,不會有數(shù)據(jù)的丟失,而如果將浮點型轉換為整型,小數(shù)部分的數(shù)據(jù)將會丟失。2.2.3混合類型運算

【例2-1】采用無窮級數(shù)法計算圓周率由于每一項是交替加減,累加法需要根據(jù)項數(shù)來判定加還是減,即偶數(shù)項為加,奇數(shù)項為減。判斷奇、偶數(shù)可以采用對2取余運算,如果余數(shù)為0,即為偶數(shù),否則為奇數(shù)。0即為False,非0為True,對取余結果進行邏輯非運算,表示為偶數(shù)時結果為True,為奇數(shù)時結果為False。變量pi初值為整型,在累加過程中由于另一個操作數(shù)為浮點型,被自動轉換為浮點型進行運算,運算結果也為浮點型。累加后輸出該項的計算結果,給項數(shù)i指定“%02d”的格式,表示留出2位的空間,如果不夠兩位,則在前面添加0;給變量pi指定“%9.7f”的格式,表示留出9位的空間,其中小數(shù)點后面有7位。最后給變量a、b、c做累加,為下一項做準備。循環(huán)結束后,程序結束?!纠?-1】采用無窮級數(shù)法計算圓周率運行如上程序,共輸出98行,如下所示:02items:pi=3.1666667…50items:pi=3.1415947…99items:pi=3.1415924【例2-1】采用無窮級數(shù)法計算圓周率本章案例中落在圓內的點數(shù)(in_points)與所有點數(shù)(points)的比值乘以4,就是圓周率(pi)的值:pi=in_points/points*4變量in_points和points都是整型,相除以后的結果為浮點型,在與整數(shù)4相乘時,4自動轉換為浮點型4.0,從而計算得到浮點型的pi值。2.2.3混合類型運算2.3數(shù)值計算常用函數(shù)第1章已經學習了數(shù)字類型的轉換函數(shù),本節(jié)介紹數(shù)字運算函數(shù)以及整型相關函數(shù)(不適合非整型的數(shù)字類型)。divmod()是整除和取余運算的結合,返回值是商和余數(shù)的元組。round()函數(shù)的4舍5入,如果是5時,情形較為復雜,并不一定都“入”,且與保留小數(shù)位數(shù)相關。如果保留小數(shù)位數(shù)為0,round()遇5時向偶數(shù)取整。2.3.1數(shù)字運算函數(shù)函數(shù)功能abs(num)返回num的絕對值max(num1,num2,…)返回若干個數(shù)字中的最大值min(num1,num2,…)返回若干個數(shù)字中的最小值divmod(num1,num2)返回一個元組(num1//num2,mum1%num2)pow(num1,num2,mod=1)取num1的num2次方,再對mod取余round(flt,ndig=0)對浮點型flt進行四舍五入,保留ndig位小數(shù)本章案例輸出結果時,對pi的值保留7位小數(shù):print("Theapproximatevalueofpiis",round(pi,7),"while",in_points,"outof",points,"pointsareinthecircle.")print()函數(shù)中用逗號分隔輸出的多項內容,輸出時默認分隔符為空格。注意:如果輸出的內容是字符串常量,要加上雙引號;如果輸出的內容是數(shù)字,輸出時會自動轉換為字符串。2.3.1數(shù)字運算函數(shù)進制表示函數(shù)字符轉換函數(shù)2.3.2整型相關函數(shù)第1章講到,除十進制外,Python也支持八進制、十六進制或二進制來表示整型。如果想知道一個整數(shù)如何用八進制、十六進制、二進制來表示,可以分別調用內置函數(shù)oct()、hex()、bin()。注意:進制表示函數(shù)返回的是包含整數(shù)進制表示的字符串。進制表示函數(shù)在計算機里,字符是用ASCII碼表示的,每個字符對應一個0~255的整數(shù)(用8個二進制位即1個字節(jié)表示。字符轉換函數(shù)ASCII字符ASCII字符ASCII字符ASCII字符ASCII字符32空格51370F89Y108l33!52471G90Z109m34"53572H91[110n35#54673I92\111o36$55774J93]112p37%56875K94^113q38&57976L95_114r39'58:77M96`115s40(59;78N97a116t41)60<

79O98b117u42*61=80P99c118v43+62>

81Q100d119w44,63?82R101e120x45-64@83S102f121y46.65A84T103g122z47/66B85U104h123{48067C86V105i124|49168D87W106j125}50269E88X107k126~字符轉換函數(shù)chr()是ASCII碼轉換函數(shù),將0~255的整數(shù)轉換為相應的字符。chr()和str()雖然都是將數(shù)字轉換為字符串,但差別很大。ord()是chr()的逆函數(shù),即將單個字符轉換為其相應的ASCII碼值。其參數(shù)只能是包含一個字符的字符串,如果包含兩個及以上的字符,會出現(xiàn)類型錯誤(TypeError)。2.4相關標準庫除了2.3節(jié)介紹的數(shù)值計算常用函數(shù),還有一些與數(shù)值計算相關的標準庫和第三方庫提供了很多有用的函數(shù)。標準庫是Python自帶的,引入后可以直接使用;第三方庫則需要額外安裝,方能引入使用。本節(jié)介紹標準庫,包括math、random、time。math庫是一個包含4個數(shù)學常數(shù)和44個函數(shù)定義的模塊,如果要使用其中的常量或函數(shù),首先要引入這個模塊。如果想查看math庫中定義的所有內容,可以在IDLE的交互式解釋器中使用幫助函數(shù)來查看,即:help(math)。2.4.1math庫math庫中的常量和函數(shù)常量/函數(shù)數(shù)學表達功能pi

圓周率的近似值ee歐拉數(shù)的近似值sqrt(x)x的平方根sin(x)x(弧度)的正弦值cos(x)x(弧度)的余弦值tan(x)x(弧度)的正切值asin(x)x(弧度)的反正弦值acos(x)x(弧度)的反余弦值atan(x)x(弧度)的反正切值radians(x)把x(角度)轉換成弧度log(x)x的自然對數(shù),底數(shù)為elog10(x)x的常用對數(shù),底數(shù)為10exp(x)e的x次方ceil(x)大于等于x的最小整數(shù)floor(x)小于等于x的最大整數(shù)引入模塊的語句一般放在程序的最前面。可以采用以下三種方式:import<module>from<module>import*from<module>import<function>第一種方式引入整個模塊,模塊中所有的內容都可以使用,但在使用時需要指定來源于哪個模塊,即在前面加上<module>.,注意這個“.”。使用math庫中的常量如果只是想使用

來進行計算,我們可以直接使用math.pi,而無需采用本章案例的蒙特卡洛算法或者無窮級數(shù)法去進行近似求解。第二種方式從模塊中引入所有內容,“*”表示所有,與第一種方式的不同在于,引入后模塊中的所有內容可以直接使用,無需指定模塊名。這種方式的好處是使用起來比較簡便,省去每次使用都要加上模塊名的麻煩。缺點是給程序帶來額外的負擔,模塊中的內容無論是否使用,都被引入到當前程序中。此外,由于前面不再需要指定模塊名,有可能出現(xiàn)引入的內容和當前程序中的內容重名的情況,造成不必要的困擾和錯誤。使用math庫中的常量第三種方式從模塊中引入指定內容,這種方式占用資源最少,需要使用什么引入什么就可以了,如果需要引入多項內容,用逗號將它們分隔開來。缺點是如果需要使用模塊中的很多項內容,都需要在from-import語句中一一列出來。使用math庫中的常量調用函數(shù)與使用常量類似,不同的是函數(shù)名后面有一對圓括號,里面可能沒有參數(shù),也可能有多個參數(shù)。我們來看一個例子。調用math庫中的函數(shù)

【例2-2】采用球面余弦定理計算地球表面兩點之間的距離采用from-import語句從math庫引入4個函數(shù),其中后3個函數(shù)在公式中用到,radians()函數(shù)用來將用戶輸入的角度轉換為弧度,以便進行運算。4條分別輸入兩個點緯度和經度的輸入語句,嵌套了3個函數(shù),最里面的是input()函數(shù),然后用float()函數(shù)將用戶輸入的字符串轉換為浮點型,最后是將浮點型的角度轉換為浮點型的弧度。計算距離的語句按照公式寫就好了,注意調用函數(shù)時一定要加圓括號,如果有參數(shù)的話,要放在圓括號里面。最后是輸出語句,將計算出來的距離保留一位小數(shù)輸出?!纠?-2】采用球面余弦定理計算地球表面兩點之間的距離假設我們想計算一下中國北京和美國華盛頓特區(qū)之間的距離,由于兩個城市都比較大,我們取城市中的一個點大致估算一下距離。北京北緯39°54’11”、東經116°23’29”,換成小數(shù)就是北緯39.93、東經116.46;華盛頓特區(qū)北緯38°53’22”、西經77°2’7”,換成小數(shù)就是北緯38.94、西經77.05。注意:北緯和東經輸入正數(shù),南緯和西經輸入負數(shù)。運行程序,輸入以上4個值,輸出計算出來的距離為11138.2公里?!纠?-2】采用球面余弦定理計算地球表面兩點之間的距離本章案例中要計算隨機產生的點與中心點之間的距離,假設中心點的坐標為(0,0),隨機產生的點坐標為(x,y),計算兩點之間距離的語句為:dist=sqrt(x**2+y**2)我們調用了math庫中的sqrt()函數(shù)來求平方根,如果不用的話,也可以通過求冪來計算,即求1/2次方。到目前為止,本章案例的實現(xiàn)代碼匯總如下:調用math庫中的函數(shù)frommathimportsqrtpoints=int(input("Numberofpoints:"))in_points=0foriinrange(1,points+1):#隨機產生一個點的坐標(x,y)dist=sqrt(x**2+y**2)ifdist<=1:in_points+=1pi=in_points/points*4print("Theapproximatevalueofpiis",round(pi,7),"while",in_points,"outof",points,"pointsareinthecircle.")調用math庫中的函數(shù)random庫是一個用來生成偽隨機數(shù)(pseudo-randomnumber)的模塊,經常在模擬實驗中使用。這個模塊是一個名為random.py的程序文件,可以在Python安裝路徑下的lib子文件夾中(如C:\Python311\Lib)找到。如果想查看random庫中定義的所有內容,可以在IDLE的交互式解釋器中使用幫助函數(shù)來查看,即:help(random)。2.4.2random庫這些隨機數(shù)生成器以當前時間戳為種子(seed),因此每次調用時生成的隨機數(shù)都是不同的。本章案例中需要隨機產生一個點的坐標(x,y),我們可以調用random庫中的random()函數(shù)來實現(xiàn),隨機生成的點在正方形的右上象限。random庫中的常用函數(shù)函數(shù)功能randint(a,b)在[a,b]范圍內產生一個隨機整數(shù)randrange(start,stop[,step])從range(start,stop[,step])返回的整數(shù)范圍中隨機選擇一個元素uniform(a,b)在[a,b)范圍內產生一個隨機小數(shù)random()在[0,1)范圍內產生一個隨機小數(shù)choice(seq)從一個非空列表seq中隨機選擇一個元素frommathimportsqrtfromrandomimportrandompoints=int(input("Numberofpoints:"))in_points=0foriinrange(1,points+1):x,y=random(),random()#隨機產生一個點的坐標(x,y)dist=sqrt(x**2+y**2)ifdist<=1:in_points+=1pi=in_points/points*4print("Theapproximatevalueofpiis",round(pi,7),"while",in_points,"outof",points,"pointsareinthecircle.")random庫中的常用函數(shù)from后面的random表示模塊,import后面的random表示函數(shù)。填補上一小節(jié)中注釋處的語句1827年,蘇格蘭生物學家羅伯特

布朗(RobertBrown)發(fā)現(xiàn)水中的花粉及其它懸浮的微小顆粒不停地作不規(guī)則的曲線運動,繼而把這種不可預測的自由運動命名為“布朗運動”。1959年,奧斯本(Obsborne)根據(jù)布朗運動原理提出了隨機漫步(randomwalk)理論,認為股票價格的變化類似于布朗運動,具有隨機漫步的特點,其變動路徑沒有任何規(guī)律可循。基于布朗運動的對數(shù)正態(tài)隨機漫步理論,逐漸成為金融市場的經典框架,也為之后量化金融的發(fā)展奠定了基礎。隨機漫步問題假設你站在一條很長的筆直的人行道上,手拿一枚硬幣,每走一步都由扔硬幣決定,如果正面朝上,向前走一步,如果背面朝上,向后退一步,一直這么走下去,你能走到哪里呢?【例2-3】模擬一維隨機漫步我們在[-1,1)之間隨機生成一個小數(shù),如果這個數(shù)大于0,則向前一步,否則后退一步。在[-1,1)之間隨機生成一個小數(shù)可以用2*random()-1來實現(xiàn)。累加變量steps賦初值為0,循環(huán)迭代n次,如果隨機生成的小數(shù)大于0,累加變量steps加1,否則減1。運行程序,假設我們想日行一萬步,輸入10000,程序輸出最終行走的步數(shù),如下所示:Howmanystepsdoyouintendtotakethroughthesimulation?10000Theobjecthastraveled-2stepsbasedonthesimulation.也就是說隨機漫步一萬步,最終比原點后退了兩步。由于隨機性,每次運行的結果都會不同,比如再運行一次程序,輸入10000,最終結果是比原點后退了80步。這是一維隨機漫步,下面來看看二維隨機漫步。【例2-3】模擬一維隨機漫步這次你可以以任何方向行走,方向可以用偏離x軸的角度來衡量,隨機產生一個角度,沿此方向行走一步,坐標發(fā)生變化,一直這么走下去,看看終點距離原點的位置。【例2-4】模擬二維隨機漫步這次要在[0,360)之間隨機生成一個角度,我們可以用360*random()來實現(xiàn)。行走一步后,橫坐標和縱坐標的變化可以通過其余弦值和正弦值求得,注意求余弦和正弦需要使用弧度。讓用戶輸入模擬行走的步數(shù)n,累加變量x和y賦初值為0,即原點坐標為(0,0),循環(huán)迭代n次,隨機生成一個角度并賦值給變量angle,分別求其余弦值和正弦值來更新x和y的值。循環(huán)結束后,輸出終點的坐標,保留一位小數(shù)。運行程序,仍然輸入10000,程序輸出隨機漫步一萬步后終點的坐標。同樣由于隨機性,程序每次運行的終點都不相同,以下是某一次運行的結果:Howmanystepsdoyouintendtotakethroughthesimulation?10000Theobjecthastraveledto(51.0,-32.4)after10000stepsbasedonthesimulation.【例2-4】模擬二維隨機漫步time庫是一個用來處理時間的模塊,可以獲取當前時間并進行格式化輸出,也可以精確計時,用于程序性能分析。如果想查看time庫中定義的所有內容,可以在IDLE的交互式解釋器中使用幫助函數(shù)來查看,即:help(time)。2.4.3time庫time庫中的常用函數(shù)函數(shù)功能time()獲取當前時間的時間戳,即從格林威治時間開始到當前時間的總秒數(shù)ctime()以字符串形式返回當前時間,包括年、月、日、星期幾gmtime()以時間元組形式返回當前時間,包括年、月、日、星期幾sleep(sec)程序執(zhí)行延遲sec秒process_time()返回當前進程的系統(tǒng)和用戶CPU時間的總和,以秒為單位,time()函數(shù)和process_time()函數(shù)都可以用來計算程序運行時間,在程序開始和結束時各調用一次,求差值。二者的不同在于time()返回的是時鐘時間,process_time()返回的是CPU時間,不包含sleep用時。time庫中的常用函數(shù)本章案例中需要測試輸入不同點數(shù)時程序的運行時間,可以調用time庫中的process_time()函數(shù)來實現(xiàn)。開始時調用一次將返回值賦給變量start,結束時再調用一次將返回值賦給變量end,輸出時求二者的差值,并保留兩位小數(shù)。fromtimeimportprocess_time…start=process_time()…end=process_time()…print(round(end-start,2),"sconsumed.")time庫中的常用函數(shù)至此,本章案例已編寫完成,將程序文件保存為ch02.py,運行程序,如果有錯誤則進行修正。分別輸入點數(shù)為1000000、10000000、100000000,看看在你的計算機上運行這個程序需要多長時間。試一試Numpy是用于處理含有同種元素的多維數(shù)組運算的第三方庫。Numpy1.20之前的版本包含了很多金融函數(shù),1.20版本以后將這些金融函數(shù)移至numpy_financial庫。2.5編程實踐:Numpyfinancial第三方庫需要安裝后才能使用,想要安裝使用numpy_financial庫,需要先安裝numpy庫。本小節(jié)介紹如何使用Python的pip工具來安裝第三方庫。pip是Python的內置命令,你可以在Python安裝路徑下的Scripts子文件夾中(如C:\Python311\Scripts)找到它。用pip安裝第三方庫的命令格式如下:pipinstall<library>那么在哪里執(zhí)行pip命令呢?注意不是在Python的IDLE交互式解釋器中執(zhí)行。在“Windows系統(tǒng)”中找到“命令提示符”,或者在Windows操作系統(tǒng)的左下角看到一個搜索符號,提示“在這里輸入你要搜索的內容”,輸入“cmd”,打開“命令提示符”窗口。2.5.1Numpyfinancial庫的安裝在命令行窗口執(zhí)行pip命令,首先要將當前路徑轉換到pip.exe文件所在的路徑,即Python安裝路徑下的Scripts子文件夾(如C:\Python311\Scripts)。執(zhí)行cd命令來轉換路徑(changedirectory),然后執(zhí)行pip命令進行安裝,安裝成功后系統(tǒng)會提示“Successfullyinstallednumpy”。繼續(xù)用pip命令安裝numpy_financial庫。安裝成功后,在Python安裝路徑下的Lib文件夾下的site-packages子文件夾中(如C:\Python311\Lib\site-packages)可以找到numpy文件夾和numpy_financial文件夾。2.5.1Numpyfinancial庫的安裝numpy_financial庫包含多個金融函數(shù)。采用import方式引入時,可以給它起個別名,程序中需要加入模塊名的地方使用別名就可以了,如下所示:importnumpy_financialasnpf本小節(jié)介紹調用numpy_financial庫中計算終值和計算分期付款兩個金融函數(shù)的例子,除此之外,numpy_financial還提供計算現(xiàn)值、計算利率和計算內部收益率等金融函數(shù)。2.5.2Numpyfinancial庫的使用考慮比第1章案例更為復雜的情況,除了開戶時存入的本金外,每年年初還存入一定金額的存款,這個金額也由用戶輸入,計算到期時的終值?!纠?-5】計算終值可以看到,用一條調用fv()函數(shù)的語句,就可以處理比第1章案例更為復雜的情況。

numpy_financial庫中計算終值的fv()函數(shù)形式為:fv(rate,nper,pmt,pv,when='end')。第一個參數(shù)是每期的利率;第二個參數(shù)是期數(shù);第三個參數(shù)是每期存入的金額(取負);第四個參數(shù)是初始存入的本金(取負);第五個參數(shù)表示存款是發(fā)生在期初還是期末,默認是期末(值為0),若為期初,則需要指定值為1?!纠?-5】計算終值運行程序,首先測試一下和第一章案例相同的情況,即本金為1000,年數(shù)為3,每年存入的金額為0,年利率默認0.02,計算出來的終值和第1章案例相同,即:1061.21。再測試一下沒有初始本金的情況,5年,每年年初存入1000,年利率0.02,計算出來的終值為5308.12。Initialprincipal:0Numberofyears

溫馨提示

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

評論

0/150

提交評論