PREFACE

Computing for Numerical Methods Using Visual C++ has been written to promote the use of Visual C++ in scientific computing. C++ is a beautiful language that has contributed to shaping the modern world today. The language has contributed to many device drivers in electronic equipment, as a tool in the development of many computer software programs, and as a tool for both research and teaching. Therefore, its involvement in providing the solution for numerical methods is very much expected.

Today, research has no boundary. A problem for study in a topic in research may involve people from several disciplines. A typical problem in engineering for studying the effect of chemical spills in a lake may involve engineers, chemists, biologists, medical doctors, mathematicians, economists, urban planners, and politicians. A comprehensive solution that satisfies all parties can only be produced if people from these disciplines cooperate, rather than having them acting as rivals.

Numerical computing is an important area of research in science and engineering. The topic is widely implemented in the modeling of a problem and its simulation. Additional work involves visualization, which makes the problem and its solution acceptable to the general audience. In the early days of computing in the 1960s and 1970s, the solutions to problems were mostly presented as text and numbers. A programming language like FORTRAN was the dominant tool, and there were no friendly interfaces to present the solutions. Things have improved much since then, as new advancements in hardware and software produce friendly tools based on Microsoft Windows. Numerical computing benefits much from Windows as the results from computation can now be visualized as graphs, numbers, moving images, as well as text.

We select numerical methods as the main title in the book as the concepts in this topic serve as the fundamentals in science and engineering. The importance of numerical methods has been proven as nearly all problems involving mathematical modeling and simulations in science and engineering have their roots in numerical methods. All numeric-intensive applications involving arrays and vectors have their concepts defined in numerical methods. Numerical methods discusses vital and critical techniques in implementing algorithms for providing fast, reliable, and stable solutions to these problems.

Numerical analysis is a branch of mathematics that studies the numerical solutions to problems involving nonlinear equations, systems of linear equations, interpolation and approximation for curve fittings, differentiation, integrals, ordinary differential equations, and partial differential equations. Numerical solutions are needed for these problems as an alternative to the exact solutions, which may be difficult to obtain. The exact solutions for these problems are studied using analytical methods based on mathematical techniques and theorems. The numerical solutions produced may not be exact, but they are good enough for acceptance as they only differ by a small margin.

The scope for numerical analysis is very broad. The study involves the analytical derivation of the methods or techniques using mathematical principles and rules. The study also involves a detailed analysis of the errors between the approximated solutions and the exact solutions, so as to provide faster convergence as well as more accurate solutions.

Numerical methods is different from numerical analysis. Numerical methods is a branch of numerical analysis that specially deals with the implementation of the methods for solving the problems. The details about the derivation of algorithms and techniques for solving the problems and the analysis of errors are not in the main agenda of numerical methods. The main objective in numerical methods is applying the given methods for solving the problems. It is the implementation of the numerical methods that attracts interest from the practitioners who comprise the biggest consumer market. Engineers, scientists, and technologists belong to this group of people who view numerical methods as an important tool for solving their problems. On the other hand, numerical analysis is mostly confined to die-hard mathematicians who love further challenges in developing new numerical techniques for solving the problems.

There are several objectives in developing Computing for Numerical Methods Using Visual C++. First, no books on the market today discuss the visual solutions to problems in numerical methods using C++. There are similar books using software packages such as Matlab, Maple, and Mathematica. These software packages are not really primitive programming languages. They have been developed to hide the programming details and to implement the solution as a black box. In other words, software packages do not really teach the mathematical concepts and principles in solving a problem. For example, the inverse of a matrix can be computed using a single line of command in these packages. The user only needs to know the format and syntax of the command in order to produce the desired solution. It is not important for the user to know the underlying concepts in solving the problem. Computing for Numerical Methods Using Visual C++ is one effort to integrate C++ with the visual solution to problems using numerical methods.

A student cannot be too reliant on software packages. There are cases where software packages fail to provide a solution because of the lack of special routines. For example, a software package may only support a maximum of five levels of the rectangular grids in a boundary-value problem involving partial differential equations. To produce 10 levels, the user will have to use C++ as the language because it is more flexible. Flexibility and versatility are two features in C++ that cannot be matched by any software package.

