Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- double fun(double x)
- {
- return (x*x-x-2);
- }
- double error(double prev, double x0)
- {
- return ((x0-prev)/x0);
- }
- double funmax(int a,int b,int c)
- {
- return sqrt(pow((b/a),2)-2*(c/a));
- }
- void root(double x1,double x2)
- {
- double x0,err=1,prev=0;
- int itr=0;
- x0=x1-fun(x1)*(x2-x1)/(fun(x2)-fun(x1));
- while(err>=.0001)
- {
- itr++;
- err=abs(error(prev,x0));
- if(fun(x0)==0)
- break;
- else if(fun(x0)*fun(x1)<0)
- x2=x0;
- else
- x1=x0;
- prev=x0;
- x0=x1-fun(x1)*(x2-x1)/(fun(x2)-fun(x1));
- }
- cout<<x0<<endl;
- }
- int main()
- {
- double x1,x2;
- // cin>>x1>>x2;
- // root(x1,x2);
- double m=funmax(1,-1,-2);
- for(int i=-m-1;i<=m+1;i++)
- {
- if(fun(i)==0)
- cout<<i<<endl;
- if(fun(i)*fun(i+1)<0)
- root(i,i+1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement