//======================================================
// SEMİH YILMAZ-SAYISAL ISI ISINIMI-ÖDEV 4- 12.11.2013
// MODEST chapter 4- example 4.4 çözümü
// Analitik yöntem ile Monte Carlo integrali ile numerik çözümün karsılastırılması
// Dr. Turhan Coban
// =====================================================
import java.io.*;
class f1 extends f_xj
{
public double func(double x[])
{
//çözümü istenen fonksiyon
double ff;
double pi=Math.PI;
//x[0] X 0-a=1 arası degisiyor
//x[1] Y 0-b=1 arası degisiyor.
if(x[0]>=0&&x[0]<=1.0)
{if(x[1]>=0&&x[1]<=1.0) return ff=Math.sqrt(x[0]*x[0]+x[1]*x[1]+1.0);;}
else
return 0;
return 0;
}
}
class integ_monte_carlo_odev4
{
public static double monte_carlo(f_xj ff,long n)
{ //monte - carlo integral 3D (volume) küresel koordinat sistemi
double x[]=new double[2];
double a[]=new double [2];
double b[]=new double[2];
a[0]=0;
b[0]=2.0*Math.PI;
a[1]=0;
b[1]=Math.PI/2.0;
double h=1.0;
double sum=0;
for(int j=0;j<2;j++) {h*=(b[j]-a[j]);}
for(int i=0;i<n;i++)
{ for(int j=0;j<2;j++) {x[j]=a[j]+(b[j]-a[j])*Math.random();}
sum+=ff.func(x);
}
double c=sum/(double)n;
return c;
}
public static void main(String args[]) throws IOException
{
f1 b1=new f1();
double Fd12;
Fd12=1.0/Math.PI/Math.sqrt(2.0)*Math.atan(1.0/Math.sqrt(2.0));
System.out.println("Nümerik Fd12 : "+monte_carlo(b1,10000000)+"\nAnalitik Fd12: "+Fd12 )
;
}
}
//======================================================
// OUTPUT:
// MODEST chapter 4- example 4.4 çözümü
// ---------- Capture Output ----------
//> "C:\java\bin\java.exe" integ_monte_carlo5
//Nümerik Fd12 : 0.13051287096033087
//Analitik Fd12: 0.13853160599489298
//> Terminated with exit code 0.
// =====================================================