Advertisement
Guest User

Untitled

a guest
May 25th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.66 KB | None | 0 0
  1. import java.util.*;
  2. import java.io.*;
  3.  
  4. public class Main {
  5.    
  6.     double A = 0;
  7.     double B = Math.PI / 2;
  8.    
  9.     int[] steps = { 10, 20, 50, 100 };
  10.     private void solve() {
  11.         for (int s : steps) {
  12.             System.out.printf("Simpson(%d) = %f\n", s, simpson(s, A, B));
  13.         }
  14.         for (int s = 3; s <= 7; ++s) {
  15.             System.out.printf("Newton(%d) = %f\n", s, newton(s, A, B));
  16.         }
  17.     }
  18.  
  19.     private double newton(int steps, double a, double b) {
  20.         double res = 0;
  21.         double h = (b - a) / steps;
  22.         for (int it = 0; it <= steps; ++it) {
  23.             res += f(a + it * h) * H[steps][it];
  24.         }
  25.         return res * (b - a);
  26.     }
  27.  
  28.     private double simpson(int steps, double a, double b) {
  29.         double h = (b - a) / steps;
  30.         double res = 0;
  31.         for (int it = 0; it < steps; ++it) {
  32.             res += f(a + it * h) + 4 * f(a + (it + 0.5) * h) + f(a + (it + 1) * h);
  33.         }
  34.         return res * h / 6;
  35.     }
  36.  
  37.     private double f(double x) {
  38.         return Math.sin(x);
  39.     }
  40.    
  41.     double[][] H = new double[8][9];
  42.     {
  43.         H[1][0] = H[1][1] = 0.5;
  44.         //
  45.         H[2][0] = H[2][2] = 1.0 / 6;
  46.         H[2][1] = 2.0 / 3;
  47.         //
  48.         H[3][0] = H[3][3] = 1.0 / 8;
  49.         H[3][1] = H[3][2] = 3.0 / 8;
  50.         //
  51.         H[4][0] = H[4][4] = 7.0 / 90;
  52.         H[4][1] = H[4][3] = 16.0 / 45;
  53.         H[4][2] = 2.0 / 15;
  54.         //
  55.         H[5][0] = H[5][5] = 19.0 / 288;
  56.         H[5][1] = H[5][4] = 25.0 / 96;
  57.         H[5][2] = H[5][3] = 25.0 / 144;
  58.         //
  59.         H[6][0] = H[6][6] = 41.0 / 840;
  60.         H[6][1] = H[6][5] = 9.0 / 35;
  61.         H[6][2] = H[6][4] = 9.0 / 280;
  62.         H[6][3] = 34.0 / 105;
  63.         //
  64.         H[7][0] = H[7][7] = 751.0 / 17280;
  65.         H[7][1] = H[7][6] = 3577.0 / 17280;
  66.         H[7][2] = H[7][5] = 1323.0 / 17280;
  67.         H[7][3] = H[7][4] = 2989.0 / 17280;
  68.     }
  69.  
  70.     public static void main(String[] argc) {
  71.         new Main().solve();
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement