Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.io.*;
- public class Main {
- double A = 0;
- double B = Math.PI / 2;
- int[] steps = { 10, 20, 50, 100 };
- private void solve() {
- for (int s : steps) {
- System.out.printf("Simpson(%d) = %f\n", s, simpson(s, A, B));
- }
- for (int s = 3; s <= 7; ++s) {
- System.out.printf("Newton(%d) = %f\n", s, newton(s, A, B));
- }
- }
- private double newton(int steps, double a, double b) {
- double res = 0;
- double h = (b - a) / steps;
- for (int it = 0; it <= steps; ++it) {
- res += f(a + it * h) * H[steps][it];
- }
- return res * (b - a);
- }
- private double simpson(int steps, double a, double b) {
- double h = (b - a) / steps;
- double res = 0;
- for (int it = 0; it < steps; ++it) {
- res += f(a + it * h) + 4 * f(a + (it + 0.5) * h) + f(a + (it + 1) * h);
- }
- return res * h / 6;
- }
- private double f(double x) {
- return Math.sin(x);
- }
- double[][] H = new double[8][9];
- {
- H[1][0] = H[1][1] = 0.5;
- //
- H[2][0] = H[2][2] = 1.0 / 6;
- H[2][1] = 2.0 / 3;
- //
- H[3][0] = H[3][3] = 1.0 / 8;
- H[3][1] = H[3][2] = 3.0 / 8;
- //
- H[4][0] = H[4][4] = 7.0 / 90;
- H[4][1] = H[4][3] = 16.0 / 45;
- H[4][2] = 2.0 / 15;
- //
- H[5][0] = H[5][5] = 19.0 / 288;
- H[5][1] = H[5][4] = 25.0 / 96;
- H[5][2] = H[5][3] = 25.0 / 144;
- //
- H[6][0] = H[6][6] = 41.0 / 840;
- H[6][1] = H[6][5] = 9.0 / 35;
- H[6][2] = H[6][4] = 9.0 / 280;
- H[6][3] = 34.0 / 105;
- //
- H[7][0] = H[7][7] = 751.0 / 17280;
- H[7][1] = H[7][6] = 3577.0 / 17280;
- H[7][2] = H[7][5] = 1323.0 / 17280;
- H[7][3] = H[7][4] = 2989.0 / 17280;
- }
- public static void main(String[] argc) {
- new Main().solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement