Advertisement
Guest User

Untitled

a guest
May 25th, 2015
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. double f( double x, double y)
  7. {
  8. return y/x-y-x;
  9. }
  10. double norm(const double *a, const double *b, int n)
  11. {
  12. double norma = fabs(b[1] - a[0]);
  13. for(int i = 0, j = 1; i < n/2; i++, j+=2)
  14. {
  15. norma = norma<fabs(b[j]-a[i]) ? fabs(b[j]-a[i]) : norma;
  16. }
  17. return norma;
  18.  
  19. }
  20.  
  21. int main()
  22. {
  23. double e, a,b, *y, *newy, norma,h, y0, k1,k2;
  24. int n = 10, kst=0;
  25. cout << "Enter e =";
  26. cin >> e;
  27. a = 1;
  28. b = 4.5;
  29. y0 = exp(-1) - 1;
  30. y = new double [5];
  31. newy = new double[10];
  32. for(int i = 0; i < n; i++) {
  33. newy[i] = 0;
  34. y[i/2] = 0;
  35. }
  36. do
  37. {
  38. delete y;
  39. y = new double[n/2];
  40. for(int i = 0; i < n/2; i++) y[i] = newy[i];
  41. delete[] newy;
  42. newy = new double[n];
  43. newy[0] = y0;
  44. h = (b-a)/n;
  45. for(int i = 1; i < n; i++)
  46. {
  47. k1 = f(a+i*h, newy[i-1]);
  48. k2 = f(a+i*h + 2.0/3*h, newy[i-1] + 2.0/3*h*k1);
  49. newy[i] = newy[i-1] + h / 4 *k1 + 3.0/4*h*k2;
  50. }
  51. norma = norm(y, newy,n);
  52. n*=2;
  53. kst++;
  54. }while(norma>=e);
  55. n/=2;
  56. for(int i = 0; i < n; i++)
  57. {
  58. cout << a + i*h << " ";
  59. cout << newy[i] << " ";
  60. cout << (a + i*h)*(exp(-(a + i*h))-1) << endl;
  61. }
  62. cout << b << " ";
  63. k1 = f(b, newy[n-1]);
  64. k2 = f(b + 2.0/3*h, newy[n-1] + 2.0/3*h*k1);
  65. cout << newy[n-1] + h / 4 *k1 + 3.0/4*h*k2 << " ";
  66. cout << b*(exp(-b)-1) << endl;
  67.  
  68. cout << "Iteration = " << kst;
  69.  
  70. return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement