#!/usr/local/bin/ruby require "GSL" include GSL # Test numerical integration STDERR.puts "Running numerical integration tests..." #f = Function::new{ |x| x*x } #f2 = Function.new { |x| Math::exp(-x*x*0.5) } #p f.integration_qng(0.0, 2.0, 0.0, 1.0e-7) #p f.integration_qag(0.0, 2.0, 0.0, 1.0e-7, 1, 1000) #p f.integration_qags(0.0, 2.0, 0.0, 1.0e-7, 1000) #a, = f2.integration_qagi(0.0, 1.0e-7, 1000) #t = Integration::QAWSTable.new(4, 5, 1, 0) #t.set([7.0, 2.0, 0, 1]) #p t.to_a #p [34, 5, 0, 1].to_gsl_integration_qaws_table #p t.to_a #p f3.integration_qags(0, 1, 0, 1e-7, 1000) #aa = Integration::QAWOTable.new(3.0, 4.0, Integration::SINE, 9) #aa.set_length(123) #p aa.to_a f3 = Function.new { |x| Math::log(x) / Math::sqrt(x) } expected = -4.0 result, error, intervals, status = f3.integration_qags(0.0, 1.0, 0.0, 1.0e-7, 1000) printf("\nresult = % .18f\n", result); printf("exact result = % .18f\n", expected); printf("estimated error = % .18f\n", error); printf("actual error = % .18f\n", result - expected); printf("intervals = %d\n", intervals); STDERR.puts "\ndone."