// Assignment – 01
// Tanmoy Debnath (21203050); SL- 17
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
// Define the polynomial function
double Polynomial( double x, double a, double b, double c, double d, double e) {
return a * pow ( x, 4 ) + b * pow ( x, 3 ) + c * pow ( x, 2 ) + d * x + e;
}
// Function to find the root using the False Position method
double FalsePosition( double a, double b, double c, double d, double e, double p, double q, int n) {
double fp = Polynomial( p, a, b, c, d, e) ;
double fq = Polynomial( q, a, b, c, d, e) ;
if ( fp * fq >= 0 ) {
throw "The values of f(p) and f(q) should have opposite signs." ;
}
double root = 0 ;
double precision = pow ( 10 , - n) ;
while ( fabs ( q - p) >= precision) {
root = ( p * fq - q * fp) / ( fq - fp) ;
double fr = Polynomial( root, a, b, c, d, e) ;
if ( fabs ( fr) < precision) {
break ;
}
if ( fp * fr < 0 ) {
q = root;
fq = fr;
} else {
p = root;
fp = fr;
}
}
return round( root * pow ( 10 , n) ) / pow ( 10 , n) ; // Round to n decimal places
}
int main( ) {
double a, b, c, d, e, p, q;
int n;
cout << "Enter co-efficients of the polynomial f(x) = ax^4 + bx^3 + cx^2 + dx + e:" << endl;
cout << "a: " ;
cin >> a;
cout << "b: " ;
cin >> b;
cout << "c: " ;
cin >> c;
cout << "d: " ;
cin >> d;
cout << "e: " ;
cin >> e;
cout << "\n Enter interval [p, q] where the root lies:" << endl;
cout << "p: " ;
cin >> p;
cout << "q: " ;
cin >> q;
cout << "\n Enter number of decimal places for the root: " ;
cin >> n;
try {
double root = FalsePosition( a, b, c, d, e, p, q, n) ;
cout << "\n Root found: " << root << endl;
} catch ( const char * msg) {
cout << "\n Error: " << msg << endl;
}
return 0 ;
}
Ly8gQXNzaWdubWVudCDigJMgMDEKLy8gVGFubW95IERlYm5hdGggKDIxMjAzMDUwKTsgU0wtIDE3CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0ZGxpYj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy8gRGVmaW5lIHRoZSBwb2x5bm9taWFsIGZ1bmN0aW9uCmRvdWJsZSBQb2x5bm9taWFsKGRvdWJsZSB4LCBkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUpIHsKICAgIHJldHVybiBhICogcG93KHgsIDQpICsgYiAqIHBvdyh4LCAzKSArIGMgKiBwb3coeCwgMikgKyBkICogeCArIGU7Cn0KCi8vIEZ1bmN0aW9uIHRvIGZpbmQgdGhlIHJvb3QgdXNpbmcgdGhlIEZhbHNlIFBvc2l0aW9uIG1ldGhvZApkb3VibGUgRmFsc2VQb3NpdGlvbihkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBwLCBkb3VibGUgcSwgaW50IG4pIHsKICAgIGRvdWJsZSBmcCA9IFBvbHlub21pYWwocCwgYSwgYiwgYywgZCwgZSk7CiAgICBkb3VibGUgZnEgPSBQb2x5bm9taWFsKHEsIGEsIGIsIGMsIGQsIGUpOwoKICAgIGlmIChmcCAqIGZxID49IDApIHsKICAgICAgICB0aHJvdyAiVGhlIHZhbHVlcyBvZiBmKHApIGFuZCBmKHEpIHNob3VsZCBoYXZlIG9wcG9zaXRlIHNpZ25zLiI7CiAgICB9CgogICAgZG91YmxlIHJvb3QgPSAwOwogICAgZG91YmxlIHByZWNpc2lvbiA9IHBvdygxMCwgLW4pOwoKICAgIHdoaWxlIChmYWJzKHEgLSBwKSA+PSBwcmVjaXNpb24pIHsKICAgICAgICByb290ID0gKHAgKiBmcSAtIHEgKiBmcCkgLyAoZnEgLSBmcCk7CgogICAgICAgIGRvdWJsZSBmciA9IFBvbHlub21pYWwocm9vdCwgYSwgYiwgYywgZCwgZSk7CgogICAgICAgIGlmIChmYWJzKGZyKSA8IHByZWNpc2lvbikgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmIChmcCAqIGZyIDwgMCkgewogICAgICAgICAgICBxID0gcm9vdDsKICAgICAgICAgICAgZnEgPSBmcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwID0gcm9vdDsKICAgICAgICAgICAgZnAgPSBmcjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJvdW5kKHJvb3QgKiBwb3coMTAsIG4pKSAvIHBvdygxMCwgbik7IC8vIFJvdW5kIHRvIG4gZGVjaW1hbCBwbGFjZXMKfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgYSwgYiwgYywgZCwgZSwgcCwgcTsKICAgIGludCBuOwoKICAgIGNvdXQgPDwgIkVudGVyIGNvLWVmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgZih4KSA9IGF4XjQgKyBieF4zICsgY3heMiArIGR4ICsgZToiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJhOiAiOwogICAgY2luID4+IGE7CiAgICBjb3V0IDw8ICJiOiAiOwogICAgY2luID4+IGI7CiAgICBjb3V0IDw8ICJjOiAiOwogICAgY2luID4+IGM7CiAgICBjb3V0IDw8ICJkOiAiOwogICAgY2luID4+IGQ7CiAgICBjb3V0IDw8ICJlOiAiOwogICAgY2luID4+IGU7CgogICAgY291dCA8PCAiXG5FbnRlciBpbnRlcnZhbCBbcCwgcV0gd2hlcmUgdGhlIHJvb3QgbGllczoiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJwOiAiOwogICAgY2luID4+IHA7CiAgICBjb3V0IDw8ICJxOiAiOwogICAgY2luID4+IHE7CgogICAgY291dCA8PCAiXG5FbnRlciBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZm9yIHRoZSByb290OiAiOwogICAgY2luID4+IG47CgogICAgdHJ5IHsKICAgICAgICBkb3VibGUgcm9vdCA9IEZhbHNlUG9zaXRpb24oYSwgYiwgYywgZCwgZSwgcCwgcSwgbik7CiAgICAgICAgY291dCA8PCAiXG5Sb290IGZvdW5kOiAiIDw8IHJvb3QgPDwgZW5kbDsKICAgIH0gY2F0Y2ggKGNvbnN0IGNoYXIqIG1zZykgewogICAgICAgIGNvdXQgPDwgIlxuRXJyb3I6ICIgPDwgbXNnIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K