دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: 2nd
نویسندگان: Joe Pitt-Francis. Jonathan Whiteley
سری:
ISBN (شابک) : 9783319731322
ناشر: Springer
سال نشر: 2017
تعداد صفحات: 290
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 2 مگابایت
در صورت تبدیل فایل کتاب Guide to Scientific Computing in C++ به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب راهنمای محاسبات علمی در ج نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
این کتاب درسی/مرجع ساده، راهنمای ارزشمندی برای برنامه نویسی C شی گرا برای محاسبات علمی ارائه می دهد. از طریق یک سری بحثهای واضح و مختصر، ویژگیهای کلیدی که بیشتر برای برنامهنویسان تازه کار مفید هستند، مورد بررسی قرار میگیرند، و خواننده را قادر میسازد تا به سرعت بر اصول اولیه تسلط یابد و اعتماد به نفس خود را برای بررسی ویژگیهای کمتر مورد استفاده در صورت نیاز ایجاد کند. این متن یک رویکرد عملی را ارائه میکند که بر مزایای یادگیری با مثال تأکید میکند، بر اهمیت یک سبک برنامهنویسی واضح برای به حداقل رساندن ورود خطاها به کد تأکید میکند و انتخاب گستردهای از تمرینهای تمرینی را ارائه میدهد. این نسخه جدید به روز شده و پیشرفته شامل مطالب اضافی در مورد تست نرم افزار و برخی ویژگی های جدید معرفی شده در استانداردهای مدرن C مانند C 11 است. اصول برنامهنویسی رویهای در C را بررسی میکند، متغیرها، جریان کنترل، ورودی و خروجی، اشارهگرها، توابع و متغیرهای مرجع را پوشش میدهد. مفهوم کلاسها را معرفی میکند، ویژگیهای اصلی شیگرایی را به نمایش میگذارد، و ویژگیهای پیشرفته C مانند قالبها و استثناها را مورد بحث قرار میدهد. توسعه مجموعه ای از کلاس ها را برای محاسبات جبر خطی بررسی می کند و مقدمه ای بر محاسبات موازی با استفاده از MPI ارائه می دهد. نحوه ساخت یک کتابخانه شی گرا برای حل معادلات دیفرانسیل مرتبه دوم را شرح می دهد. شامل ضمیمه هایی است که جبر خطی و ساختارهای برنامه نویسی مفید را مرور می کند، همراه با راه حل هایی برای تمرین های انتخاب شده. تمرین ها و نکات برنامه نویسی را در پایان هر فصل و کدهای پشتیبانی را در یک وب سایت مرتبط ارائه می دهد. این کتاب درسی قابل دسترس برای برنامه نویسان در تمام سطوح تخصص "حتما" است. آشنایی اولیه با مفاهیمی مانند عملیات بین بردارها و ماتریس ها، و روش نیوتن رافسون برای یافتن ریشه معادلات غیر خطی، مزیت محسوب می شود، اما دانش گسترده ای از ریاضیات اساسی فرض نمی شود.
This simple-to-follow textbook/reference provides an invaluable guide to object-oriented C++ programming for scientific computing. Through a series of clear and concise discussions, the key features most useful to the novice programmer are explored, enabling the reader to quickly master the basics and build the confidence to investigate less well-used features when needed. The text presents a hands-on approach that emphasizes the benefits of learning by example, stressing the importance of a clear programming style to minimise the introduction of errors into the code, and offering an extensive selection of practice exercises. This updated and enhanced new edition includes additional material on software testing, and on some new features introduced in modern C++ standards such as C++11. Topics and features: presents a practical treatment of the C++ programming language for applications in scientific computing; reviews the essentials of procedural programming in C++, covering variables, flow of control, input and output, pointers, functions and reference variables; introduces the concept of classes, showcasing the main features of object-orientation, and discusses such advanced C++ features as templates and exceptions; examines the development of a collection of classes for linear algebra calculations, and presents an introduction to parallel computing using MPI; describes how to construct an object-oriented library for solving second order differential equations; contains appendices reviewing linear algebra and useful programming constructs, together with solutions to selected exercises; provides exercises and programming tips at the end of every chapter, and supporting code at an associated website. This accessible textbook is a “must-read” for programmers of all levels of expertise. Basic familiarity with concepts such as operations between vectors and matrices, and the Newton-Raphson method for finding the roots of non-linear equations, would be an advantage, but extensive knowledge of the underlying mathematics is not assumed.
Preface to the Second Edition Preface to the First Edition Contents 1 Getting Started 1.1 A Brief Introduction to C++ 1.1.1 C++ is ``Object-Oriented\'\' 1.1.2 Why You Should Write Scientific Programs in C++ 1.1.3 Why You Should Not Write Scientific Programs in C++ 1.1.4 Scope of This Book 1.2 A First C++ Program 1.3 Compiling a C++ Program 1.3.1 Integrated Development Environments 1.3.2 Compiling at the Command Line 1.3.3 Compiler Flags 1.4 Variables 1.4.1 Basic Numerical Variables 1.4.2 Other Numerical Variables 1.4.3 Mathematical Operations on Numerical Variables 1.4.4 Division of Integers 1.4.5 Arrays 1.4.6 ASCII Characters 1.4.7 Boolean Variables 1.4.8 Strings 1.5 Simple Input and Output 1.5.1 Basic Console Output 1.5.2 Keyboard Input 1.6 The assert Statement 1.7 Tips: Debugging Code 1.8 Exercises 2 Flow of Control 2.1 The if Statement 2.1.1 A Single if Statement 2.1.2 Example: Code for a Single if Statement 2.1.3 if--else Statements 2.1.4 Multiple if Statements 2.1.5 Nested if Statements 2.1.6 Boolean Variables 2.2 Logical and Relational Operators 2.3 The while Statement 2.4 Loops Using the for Statement 2.4.1 Example: Calculating the Scalar Product of Two Vectors 2.5 The switch Statement 2.6 Tips: Loops and Branches 2.6.1 Tip 1: A Common Novice Coding Error 2.6.2 Tip 2: Counting from Zero 2.6.3 Tip 3: Equality Versus Assignment 2.6.4 Tip 4: Never Ending while Loops 2.6.5 Tip 5: Comparing Two Floating Point Numbers 2.7 Exercises 3 File Input and Output 3.1 Redirecting Console Output to File 3.2 Writing to File 3.2.1 Setting the Precision of the Output 3.3 Reading from File 3.4 Checking Input and Output are Successful 3.5 Reading from the Command Line 3.6 Tips: Controlling Output Format 3.7 Exercises 4 Pointers 4.1 Pointers and the Computer\'s Memory 4.1.1 Addresses 4.1.2 Pointer Variables 4.1.3 Example Use of Pointers 4.1.4 Warnings on the Use of Pointers 4.2 Dynamic Allocation of Memory for Arrays 4.2.1 Vectors 4.2.2 Matrices 4.2.3 Irregularly Sized Matrices 4.3 Tips: Pointers 4.3.1 Tip 1: Pointer Aliasing 4.3.2 Tip 2: Safe Dynamic Allocation 4.3.3 Tip 3: Every new Has a delete 4.4 Modern C++ Memory Management 4.4.1 The unique_ptr Smart Pointer 4.4.2 The shared_ptr Smart Pointer 4.5 Exercises 5 Blocks, Functions and Reference Variables 5.1 Blocks 5.2 Functions 5.2.1 Simple Functions 5.2.2 Returning Pointer Variables from a Function 5.2.3 Use of Pointers as Function Arguments 5.2.4 Sending Arrays to Functions 5.2.5 Example: A Function to Calculate the Scalar Product of Two Vectors 5.3 Reference Variables 5.4 Default Values for Function Arguments 5.5 Function Overloading 5.6 Declaring Functions Without Prototypes 5.7 Function Pointers 5.8 Recursive Functions 5.9 Modules 5.10 Tips: Code Documentation 5.11 Exercises 6 An Introduction to Classes 6.1 The Raison d\'Être for Classes 6.1.1 Problems That May Arise When Using Modules 6.1.2 Abstraction, Encapsulation and Modularity Properties of Classes 6.2 A First Example Simple Class: A Class of Books 6.2.1 Basic Features of Classes 6.2.2 Header Files 6.2.3 Setting and Accessing Variables 6.2.4 Compiling Multiple Files 6.2.5 Access Privileges 6.2.6 Including Function Implementations in Header Files 6.2.7 Constructors and Destructors 6.2.8 Pointers to Classes 6.3 The friend Keyword 6.4 A Second Example Class: A Class of Complex Numbers 6.4.1 Operator Overloading 6.4.2 The Class of Complex Numbers 6.5 Some Additional Remarks on Operator Overloading 6.6 Tips: Coding to a Standard 6.7 Exercises 7 Inheritance and Derived Classes 7.1 Inheritance, Extensibility and Polymorphism 7.2 Example: A Class of E-books Derived from a Class of Books 7.3 Access Privileges for Derived Classes 7.4 Classes Derived from Derived Classes 7.5 Run-Time Polymorphism 7.6 The Abstract Class Pattern 7.7 Tips: Using a Debugger 7.8 Exercises 8 Templates 8.1 Templates to Control Dimensions and Verify Sizes 8.2 Templates for Polymorphism 8.3 A Brief Survey of the Standard Template Library 8.3.1 Vectors 8.3.2 Sets 8.4 A Survey of Some New Functionality in Modern C++ 8.4.1 The auto Type 8.4.2 Some Useful Container Types with Unified Functionality 8.4.3 Range-based for Loops 8.4.4 Mapping Lambda Functions 8.5 Tips: Template Compilation 8.6 Exercises 9 Errors, Exceptions and Testing 9.1 Preconditions 9.1.1 Example: Two Implementations of a Graphics Function 9.2 Three Levels of Errors 9.3 Introducing the Exception 9.4 Using Exceptions 9.5 Testing Software 9.5.1 Unit Testing 9.5.2 Extending Software 9.5.3 Black Box Testing 9.5.4 White Box Testing 9.5.5 Test Driven Development 9.6 Tips: Writing Appropriate Tests 9.7 Exercises 10 Developing Classes for Linear Algebra Calculations 10.1 Requirements of the Linear Algebra Classes 10.2 Constructors and Destructors 10.2.1 The Default Constructor 10.2.2 The Copy Constructor 10.2.3 A Specialised Constructor 10.2.4 Destructor 10.3 Accessing Private Class Members 10.3.1 Accessing the Size of a Vector 10.3.2 Overloading the Square Bracket Operator 10.3.3 Read-Only Access to Vector Entries 10.3.4 Overloading the Round Bracket Operator 10.4 Operator Overloading for Vector Operations 10.4.1 The Assignment Operator 10.4.2 Unary Operators 10.4.3 Binary Operators 10.5 Functions 10.5.1 Members Versus Friends 10.6 Tips: Memory Debugging Tools 10.7 Exercises 11 An Introduction to Parallel Programming Using MPI 11.1 Distributed Memory Architectures 11.2 Installing MPI 11.3 A First Program Using MPI 11.3.1 Essential MPI Functions 11.3.2 Compiling and Running MPI Code 11.4 Basic MPI Communication 11.4.1 Point-to-Point Communication 11.4.2 Collective Communication 11.5 Example MPI Applications 11.5.1 Summation of Series 11.5.2 Parallel Linear Algebra 11.6 Tips: Debugging a Parallel Program 11.6.1 Tip 1: Make an Abstract Program 11.6.2 Tip 2: Datatype Mismatch 11.6.3 Tip 3: Intermittent Deadlock 11.6.4 Tip 4: Almost Collective Communication 11.7 Exercises 12 Designing Object-Oriented Numerical Libraries 12.1 Developing the Library for Ordinary Differential Equations 12.1.1 Model Problems 12.1.2 Finite Difference Approximation to Derivatives 12.1.3 Application of Finite Difference Methods to Boundary Value Problems 12.1.4 Concluding Remarks on Boundary Value Problems in One Dimension 12.2 Designing a Library for Solving Boundary Value Problems 12.2.1 The Class SecondOrderOde 12.2.2 The Class BoundaryConditions 12.2.3 The Class FiniteDifferenceGrid 12.2.4 The Class BvpOde 12.2.5 Using the Class BvpOde 12.3 Extending the Library to Two Dimensions 12.3.1 Model Problem for Two Dimensions 12.3.2 Finite Difference Methods for Boundary Value Problems in Two Dimensions 12.3.3 Setting Up the Linear System for the Model Problem 12.3.4 Developing the Classes Required 12.4 Tips: Using Well-Written Libraries 12.5 Exercises A Linear Algebra A.1 Vectors and Matrices A.1.1 Operations Between Vectors and Matrices A.1.2 The Scalar Product of Two Vectors A.1.3 The Determinant and the Inverse of a Matrix A.1.4 Eigenvalues and Eigenvectors of a Matrix A.1.5 Vector and Matrix Norms A.2 Systems of Linear Equations A.2.1 Gaussian Elimination A.2.2 The Thomas Algorithm A.2.3 The Conjugate Gradient Method B Other Programming Constructs You Might Meet B.1 C Style Output B.2 C Style Dynamic Memory Allocation B.3 Ternary ?: Operator B.4 Using Namespace B.5 Structures B.6 Multiple Inheritance B.7 Class Initialisers C Solutions to Exercises C.1 Matrix and Linear System Classes C.2 ODE Solver Library Further Reading Index