1   import fi.jyu.mit.ohj2.*;
2   /**
3    * Ohjelmalla integroidaan numeerisesti funktio-olio.
4    * @author Vesa Lappalainen
5    * @version 1.0, 25.03.2003
6    */
7   public class Integroi2 {
8   
9     interface FunktioRR {
10      public double f(double x);
11    }
12  
13    static class SinFun implements FunktioRR {
14      public double f(double x) { return Math.sin(x); }
15    }
16  
17    static class ExpFun implements FunktioRR {
18      public double f(double x) { return Math.exp(x); }
19    }
20  
21    static class OmaFun implements FunktioRR  {
22      public double f(double x) { return 2*x- 5;      }
23    }
24  
25    public static double integroi(FunktioRR f, double x1, double x2, int tiheys) {
26      double x,dx,summa=0;
27  
28      dx = (x2- x1)/tiheys;
29  
30      for (x=x1+dx/2 ; x<x2; x+=dx)
31        summa += f.f(x)*dx;
32  
33      return summa;
34    }
35  
36  
37    public static void main(String[] args)  {
38      double ifx;
39      ifx = integroi(new OmaFun(),0,5,100);
40      System.out.println("Integraali omafun(x) väliltä [0,5] on noin "+
41                         Mjonot.fmt(ifx,7,5));
42      ifx = integroi(new SinFun(),0,Math.PI,1000);
43      System.out.println("Integraali sin(x) väliltä [0,pi] on noin "+
44                         Mjonot.fmt(ifx,7,5));
45      ifx = integroi(new ExpFun(),0,1,500);
46      System.out.println("Integraali exp(x) väliltä [0,1] on noin "+
47                         Mjonot.fmt(ifx,7,5));
48    }
49  }
50