Thread ?Ableitung einer Funktion ermitteln? (8 answers)
Opened by EagleFox at 2006-04-25 20:15

EagleFox
 2006-05-10 13:51
#65329 #65329
User since
2006-04-10
66 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

nach kleiner Abwesendheitsphase habe ich nun das folgende Programm geschrieben, welches mithilfe einer Gausskurve die Funktion glättet (jedenfalls soll es das tun!). Leider macht das Programm mehr so garnichts! Ich erhalte weder Fehlermeldungen, noch schreibt das Programm etwas in die vorgesehene Datei!

Hier der Code:
Code: (dl )
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#! /usr/bin/perl

use strict;
use warnings;
#use diagnostics;

my $pi = 4 * atan2( 1, 1 );


my $punkte = 60; # Anzahl der Punkte im Spektrum
my $sigma = 2; # Breite der Gausskurve
my $bereich = 3; # Grenzen der Summe
my $ende = $punkte - $bereich;
my $b = $bereich;

my $file = $ARGV[0];
my $out = "gauss2.test";

my $gauss;
my @array;


open(my $outfh,">",$out) or die $!;
open(my $datei,"<",$file) or die $!;
@array = <$datei>;

# print "Das Array hat ".scalar @array." Zeilen!\n";


for(my $n = $b; $n == $ende; $n++){
my $imin = $n - $bereich;
my $imax = $n + $bereich;

$gauss = 0;

for(my $i = $imin; $i == $imax; $imin++){
$gauss = $gauss + ((-1/(sqrt(2*$pi)*($sigma**3)))*$array[$i]*($i - $n)*exp((($i - $n)**2)/(2*($sigma**2))));
}

print $outfh $gauss,"\n";

}



close $datei;
close $outfh;


Das Array ist auf jeden Fall nicht leer, das habe ich mit der auskommentierten Zeile geprüft. Ich habe mir die Arraydaten auch mal ausgeben lassen. Aber warum läuft die Schleife nicht???

Vorher hatte ich mal die Variable $n an der Stelle deklariert, wo ich jetzt $b deklariere. Und anstatt $i hatte ich direkt $imin eingesetzt. Dann bekam ich immer die seltsame Meldung:

Code: (dl )
1
2
Useless use of private variable in void context at ./test.pl line 42. 
Useless use of private variable in void context at ./test.pl line 46.


In den Zeilen 42 und 46 sind die beiden for-Schleifen jeweils zuende (also da steht nur } ).
Was soll mir das sagen?

Ich hoffe Ihr habt ne Idee!

View full thread ?Ableitung einer Funktion ermitteln?