hallo ihr perler,
ich bin gerade dabei ein programm in perl zu programmieren, dass eine gegebene Funktion numerisch integrieren kann.
dabei muss das intervall (a,b) in N Teile zerlegt werden.
da ich blutiger anfänger bin, bin ich noch ganz am anfag und hoffe, dass ihr mir dabei weiter helfen könnt.
danke im vorraus für eure bemühungen
gruss
User since
2003-08-04
7321
Artikel
ModeratorIn
viel spass.
wie weit bist du denn schon ?
User since
2005-12-22
2
Artikel
BenutzerIn
ehrlich gesagt hab ich noch nicht angefagen mit dem programmieren.
ich habe vorhin erstmal die mathematischen überlegungen gemacht, und habe jetzt keine ahnung wie ich anfangen soll.
wär ich nett, wenn ihr mir helfen könntet!
User since
2004-02-19
1750
Artikel
BenutzerIn
wenn du noch gar nichts gemacht hast, dann zieh dir erst mal das tutorial von oreilly rein, danach solltest du schon eine ganz gute vorstellung davon haben, was du machen willst. =>
http://www.oreilly.de/catalog/einperl3ger/chapter/d_vorwort.html
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
User since
2003-08-14
2022
Artikel
BenutzerIn
Anregung:
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;
package Range;
sub new {
my $class = shift;
my $lower = shift;
my $upper = shift;
my $delta = shift || 0.00001;
my $self = {
lower => $lower,
upper => $upper,
delta => $delta,
current => $lower,
};
return bless $self, $class;
}
sub next {
my $self = shift;
if ($self->{current} + $self->{delta} < $self->{upper}) {
$self->{current} += $self->{delta};
return 1;
} else {
return undef;
}
}
package main;
sub integrate {
my $function = shift;
my $iter = shift;
my $sum;
do {
$sum += $function->($iter->{current}) * $iter->{delta};
} while ($iter->next());
return $sum;
}
print integrate(sub {(shift)**2}, new Range (2, 5)), "\n";
EDIT: Mit etwas Objektorientierung wird es einfach schöner.
EDIT2: Struktur etwas geändert.\n\n
<!--EDIT|Ronnie|1135278703-->