登入會員
品牌介紹
關於我們
企業徵才
客服中心
會員專區
與我連絡
申訴信箱
FAQ
電子報
書目下載
圖書總覽
服務推薦
教學網
考用網站
首頁
書目下載
會員專區
與我連絡
飛躍六十 迎向百年
法律/政治
法律
政治、公共事務
財經/商管/觀光
財經、商管、統計
觀光、餐旅、休閒
文/史/哲/期刊
辭書、總類
語言、文學
歷史、哲學、宗教
藝術、設計、文創
學術期刊
理工/醫護
理工
醫護暨生命科學
農林漁牧
教育/心理/傳播
教育
心理、諮商與輔導
社會、傳播(影視)
小五南/中等教育
小五南
電機與電子群
餐旅群
家政群
商業與管理群
英文
藝術群
農業群
食品群
【春節延後出貨公告】 親愛的五南會員:您好,適逢春節假期,五南官網均可正常下單購買, 惟2/5(一)中午12:00之後的網站訂單,物流停止送貨,將延至2/15(四)開工後正常出貨, 造成不便敬請見諒,五南祝您新年快樂!
分享
財經、商管、統計
-
管理
-
計量
管理數學、Python與R:邊玩程式邊學數學,不小心變成數據分析高手
作 者:
何宗武
出版社別:
五南
出版日期:2023/06/01(3版1刷)
ISBN:978-626-366-128-8
E I S B N:9786263661363
書 號:1FWC
頁 數:416
開 數:20K
定 價:550元
優惠價格:440元
主題書展
9/2-10/31 2024五南開學祭!論文/法律政治/教育/社會心理/電機理工/數學物理/化學程式/醫護/農林漁牧/教科書8折起,特價書99元起,全站滿550打95折
滿額優惠折扣
9/2-10/31 五南開學祭!全站滿550再95折
1FWC_SOLUTION.ZIP
1FWC_STEP_BY_STEP_R.ZIP
1FWC_PYTHON.RAR
☆好課推薦☆ 陳育仁 國立高雄科技大學會計資訊系、資訊財務碩士學位學程教授/財金大數據中心 主持人
第一本結合管理數學和Python、R應用的工具書,輕鬆獲得雙倍效果! 管理的問題,就用數學來解決吧! 令人驚呼的超強特色: 1.淺顯易懂的口吻加上超豐富內容,一本掌握管理數學! 2.附有精彩的範例、習題與解析,滿足所有練習慾望! 3.用Python、R簡單搞定繁雜的數學計算,手把手跟著步驟走! 讓數據分析成為管理的後盾,成就更無懈可擊的經營決策! 管理數學為一門重要的基礎,不只是為了商業管理和決策,也是學習資料科學的第一步。現今不論是商管領域的學生或是從業人員,為了跟上世界的腳步,都必須學習程式語言,如果能在學習管理數學時搭配Python、R做使用,不只符合世界潮流,也等同開啓資料分析的大門。 本書作者投入融合「計量經濟學和資料科學」的計量資料科學 (Econometric Data Science) 多年,對於以計量經濟學為基礎的資料科學猶有心得,本書由淺入深地介紹微分、積分、矩陣代數和數學規劃等管理數學必需的基礎與商管應用,此外,為達到與程式學習相輔相成之效,作者編排章節亦十分用心,在管理數學的16堂課中,穿插步驟式的Python、R教學單元,讓讀者學完數學原理和計算之後,能立刻熟悉Python與R的應用方式,學習效率更加倍!輕鬆就學會管理數學!
何宗武 美國猶他大學(University of Utah)經濟學博士,現為國立臺灣師範大學全球經營與策略研究所教授,教學資歷豐富,曾任世新大學經濟學系及財務金融學系教授。專長為財務經濟學、金融大數據、計量經濟資料科學及程式語言等,著作多本相關書籍如:《大數據決策分析盲點大突破10講:我分類故我在》、《R語言:深入淺出財經計量》、《R資料採礦與數據分析:以GUI套件Rattle結合程式語言實作》、《資料分析輕鬆學:R Commander高手捷徑》、《大數據時代的決策思維:資料敘事的起承轉合》、《數位創新:商業模式經濟學》。
推薦序
再版序
初版序
管理數學原理
第 1 堂課 數學基礎
第 2 堂課 函數
Codes Part 1
微分
第 3 堂課 微分方法:單變數
第 4 堂課 微分方法:多變數函數之偏微分與全微分
第 5 堂課 微分的應用與邊際意義
Codes Part 2
積分
第 6 堂課 積分原理
第 7 堂課 積分方法:單變數
第 8 堂課 多變數重積分
第 9 堂課 積分應用
Codes Part 3
矩陣代數
第 10 堂課 矩陣代數基礎
第 11 堂課 矩陣的基本運算與應用
第 12 堂課 矩陣進一步性質與應用
Codes Part 4
數學規劃與管理決策
第 13 堂課 單變數函數的最佳化問題
第 14 堂課 雙變數函數的極值:無限制條件下的極值判斷問題
第 15 堂課 具限制條件的最佳化問題
第 16 堂課 選擇性主題
Codes Part 5
Python 附錄一
Python 附錄二
Python 附錄三
推薦序 管理數學已為商管領域中數量方法的重要基礎,本書主要內容包括「微積分」與「矩陣代數」,並搭配實務面應用,如「數學規劃」及「管理決策」等。 與數學一樣講求邏輯思維的程式設計,近年來由於大數據與人工智慧的興起,帶動了一股軟體應用程式設計的學習熱潮,而過去幾年Python 語言在 codeeval.com的最夯程式語言中名列第一,毫無疑問Python已成為當今最熱門的程式語言。Python程式碼簡單好理解、有超豐富的函式庫可以運用,是非常適合商管領域初學者學習的程式語言。 將當今最熱門及最適合商管領域初學者學習的程式語言Python與管理數學內容結合起來是本書的最大特色;讀者可將數學的運算邏輯透過程式語言來實現演算,過程中除了可以學習到數量方法與程式語法之外,對於商管領域未來實務應用與發展能力上奠定了深厚的基礎,例如:現今金融業蓬勃發展的金融科技(FinTech)。 末學與何宗武教授是相識多年的好友,同時也是在大數據、人工智慧於金融科技發展上的同好伙伴,深知何教授在財經與金融大數據等研究領域表現卓越,並且也出版多本與商管相關的程式語言書籍,對於商管程式教育不遺餘力。而「管理數學與Python」一書著重以企業管理為主的理論學習架構,搭配Python程式語言實現運算邏輯,內容淺顯易懂,非常適合商管相關科系的學生來學習,在此鄭重推薦給大家研讀,相信收穫一定滿滿。 陳育仁 國立高雄科技大學 會計資訊系、資訊財務碩士學位學程 教授 財金大數據中心 主持人 2019/05/24
主題3. 最佳化演算(Optimization) 求極值 前面的主題是解滿足一階導函數的根,因此,我們必須先微分求出導函數。但是,最簡單的方法是直接對目標函數求解:同時解出目標極值和臨界值。 Python完成這件事有sympy和scipy,筆者覺得sympy需要宣告的參數太多,尤其是在帶限制式時。所以我們使用模組scipy內的函數optimize()和minimize(),Python程式碼的步驟解說如下。 5.3-1 單變數 我們先看本章範例1的簡單方程式,如下: 第1步:定義函數 from scipy import optimize def f(x, sign=-1): return sign*(2*x**3+3*x**2-12*x-7) 兩行就OK,相當簡易。待會我們再解釋sign的意義。接下來執行求極值: 第2步:求解與結果 Result1 = optimize. minimize_scalar(f) Result1.x Result1.fun f(Result1.x) optimize. minimize_scalar()是求解函數。Result1內有許多物件,主要有三個: (1) Result1.x: 解出的x值。 (2) Result1.fun: 解出的極小值,可以和f(Result1.x)對照是否一樣。 (3) Result1.success: 回傳求解是否成功(True/False)。 我們看看列印在螢幕的結果,如下: Result1.x Out[2]: 1.0 Result1.fun Out[3]: -14.0 f(Result1.x) Out[4]: -14.0 我們回去看範例1的圖形,可能的臨界值有兩個,從圖形看的出來,我們解出的只是極小值(1, -14)。那另一極大值的解呢?根據scipy說明文件,須把函數取負值 ,這也是我們為什麼寫函數時,要增加一個參數 sign,因為這樣比較方便,判斷極大值時,可以如下這樣處理: 第1步:定義函數 def f(x, sign = -1): return sign*(2*x**3+3*x**2-12*x-7) 第2步:求解與結果 Result2 = optimize.minimize_scalar(f) 螢幕的結果如下(需注意極值須加負號) Result2.x Out[5]: -1.999999999777818 -Result2.fun Out[6]: 13.0 -f(Result2.x) Out[7]: 13.0 範例5 函數f(x)=x4-x3相對極小值 第1步:定義函數 def f(x,sign=1): return sign*(x**4-x**3) 第2步:求解與結果 Result3 = optimize.minimize_scalar(f) 螢幕的結果如下 Result3.x Out[9]: 0.7500000000447832 Result3.fun Out[10]: -0.10546875 f(Result3.x) Out[11]: -0.10546875 5.3-2 多變數 再來就是不帶限制條件的多變數函數,本範圍範例的函數 相對極小值,則: 第1步:定義函數 import numpy as np from scipy.optimize import minimize def f(x, sign=1): x1 = x[0] x2 = x[1] return sign*(x1**3-4*x1*x2 +2*x2**2) 第2步:求解與結果 x0=[1,1] Result4 = minimize(f, x0) 雙變數以上的數值求解演算比較複雜,我們使用的函數是minimize(),如果用上面的optimize.minimize_scalar()執行會失敗。x0=[1,1]是起始值(initial values)。 螢幕的結果如下: Result4.x Out[13]: array([1.33333404, 1.3333353 ]) Result4.fun Out[14]: -1.185185185181036 f(Result4.x) Out[15]: -1.185185185181036 因為是數值結果,書上手解的臨界值是4/3,電腦則算出1.3333。相對極小值則是 -1.185。 此題還有一解,(0,0)是鞍點,如果設定x0=[0,0],就會帶出0的極值。因為鞍點判斷的程式做法需要賦予更多的條件,不是本書涵蓋,也不是商學院微積分主題,我們大致知道目前學習的狀況即可。如果想挑戰Python 程式,把目前所學過的方法串起來,可以循以下步驟: 步驟 1. 使用diff()函數解一階偏微分,求取可能的臨界值 步驟 2. 求二階偏微分 步驟 3. 參考主題一的二元一次方程式求解判斷的準則(Delta),定義第三章的來判斷誰是鞍點,誰無解。 最後. 把可能的臨界值設為起始值,求解。 這樣的四步驟其實是一個程式訓練的典型基礎,有程式興趣的同學可以用在本範圍範例當作練習,為了避免微積分學習花太多時間講這個,我們就到此為止。 練習 1. 任選本範圍範例題,以書本解出的臨界值附近任取數字當作起始值,寫程式求解極值,並和書本比對。 5.3-3 多變數帶限制式 最後就是帶限制條件的極值,我們以第15堂課範例1來說明 Min. s.t. 第1步:定義目標函數 import numpy as np from scipy.optimize import minimize def f(x, sign=1): x1 = x[0] x2 = x[1] return sign*(x1+ 2*x2) 第2步:定義限制條件 def constraint1(x, sign=1): return sign*(x[0]*x[1]- 5000) 第3步:設定求解參數 x0=[10,10] # 起始值, b1 = (0, np.inf) # 參數條件x>0,上界給予正無限大,np.inf就是 b2 = (0, np.inf) # 參數條件y>0,上界給予正無限大,np.inf就是 bnds= (b1,b2) # 邊界條件向量 con1 = {'type': 'ineq', 'fun': constraint1} #把限制集定義成字典 cons = [con1] #把con1做成串列 (萬一有多個條件時,可以包在一起) 第4步:求解與結果 Result5 = minimize(f, x0,bounds=bnds,constraints=cons) 螢幕的結果如下 Result5.x Out[17]: array([100.00691556, 49.99654246]) Result5.fun Out[18]: 200.0000004780455 f(Result5.x) Out[19]: 200.0000004780455 可對照數值的結果和第15堂課代數的結果。 接下來我們看「三變數,兩條限制式」,如第15堂課範例3。這個範例足以做很多的推廣 Min. s.t. 第1步:定義目標函數 import numpy as np from scipy.optimize import minimize def f(x, sign=1): x1 = x[0] x2 = x[1] x3 = x[2] return sign*(x1**2+ x2**2+x3**2) 第2步:定義限制條件 def constraint1(x, sign=1): return sign*(x[0]+x[1]-3) def constraint2(x, sign=1): return sign*(x[0]+x[2]- 5) 第3步:設定求解參數(參數沒有bounds,故不需定義如前提的b1,b2) x0=[1,1,1] con1 = {'type': 'ineq', 'fun': constraint1} con2 = {'type': 'ineq', 'fun': constraint2} cons = [con1, con2] 第4步:求解與結果 Result6 = minimize(f,x0,constraints=cons) 螢幕的結果如下 Result6 = minimize(f,x0,constraints=cons) Result6.x Out[21]: array([2.6666667, 0.3333333, 2.3333333]) Result6.fun Out[22]: 12.666666666666735 f(Result6.x) Out[23]: 12.666666666666735 可以確認數值結果和第15堂課的分式,是一樣的。這樣本範圍所有的問題,我們都可以處理了。 練習 1. 修改上面程式,求解本範圍範例和習題,和答案確認結果。
0
1