A Practical Guide to Developing Computational Software
暫譯: 計算軟體開發實用指南
Dr. Yong-Ming Li
- 出版商: CreateSpace Independ
- 出版日期: 2013-11-14
- 售價: $1,010
- 貴賓價: 9.5 折 $960
- 語言: 英文
- 頁數: 375
- 裝訂: Paperback
- ISBN: 1492973173
- ISBN-13: 9781492973171
海外代購書籍(需單獨結帳)
相關主題
商品描述
Numerical methods in this book include evaluation of polynomial and series, root-finding, linear and nonlinear systems, inverse of a matrix, eigenvalues and eigenvector, integration, and least squares approximation. These methods are grouped and presented based on their implementation styles rather than their relevance. This book is organized as follows:
Chapter 1 is a fast-paced brief introduction to C/C++ programming under Microsoft Visual Studio to familiarize readers with basic C/C++ syntax and debugging tools.
Chapter 2 discusses floating-point notation, comparison, and arithmetic. Rudimentary understanding of floating-point is a pre-requisite for programmers. Failure to understand it is often the source of problems in numerical programming.
Chapter 3 continues the study of advanced C/C++ programming such as default arguments, data structure and class, double pointers, dynamic memory allocations, and STL containers. Algorithm efficiency analysis and big O notation will also be discussed. This chapter is designed to help readers to gain the required C/C++ proficiency in implementing numerical methods.
Chapter 4 is devoted to give readers an insight on how a computational software library may actually be developed in a software house. Readers will learn how to create and use a dynamic-link library, how to design flexible test drivers, and how to write scripts to improve productivity, to execute test suites automatically, and to compare the test results with the predicted outcomes.
Chapter 5 deals with recursive algorithm. Because of its problem-solving power and simplicity in implementation, recursion in numerical methods will be discussed in this chapter with emphasizes on performance and memory usage.
Chapter 6 discusses linear systems. Topics include solution to system of linear equations, matrix manipulation, inverse of a matrix, eigenvalue and eigenvector.
Chapter 7 and 8 explore how to use function pointers, generic data pointer, and inheritance with polymorphism to design extensible and reusable code - an important topic in software engineering.
Chapter 9 discusses the least square approximation method whose applications can be found in many fields such as computer-aided design, metrology, image processing, etc.
Chapter 10 aims to develop a simple windows-based application for data visualization and manipulation. Through this miniature application, readers will get a glimpse of how sophisticated CAD/CAM systems are developed.
Chapter 11 discusses how classical numerical methods can be parallelized to take the advantage of multi-thread programming. Common problems associated with parallel computing such as data race conditions, workload balance, synchronization, and parallel slowdown are discussed in detail.
Appendix A is a brief introduction to Perl programming.
Appendix B contains answers to all seven pre-interview questions given in the preface.
商品描述(中文翻譯)
本書是為那些希望從事工程和科學應用計算軟體開發的人士所撰寫。與傳統的數值程式設計書籍專注於數值方法的分析和實現不同,本書強調開發一個可靠且可重用的軟體包。讀者不僅會學習數值方法的實現,還會了解包括創建和使用動態連結庫、設計靈活的測試驅動程式、編寫提高生產力的腳本工具、執行和驗證自動化測試套件的軟體開發過程。基於本書開發的計算庫,讀者還將學習如何開發一個基於 Windows 的數據可視化和操作應用程式。多核心處理器將平行計算帶入主流客戶。轉向平行計算導致了軟體設計的根本變化。因此,本書還討論了如何通過 Open Multi-Processing 將經典數值程式平行化。
本書中的數值方法包括多項式和級數的評估、根尋找、線性和非線性系統、矩陣的逆、特徵值和特徵向量、積分以及最小二乘近似。這些方法根據其實現風格而非相關性進行分組和呈現。本書的組織結構如下:
第 1 章是對 Microsoft Visual Studio 下 C/C++ 程式設計的快速簡介,以幫助讀者熟悉基本的 C/C++ 語法和除錯工具。
第 2 章討論浮點表示法、比較和算術。對浮點數的基本理解是程式設計師的先決條件。未能理解它通常是數值程式設計中問題的根源。
第 3 章繼續研究高級 C/C++ 程式設計,如預設參數、資料結構和類別、雙指標、動態記憶體分配和 STL 容器。還將討論演算法效率分析和大 O 符號。本章旨在幫助讀者獲得實現數值方法所需的 C/C++ 熟練度。
第 4 章專注於讓讀者了解計算軟體庫如何在軟體公司中實際開發。讀者將學習如何創建和使用動態連結庫、如何設計靈活的測試驅動程式,以及如何編寫腳本以提高生產力、自動執行測試套件並將測試結果與預測結果進行比較。
第 5 章處理遞迴演算法。由於其解決問題的能力和實現的簡單性,本章將討論數值方法中的遞迴,並強調性能和記憶體使用。
第 6 章討論線性系統。主題包括線性方程組的解、矩陣操作、矩陣的逆、特徵值和特徵向量。
第 7 章和第 8 章探討如何使用函數指標、通用資料指標和多型繼承來設計可擴展和可重用的程式碼——這是軟體工程中的一個重要主題。
第 9 章討論最小二乘近似法,其應用可在許多領域中找到,如計算機輔助設計、計量學、影像處理等。
第 10 章旨在開發一個簡單的基於 Windows 的數據可視化和操作應用程式。通過這個小型應用程式,讀者將窺見複雜的 CAD/CAM 系統是如何開發的。
第 11 章討論如何將經典數值方法平行化,以利用多執行緒程式設計。詳細討論與平行計算相關的常見問題,如資料競爭條件、工作負載平衡、同步和平行減速。
附錄 A 是對 Perl 程式設計的簡要介紹。
附錄 B 包含前言中給出的七個面試問題的答案。