bisection and secant method

i am needing to implement the bisection and the secant method of solving for the roots of multiple equations and i am struggling on how to do it. here is what i have so far. any help would be greatly appreciated. thanks.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;

double RootMethod1(double fx1, double E, double I, double x1, double x2, double root1 );
double RootMethod2(double fx1, double E, double I, double x1, double x2, double root2 );

int main()
{
	int choice;
	double x, x1, x2, x3, I, E, fx1, root1, root2;
	ofstream outfile;

	outfile.open("RootMethod1.txt");
	outfile.open("RootMethod2.txt");

	cout << "this is a root finding program" << endl;
	cout << "which equation would you like to solve for ?" << endl;
	cout << "1 : f(x)=2x-2" << endl;
	cout << "2 : x^2-2x+2" << endl;
	cout << "3 : e^(-1.4x)sin(2x)" << endl;
	cout << "4 : x^4-10x^3-2x+3" << endl;
	cin >> choice;
	cout << "what is your low x guess?" <<endl;
	cin >> x1;
	cout << "what is your high x guess?" <<endl;
	cin >> x2;
	cout << "how many iterations do you want?" <<endl;
	cin >> I;
	cout << "how close do you want the estimate (Epsilon)?" <<endl;
	cin >> E;

	switch (choice){
		case 1: 
		fx1 = 2*x-2;
			root1 = RootMethod1 ( fx1,  E,  I, x1, x2, root1 );
			root2 = RootMethod2 ( fx1, E, I, x1, x2, root2 );
			break;
		case 2:
			fx1 = x*x-2*x+2;
			root1 = RootMethod1 (fx1,  E,  I, x1, x2, root1 );
			root2 = RootMethod2 ( fx1, E, I, x1, x2, root2 );
			break;
		case 3:
			fx1 = pow( 10, -1.4*x)*sin(2*x);
			root1 = RootMethod1 (fx1,  E,  I, x1, x2, root1);
			root2 = RootMethod2 ( fx1, E, I, x1, x2, root2 );
			break;
		case 4:
			fx1 = (pow(x,4)-pow(10*x,3)-2*x+3);
			root1 = RootMethod1 (fx1,  E,  I, x1, x2, root1);
			root2 = RootMethod2 ( fx1, E, I, x1, x2, root2 );
			break;
	}

	cout << "your root is "<< x3 << endl;

	outfile.close();
	outfile.close();

	cout<<endl;
	return (0);
}

double RootMethod1 (double fx1, double E, double I, double x1, double x2, double root1 ){
	int n;
	double c;
	
	for(n=0;n<I;n++){
		c=(x1+x2)/2.0;
		if(fabs(f(c))<E)	
			break;		//break if solution becomes close to the convergence point(root)
		if(f(x1)*f(c)<0.0)	
			x2=c;
		else x1=c;
	}
	return c;
}





double RootMethod2 (double fx1, double E, double I, double x1, double x2, double root2 ){



}
Last edited on
Topic archived. No new replies allowed.