#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f( double x) {
return ( ( 2.0 * x - 3.0 ) * x + 4.0 ) * x - 5.0 ;
}
int main( ) {
double x1, x2, x3, f1, f2, f3, tolerance;
cout << "Secant Method with Horner's Rule" << endl;
cout << "f(x) = 2x³ - 3x² + 4x - 5" << endl;
cout << "Enter the value of x1: " ;
cin >> x1;
cout << "Enter the value of x2: " ;
cin >> x2;
cout << "Enter the tolerance: " ;
cin >> tolerance;
f1 = f( x1) ;
f2 = f( x2) ;
cout << fixed << setprecision( 6 ) ;
cout << "\n Iteration\t x1\t \t x2\t \t x3\t \t f(x1)\t \t f(x2)\t \t Residual" << endl;
cout << "----------------------------------------------------------------------------------------" << endl;
int iteration = 0 ;
do {
x3 = ( f2 * x1 - f1 * x2) / ( f2 - f1) ;
f3 = f( x3) ;
iteration++ ;
cout << iteration << "\t \t " << x1 << "\t " << x2 << "\t " << x3
<< "\t " << f1 << "\t " << f2 << "\t " << fabs ( f3) << endl;
x1 = x2;
f1 = f2;
x2 = x3;
f2 = f3;
} while ( fabs ( f3) >= tolerance && iteration < 100 ) ;
cout << "\n Approximate root = " << x3 << endl;
cout << "Final residual = " << f3 << endl;
cout << "Iterations needed = " << iteration << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmRvdWJsZSBmKGRvdWJsZSB4KSB7CiAgICByZXR1cm4gKCgyLjAgKiB4IC0gMy4wKSAqIHggKyA0LjApICogeCAtIDUuMDsKfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgeDEsIHgyLCB4MywgZjEsIGYyLCBmMywgdG9sZXJhbmNlOwoKICAgIGNvdXQgPDwgIlNlY2FudCBNZXRob2Qgd2l0aCBIb3JuZXIncyBSdWxlIiA8PCBlbmRsOwogICAgY291dCA8PCAiZih4KSA9IDJ4wrMgLSAzeMKyICsgNHggLSA1IiA8PCBlbmRsOwoKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB2YWx1ZSBvZiB4MTogIjsKICAgIGNpbiA+PiB4MTsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB2YWx1ZSBvZiB4MjogIjsKICAgIGNpbiA+PiB4MjsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB0b2xlcmFuY2U6ICI7CiAgICBjaW4gPj4gdG9sZXJhbmNlOwoKICAgIGYxID0gZih4MSk7CiAgICBmMiA9IGYoeDIpOwoKICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpOwogICAgY291dCA8PCAiXG5JdGVyYXRpb25cdHgxXHRcdHgyXHRcdHgzXHRcdGYoeDEpXHRcdGYoeDIpXHRcdFJlc2lkdWFsIiA8PCBlbmRsOwogICAgY291dCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPDwgZW5kbDsKCiAgICBpbnQgaXRlcmF0aW9uID0gMDsKCiAgICBkbyB7CiAgICAgICAgeDMgPSAoZjIgKiB4MSAtIGYxICogeDIpIC8gKGYyIC0gZjEpOwogICAgICAgIGYzID0gZih4Myk7CgogICAgICAgIGl0ZXJhdGlvbisrOwoKICAgICAgICBjb3V0IDw8IGl0ZXJhdGlvbiA8PCAiXHRcdCIgPDwgeDEgPDwgIlx0IiA8PCB4MiA8PCAiXHQiIDw8IHgzCiAgICAgICAgICAgICA8PCAiXHQiIDw8IGYxIDw8ICJcdCIgPDwgZjIgPDwgIlx0IiA8PCBmYWJzKGYzKSA8PCBlbmRsOwoKICAgICAgICB4MSA9IHgyOwogICAgICAgIGYxID0gZjI7CiAgICAgICAgeDIgPSB4MzsKICAgICAgICBmMiA9IGYzOwoKICAgIH0gd2hpbGUgKGZhYnMoZjMpID49IHRvbGVyYW5jZSAmJiBpdGVyYXRpb24gPCAxMDApOwoKICAgIGNvdXQgPDwgIlxuQXBwcm94aW1hdGUgcm9vdCA9ICIgPDwgeDMgPDwgZW5kbDsKICAgIGNvdXQgPDwgIkZpbmFsIHJlc2lkdWFsID0gIiA8PCBmMyA8PCBlbmRsOwogICAgY291dCA8PCAiSXRlcmF0aW9ucyBuZWVkZWQgPSAiIDw8IGl0ZXJhdGlvbiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9