Advertisement
juyana

cse 2208 lab 2

Sep 9th, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. double fun(double x)
  6. {
  7. return (x*x-x-2);
  8. }
  9. double error(double prev, double x0)
  10. {
  11. return ((x0-prev)/x0);
  12. }
  13. double funmax(int a,int b,int c)
  14. {
  15. return sqrt(pow((b/a),2)-2*(c/a));
  16. }
  17. void root(double x1,double x2)
  18. {
  19. double x0,err=1,prev=0;
  20. int itr=0;
  21.  
  22. x0=x1-fun(x1)*(x2-x1)/(fun(x2)-fun(x1));
  23. while(err>=.0001)
  24. {
  25. itr++;
  26. err=abs(error(prev,x0));
  27.  
  28. if(fun(x0)==0)
  29. break;
  30. else if(fun(x0)*fun(x1)<0)
  31. x2=x0;
  32. else
  33. x1=x0;
  34.  
  35. prev=x0;
  36. x0=x1-fun(x1)*(x2-x1)/(fun(x2)-fun(x1));
  37.  
  38. }
  39. cout<<x0<<endl;
  40. }
  41. int main()
  42. {
  43.  
  44. double x1,x2;
  45. // cin>>x1>>x2;
  46. // root(x1,x2);
  47. double m=funmax(1,-1,-2);
  48.  
  49. for(int i=-m-1;i<=m+1;i++)
  50. {
  51. if(fun(i)==0)
  52. cout<<i<<endl;
  53. if(fun(i)*fun(i+1)<0)
  54. root(i,i+1);
  55. }
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement