001 import fi.jyu.mit.ohj2.*; 002 /** 003 * Ohjelmalla integroidaan numeerisesti funktio-olio. 004 * @author Vesa Lappalainen 005 * @version 1.0, 25.03.2003 006 */ 007 public class Integroi3 { 008 009 interface FunktioRR { 010 public double f(double x); 011 public String toString(); 012 public double intfun(double x); 013 public double derfun(double x); 014 public double defint(double x1, double x2); 015 } 016 017 public static class PerusFunktio implements FunktioRR { 018 public double f(double x) { return 0; } 019 public String toString() { return ""; } 020 public double intfun(double x) { return 0; } 021 public double derfun(double x) { return 0; } 022 public double defint(double x1, double x2) { return 0; } 023 } 024 025 static class SinFun extends PerusFunktio { 026 public double f(double x) { return Math.sin(x); } 027 } 028 029 static class ExpFun extends PerusFunktio { 030 public double f(double x) { return Math.exp(x); } 031 } 032 033 static class OmaFun extends PerusFunktio { 034 public double f(double x) { return 2*x- 5; } 035 } 036 037 public static double integroi(FunktioRR f, double x1, double x2, int tiheys) { 038 double x,dx,summa=0; 039 040 dx = (x2- x1)/tiheys; 041 042 for (x=x1+dx/2 ; x<x2; x+=dx) 043 summa += f.f(x)*dx; 044 045 return summa; 046 } 047 048 049 public static void main(String[] args) { 050 double ifx; 051 ifx = integroi(new OmaFun(),0,5,100); 052 System.out.println("Integraali omafun(x) väliltä [0,5] on noin "+ 053 Mjonot.fmt(ifx,7,5)); 054 ifx = integroi(new SinFun(),0,Math.PI,1000); 055 System.out.println("Integraali sin(x) väliltä [0,pi] on noin "+ 056 Mjonot.fmt(ifx,7,5)); 057 ifx = integroi(new ExpFun(),0,1,500); 058 System.out.println("Integraali exp(x) väliltä [0,1] on noin "+ 059 Mjonot.fmt(ifx,7,5)); 060 } 061 }