內容簡介
《數值方法(C++描述)》主要介紹如何使用電腦程式語言C++求解數值問題,由三個主要內容組成:(1)數學基礎(包括一些定理和推論);(2)科學工程中的方法套用;(3)計算機實現。《數值方法(C++描述)》從套用的角度來描述數值方法。就像計算機手冊一樣,很多已解決的問題會在所有的章節出現,便於概念的理解。每章最後給出了練習題以便學生實踐。《數值方法(C++描述)》內容廣泛、資料翔實、深入淺出,便於教學和自學。
高等院校計算機及相關專業的本科生和教師,從事數值計算方面工作的人員。
前言
譯 者 序
數值方法原屬於數值計算的問題,現在又引入了計算機。本書從套用的角度來描述數值方法,又直接用計算機來實現這些方法,這不僅對於學生,而且對於廣大工程技術人員來說,是很有幫助的。有了本書,對數學不很精通的人也能解決工程中的數值計算問題,因為書中有了現成的程式;而對計算機不很熟悉的人來說,也能用計算機解決數值計算的問題,也是因為書中有了現成的程式。這就是本書的最顯著的特點。
本書不僅可以作為高等院校理工科專業《數值方法》等課程的教材或參考書,也是廣大工程技術人員在進行數值計算時的一本很好的工具書。
擔任本書主要翻譯工作的有徐士良、葛兵、徐艷,同時參加翻譯工作的還有馬爾呢、白小玲、徐娟、劉慶元、張苹、彭明靜、盧謙、王瑄等。
因水平有限,譯文中有錯誤或不妥之處,懇請讀者批評指正。
譯者前 言
本書是一本關於使用電腦程式語言C++求解數值問題的書籍,它展示了計算機在解決科學和工程問題中所扮演的重要角色。計算機除了速度優勢外,它們還具有準確性、靈巧性和多功能性。
你可以找到很多相關的書籍,這些書可以讓你很好地認識數值方法和如何套用它們去解決問題。所以問題來了: 我們還需要另外一本這方面的書嗎?當我讓同項目中的同事去寫一本關於數值方法的書時,他們抱怨說: “什麼?另一本書?”我確信,一本能在提供計算機語言的同時,清晰示範出如何使用它們解決科學工程問題的數值方法的書是必要的。
有很多理由來支持這一觀點,其中最重要的是,近些年,C++語言已經成為軟體開發者的首選,因為它有很多吸引人的特徵,很多科學工程學科的學生畢業後都選擇了軟體開發的職業。
市場上使用這一強大語言的數值方法的書籍並不多,本書在第一章對C++語言作了簡短的介紹。現在,學校里會講授C程式設計語言。在很多的工科院校,工科新生都要學習高級C和C++語言。所以,程式設計語言不會成為計算機實現數值方法的障礙。
目前,一門關於數值方法的課程通常會達到一周2~3小時的授課以及3~4小時的計算機實驗部分。上機時學生可以在計算機上實踐算法。本書就是針對這樣的課程而寫的。它主要用於大學工科課程。不必將15章的內容在一個學期內全部講完,根據學生的需求,教師可以挑出部分章節進行講授。本書也適用於那些需要計算機數值方法實現的專業人士。
本書由三個主要部分組成: (1)數學基礎(包括一些定理和推論); (2)科學工程中的方法套用; (3)計算機實現。這三部分涵蓋了本科生的整個課程,很少有一本書能包括全部內容。在市場上能夠看到很多優秀的書籍,這些書籍都提供了數值方法的理論。本書從套用的角度來描述數值方法。那些簡單的問題可以通過手算得到結果,但重點是如何使用計算機來解決問題。就像計算機手冊一樣,很多已解決的問題會在所有的章節出現,便於概念的理解。學生需要對每章最後給出的問題進行實踐。並詳細參考在每章結尾處列出的參考書籍,對本章中的主題進行深入學習。在本書的最後給出了很多不錯的參考書籍,建議學生閱讀。
在學習了一個程式如何工作以及如何開發這樣一個程式後,你足以理解一個數值算法是如何工作的了。此時你可能還能開發出一個簡潔的程式。然後你就可以開始使用像MATLAB、Mathematica、polymath、NAG和IMSL這些商業軟體了。
我要感謝IIT Guwahati的主任和代理主任的支持,並出版了本書。我的學生們一直希望有一本這樣的電腦程式書,他們給出了有價值的反饋和建議,為此我表示感謝。準備本書期間,我得到了姐姐Kakali以及雙親一貫的支持。我的同事很熱情、親切友好並且很配合工作,我同樣要感謝他們。我要特別感謝我以前的同事--Anupam Shukla教授對我寫這本書的支持。最後,我想感謝出版者Prentice-Hall of India,特別是經理和編輯與發行組,感謝他們在出版本書過程中的緊密合作。
如果本書能激發大家對數值方法及其計算機實現的興趣,我會感到很高興。歡迎廣大讀者對本書內容提出寶貴意見。
Pallab Ghosh
IIT Guwahati
目錄
第1章C++與面向對象的程式設計
1.1引言
1.2C++程式的組成
1.3C++標識符與關鍵字
1.4頭檔案
1.5C++數據類型
1.6常量聲明
1.7運算符
1.8循環結構
1.9判斷語句
1.10C++函式
1.11C++檔案處理
1.12數組
1.13構造函式與析構函式
總結
關鍵字
練習
文獻
第2章數值計算的準確性與穩定性
2.1引言
2.2有效數字
2.3誤差定義
2.4舍人誤差
2.5數值運算的有效數字規則
2.6級數的截斷誤差
2.7誤差的傳播與計算不穩定性
2.8病態系統
總結
關鍵字
練習
文獻
第3章求解聯立線性代數方程
3.1引言
3.2幾個矩陣定義
3.3解的唯一性
3.4/頃序Gauss消去法
3.5全選主元Gauss消去法
3.6帶有正向與反向代入的LU分解
3.7Cholesky分解
3.8Gauss-Jordan消去法
3.9Gauss-Jordan法求矩陣的逆
3.10求解三對角線方程組
3.11Gauss-Seidel疊代
3.12Gauss-Seidel鬆弛疊代
3.13病態系統
總結
關鍵字
練習
文獻
第4章求解非線性方程
4.1引言
4.2圖解法
4.3用反覆試驗法求解
4.4歸類與開放法
4.5疊代法的收斂速度
4.6對分法
4.7試位法
4.8逐次代人法
4.9Newton-Raphson法
4.10割線法
4.11求解非線性方程組的方法
4.12確定多項式方程的根
總結
關鍵字
練習
文獻
第5章矩陣的特徵值與特徵向量
5.1引言
5.2Cayley-Hamilton定理
5.3特徵向量的正交性與規格化正交性
5.4確定特徵值與特徵向量的方法
5.5Faddeev-Leverrier法
5.6乘冪法
5.7對稱矩陣特徵值的計算
總結
關鍵字
附錄5A涉及向量和矩陣的一些普通運算
練習
文獻
第6章數據統計分析
6.1引言
6.2初等機率論
6.3數據抽樣
6.4平均值與方差的計算
6.5抽樣分布的性質
6.6置信區間
6.7假設檢驗
總結
關鍵字
附錄6A
附錄6B
附錄6C
附錄6D
練習
文獻
第7章曲線擬合
7.1引言
7.2線性回歸
7.3曲線回歸
7.4多元回歸
7.5使用正交多項式的回歸.
總結
關鍵字
練習
文獻
第8章數據排序
8.1引言
8.2冒泡排序
8.3Shell排序
8.4快速排序
8.5冒泡排序.Shell排序和快速排序的比較研究
總結
關鍵字
練習
文獻
第9章函式逼近
9.1引言
9.2Chebyshev逼近
9.3Pade逼近
9.4誤差函式
9.5Beta和Gamma函式
9.6Bessel函式
總結
關鍵字
附錄9A某些公共函式的Maclaurin級數
附錄9B
附錄9C
附錄9D第一類0階和1階Bessel函式
附錄9E第二類0階和1階Bessel函式
附錄9FJ0(x).J1(x).Y0(x)和Y1(x)的前10個零點
練習
文獻
第10章插值法
10.1引言
10.2多項式插值
10.3Newton向前差分公式
10.4Newton向後差分公式
10.5Gauss中心差分公式
10.6Newton差商公式
10.7Lagrange插值公式
10.8樣條插值
總結
關鍵字
附錄10A由式[36]計算二階導數的三對角算法
練習
文獻
第11章數值積分
11.1引言
11.2Newton-Cotes閉合積分公式
11.3Richardson外推法
11.4Romberg求積法
11.5Gauss求積法
11.6數據的積分
11.7開放積分公式
總結
關鍵字
練習
文獻
第12章數值微分
12.1引言
12.2向前.向後和中心差分公式
12.3Richardson外推法
12.4Lagrange微分公式
總結
關鍵字
練習
文獻
第13章求解常微分方程:初值問題
13.1引言
13.2Taylor級數展開法
13.3Euler法
13.4Runge-Kutta法
13.5Runge-Kutta-Fehlberg法
13.6用Runge-Kutta法求解常微分方程組
13.7剛性微分方程
13.8數值解法的穩定性
13.9隱式Euler法和Crank-Nicolson法
13.10多步法
13.11向後微分公式(BDFs)
13.12微分-代數方程組
總結
關鍵字
練習
文獻
第14章求解常微分方程:邊值問題
14.1引言
14.2邊界條件類型
14.3試射法
14.4有限差分法
14.5正交配置法
14.6特徵值問題
總結
關鍵字
附錄14A
練習
文獻
第15章偏微分方程數值解
15.1引言
15.2偏微分方程的類型
15.3初始與邊界條件的詳細說明
15.4有限差分法求解
總結
關鍵字
練習
文獻
附錄常用的微分和積分公式
參考文獻
……