Hallo Zusammen,
ich bin ein relativ blutiger Anfänger was Perl angeht, aber das ist das eigentliche Problem.
Mein Ziel ist es aus Fehlerfunktion(diese läift schon) der Gauß-Funktion die inverse zu
berechnen(also ihre Umkehrfunktion, d.h vertausche x,y und löse nach y auf). Mein Gedanke war
der das ich über die einzelnen Gauß-Wert die inversen Werte bilde
Das wäre nach meinen Berechnungen:
$inv_values[$i]=$mean+sqrt(-2*$sigma**2*ln($gaussian_values*sqrt(2*$pi)*$sigma));
Das Aufsummieren dieser Werte ergäbe dann, wie bei der Kumultativen-Gauß-Funktion die
erwartete inverse Funktion. Doch, nicht ganz erklärbar für mich, ergibt sich eine lineare
Kurve..?
Dann gibt im Netz MOdule, wie das Folgende, das aber nicht ohne Weiteres einleuchten.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
sub erfinv {
my $y = @_ ? $_[0] : $_;
return 0 if $y == 0;
return erfcinv(1-$y) if $y > 0.5;
return -erfcinv(1+$y) if $y < -0.5;
#
# Halley's rational 3rd order method:
# u <- f(x)/f'(x)
# v <- f''(x)/f'(x)
# x <- x - u/(1-u*v/2)
#
# Here:
# f(x) = erf(x) - y
# f'(x) = 2/sqrt(pi)*exp(-x*x)
# f''(x) = -4/sqrt(pi)*x*exp(-x*x)
#
my $x = 0;
my $dx;
my $c = .88622692545275801364908374167055; # sqrt(pi)/2
my $eps = 5e-20;
do {
my $f = erf($x) - $y;
my $u = $c*$f*exp($x*$x);
print "u: $u";
# print "u: $u";
$dx = -$u/(1+$u*$x);
$x += $dx;
} until abs($dx/$x) <= $eps;
return $x;
}
z.B. -Wieso wird von der Fehlerfunktion das y abgezogen?
-WIe kann ich den MIttelwert und Sigma hineinbringen?
Falls jemand ein ähnliches Problem schon mal gelöst hatte, wäre ich ganz dankbar, wenn
derjenige mir einen Tip oder eine Teilerklärung geben könnte, oder mich auf die Irrwege
meiner Gedankengänge hinweisen würde.
Danke Im Voraus\n\n
<!--EDIT|esskar|1133900181-->