Reference no: EM132209625
Question :
Write a program (composed of a class named solution and its corresponding testing client) that calculates roots in the interval [-10.0, 10.0] of a single quadratic equation:
a*x2 + b*x + c = 0
using a numerical approximation technique similar to that outlined in Section 7.6 of the textbook and discussed in class (NOT using an analytical solution we used in previous assignments). The program has to meet all requirements of Assignments #2 and #3 (except Requirement #0), especially regarding the readCoeffs() and outResults() functions, with the following new requirements (which override the respective ones of Assignment #3):
The organization of the program should follow the principle of object oriented programming, with program division into a specification and implementation, and respective files named as follows: assign5.h, assign5.cpp and assign5test.cpp.
The testing client program shall run once, to solve a single equation, and should be organized in subsequent function calls (steps), all in the main() function, unless stated otherwise.
The command line argument shall be used for the testing client program to receive the value of tolerance (of the type double) when to stop iterations. If an argument is missing, the program should exit smoothly (not crashing), displaying the following message to the screen:
Execution: prog_name epsilon
The output of the program, in a negative case, that is, when no solution has been found using this numerical method, should look as follows:
The solution of a quadratic equation with coefficients:
a=its_value, b=its_value, c=its_value
has not been found.
Note 1. The function to calculate roots shall use the numerical method (bisection) discussed in the textbook to solve the equation. Entire interval [-10.0, 10.0] shall be scanned for the potential existence of roots. For this purpose, you can divide it into 20 smaller intervals, each one unit wide (for example, starting with [-10.0. -9.0] then [-9.0, -8.0] and so on).
Note 2. The function equivalent to f() called in bisections should receive coefficients of the equation passed via an array encapsulated in a structure.
Note 3. If the equation is linear (coefficient a=0.0), a single root should be searched for and respective message should appear both on the screen and in the file.