專案的現金流入和流出如下圖
使用二分法定義irr的求解過程函式:
def
irr(r_low=
0, r_up=
0.1, epsilon=1e-
8): n =
0while
true
: r_mid =
(r_low + r_up)/2
n +=
1#print(r_low, r_mid, r_up)
#print(npv(r_low), npv(r_mid), npv(r_up))
if r_mid - r_low <= epsilon or r_up - r_mid <= epsilon:
return r_mid, n #設定好終止條件及返回結果
elif npv(r_mid)
* npv(r_low)
>=0:
r_low = r_mid #中點和左端點函式值同號,說明零點在右端,將中點賦值給左端點
else
: r_up = r_mid #中點和左端點函式值異號,說明零點在左端,將中點賦值給右端點
列印出irr的數值以及迭代次數
列印出irr代入所定義的npv函式的結果
irr, n = irr(
)print
('irr = , iterative: times.'
.format
(irr, n)
)print
('npv = '
.format
(npv(irr)
))
另外,npv函式的另一種定義方法如下:
def
npv(r)
: s =
0for i in
range(1
,16):
s +=
-19900./
(1+ r)
**i for i in
range(19
,23):
s +=
40000./
(1+ r)
**i s +=
100000./
(1+r)**
30for i in
range(65
,86):
s +=
50000./
(1+ r)
**i s +=
900000./
(1+ r)
**85
return s
python二分法查詢 Python 二分法查詢
二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...
求方程根 (二分法)
二分法求方程的根 求下面方程的乙個根 f x x3 5x2 10x 80 0 若求出的根是a,則要求 f a 10 6 解法 對f x 求導,得f x 3x2 10x 10。由一元二次方程求根公式知方呈f x 0 無解,因此f x 恆大於0。故f x 是單調遞增的。易知f 0 0且f 100 0,所...