N=10*10 println(2.0^N) using Plots n = 100 x = linspace(-1,1,n) ξ = 0.1 f(x) = e^(-x^2/ξ^2) plot(x,f) function 積分(n,f,xmin,xmax) dx = (xmax-xmin)/(n-1) 和 = 0.0 for i in 1:n xi = (i-1)*dx+xmin 和 += f(xi) end 和 = 和*dx return 和 end n = 100 x = linspace(0,1,n) ξ = 0.1 f(x) = e^(-x^2/ξ^2) 解析解= ξ*sqrt(π) xmin = -1.0 xmax = 1.0 和 = 積分(n,f,xmin,xmax) println("解析解 = ", 解析解, " 数値和 = ",和) function 刻み幅依存性(ξ,dn) 和 = zeros(Float64,20) xmin = -1.0 xmax = 1.0 f(x) = e^(-x^2/ξ^2) vecn = Int64[] for i in 1:20 n = i*dn 和[i] = 積分(n,f,xmin,xmax) push!(vecn,n) end return 和,vecn end ξ=0.01 和,vecn = 刻み幅依存性(ξ,20) 解析解= ξ*sqrt(π) plot(vecn,和/解析解) ξ=0.001 和,vecn = 刻み幅依存性(ξ,100) 解析解= ξ*sqrt(π) plot(vecn,和/解析解) function モンテカルロ積分(n,f,xmin,xmax) 和 = 0.0 for i in 1:n xi = (xmax-xmin)*rand()+xmin 和 += f(xi) end 和 = 和*(xmax-xmin)/n return 和 end function サンプル数依存性(ξ,dn) 和 = zeros(Float64,20) xmin = -1.0 xmax = 1.0 f(x) = e^(-x^2/ξ^2) vecn = Int64[] for i in 1:20 n = i*dn 和[i] = モンテカルロ積分(n,f,xmin,xmax) push!(vecn,n) end return 和,vecn end srand(123) ξ=0.01 和,vecn = サンプル数依存性(ξ,300) 解析解= ξ*sqrt(π) plot(vecn,和/解析解) ξ=0.01 和,vecn = サンプル数依存性(ξ,10000) 解析解= ξ*sqrt(π) plot(vecn,和/解析解) ξ=0.001 和,vecn = サンプル数依存性(ξ,10000) 解析解= ξ*sqrt(π) plot(vecn,和/解析解) using Distributions x = linspace(-1,1,100) m = Normal(0,0.01) f(x) = pdf(m,x) I = 積分(100,f,-1,1) println(I) plot(x,f) function 重みつきモンテカルロ積分(n,f,xmin,xmax,m) 和 = 0.0 for i in 1:n xi = rand(m) 和 += f(xi)/pdf(m,xi) end 和 = 和/n return 和 end function 重みつきのサンプル数依存性(ξ,dn,m) 和 = zeros(Float64,20) xmin = -10.0 xmax = 10.0 f(x) = e^(-x^2/ξ^2) vecn = Int64[] for i in 1:20 n = i*dn 和[i] = 重みつきモンテカルロ積分(n,f,xmin,xmax,m) push!(vecn,n) end return 和,vecn end m = Normal(0,0.01) ξ=0.01 n = 30 和1,vecn = 重みつきのサンプル数依存性(ξ,n,m) 和2,vecn = サンプル数依存性(ξ,n) 和3,vecn = 刻み幅依存性(ξ,n) 解析解 = ξ*sqrt(π) plot(vecn,[和1/解析解,和2/解析解,和3/解析解],label=["Normal distribution","Uniform distribution","Numerical integration"]) m = Normal(0,0.001) ξ=0.001 n = 30 和1,vecn = 重みつきのサンプル数依存性(ξ,n,m) 和2,vecn = サンプル数依存性(ξ,n) 和3,vecn = 刻み幅依存性(ξ,n) 解析解 = ξ*sqrt(π) plot(vecn,[和1/解析解,和2/解析解,和3/解析解],label=["Normal distribution","Uniform distribution","Numerical integration"])