Our second objective is to promote C++ as a language for numerical computing. C++ has all the necessary ingredients for numerical computing because of its flexible language format, its object-oriented methodology, and its support for high numerical precisions. However, in the past, the popularity of C++ has suffered from the emergence of several new languages. Among them are Java, Python, and C#. These new languages have been developed with the main objective to handle Web and network programming requirements. Other than that, C++ is still dominant and practical for implementation. Because of this reason, C++ is still popular in schools and universities, mostly for teaching and research purposes. C++ is also used widely in the manufacturing sectors such as in the design of device drivers for electronic components.

Our third objective is to make numerical problems friendly and approachable. This goal is important as the general public perception about mathematics is that it is tough, unfriendly, boring, and not applicable in daily life. A mathematician should not be placed in the basement floor of a building under the feeling that he is not important for people to meet. A mathematician can become a role model if he can exert his usefulness in a friendly and acceptable way, which can be done by making mathematics interesting and approachable through a series of friendly interfaces. A weak or average student can become motivated with mathematics if the right tools for understanding mathematics are provided.

A visual approach based on Windows in Computing for Numerical Methods Using Visual C++ is our step in achieving this objective. The book teaches the reader on the friendly interfaces in tackling problems in numerical methods. The interfaces include buttons, dialog boxes, menus, and mouse clicks. The book also provides a very useful tool called MyParser, which can be used to develop various friendly numerical applications on Windows. MyParser is an equation parser that reads an equation input by the user in the form of a string, processes the string, and produces its solution. In promoting its use, we hide all technical details in the development of the parser so that the reader can concentrate on producing the solution to the problem. But the best part is MyParser is free for distribution for those who are interested.

Our last objective is to maintain links with the Microsoft family of products through the .Net platform. Microsoft is unarguably the driver in providing visual solutions based on Windows, and the .Net platform provides a common multilanguage program development for applications on Windows. As Visual C++ is one product supported in the .Net platform, there is a guarantee of continued support from Microsoft for its users. A Visual C++ follower can also enjoy the benefit of integrating her product with other products within the .Net platform with very minimum effort. This flexibility is important as migrating from one system to a different system by bringing along data and programs can be a very expensive, time-consuming, and resource-dependent affair.

In providing the solutions, this book does not provide detailed coverage of each topic in numerical methods. There are already many books on the market that do cover these topics, and we do not wish to compete against them. Instead, we focus on the development stages of each topic from the practical point of view, using Visual C++ as the tool. Knowing how to write the visual interfaces for the numerical problems will definitely contribute to guiding the reader toward the more ambitious numerical modeling and simulation projects. This objective is the main benefit that can be expected from the book. The reader can take advantage of the supplied codes to create several new projects for high-performance computing.

The book is accompanied by source codes that can be downloaded from the given Wiley website. This website will be maintained and updated by the authors from time to time. The codes have been designed to be as compact as possible to make them easy to understand. They are based on the Microsoft Foundation Classes library for providing the required user-friendliness tools. In designing the codes, we opted for the unguided (or non-wizard) approach in order to show the detailed steps for producing the output. This is necessary as the guided (or wizard) approach does not teach some key steps, and it causes the program to be extremely long in size. However, the reader should be able to convert each unguided program code to the guided code if the need arises.

In preparing the manuscript for Computing for Numerical Methods Using Visual C++, the authors would like to thank several people who have been directly or indirectly involved. The authors would like to thank Tan Sri Prof. Dr. Ir. Mohd. Zulkifli Tan Sri Mohd. Ghazali, Vice Chancellor of Universiti Teknologi Malaysia, for his forward vision in leading the university towards becoming a world-class university by 2010. Special thanks also to Professor Dr. Alias Mohd. Yusof and Professor Dr. Md. Nor Musa from Universiti Teknologi Malaysia, and Professor Stephan Olariu from Old Dominion University, for their support and encouragement.

Shaharuddin Salleh

Albert Y. Zomaya

Sakhinah Abu Bakar

April 2007

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset