# ベータ関数 Beta Function # 引数 変数 変数 ($X, $Y) # 戻り値 ベータ関数 (@BetaFunction) sub BETAFUNCTION{ my ($X, $Y) = @_; my $BetaFunction = 0; my $SimpsonsRule = 0; my $Pi = atan2(1, 1) * 4; my $a = 0; my $b = $Pi / 2; my $N = 100; my $h = ($b - $a) / $N; my $Sum = 0; my $SumA = 0; my $SumB = 0; # 計算 $SumA = (sin($a) ** ((2 * $X) - 1)) * (cos($a) ** ((2 * $Y) - 1)); $SumB = (sin($b) ** ((2 * $X) - 1)) * (cos($b) ** ((2 * $Y) - 1)); # 分割数は適当 for(my $i = 1; $i < $N; $i++){ my $t = $a + ($i * $h); my $num = ($i % 2 == 0 ? 2 : 4); my $tmp = (sin($t) ** ((2 * $X) - 1)) * (cos($t) ** ((2 * $Y) - 1)); $Sum += $num * $tmp; } # シンプソンの公式 Simpson's Rule $SimpsonsRule = ($SumA + $Sum + $SumB) * ($h / 3); # ベータ関数 Beta Function $BetaFunction = 2 * $SimpsonsRule; return $BetaFunction; }