メメメモモ

プログラミング、筋トレ、ゲーム、etc

数値計算

前進差分と中心差分で微分

次の関数を微分するプログラムをperlで書いてみました。 use strict; use warnings; difference(); sub f1 { my ($x) = @_; my $a = 2; my $b = 4; return $a*($x ** 2)+$b; } sub f2 { my ($u) = @_; return sqrt(1/(1+exp(-2*$u))); } sub difference { my…

シンプソン公式

シンプソン公式のプログラムを書きました。 シンプソン公式の特徴は下記の様な感じです。 台形公式より精度が高い 小区間[ , ]で、2次曲線を近似して積分する シンプソン公式のプログラムは下記のようにしました。 sub simpson { my ($f, $N, $a, $b) = @_;…

台形公式

台形公式で積分の値を求めるプログラムを書きました。 use strict; use warnings; main(sub { my $x = shift; return $x * $x; }, 100000); sub main { my ($f, $N) = @_; my (@x, @y); my $a = 0.0; my $b = 3.0; my $h = ($b-$a)/$N; for my $i (0..$N) { …

標準正規分布に従う乱数

標準正規分布に従う乱数を発生させるプログラムを書いてみました。 正規分布は次のような式になります。 標準正規分布は、「」の正規分布になります。 この分布に従う乱数を生成するプログラムを書いて、生成結果を確かめてみました。 #!/usr/bin/env perl u…

ニュートン・ラフソン法

ニュートン・ラフソン法(ニュートン法)は、関数f(x)とx軸が交わる点の近似値を反復計算により得る方法です。 この方法を用いる際の注意点は次のようなものです。 関数f(x)がx軸と交わる 定義域の範囲で微分可能(接線が引ける) 接線がx軸と交わる 適切な初…