Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by gammatester,
25. Nov 2009
Fast, aber halt nicht ganz: Bei math.poly hat man keine Wahl, was den Grad des Polynoms betrifft. Wenn poly(x) = c + c*x + c*x^2 + ... + c*x^m ist, kann man bei HornerFkt n<=m eingegeben und math.poly rechnet immer mit n=m.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by gammatester,
29. Jun 2009
Genau! Bei der Gelegenheit kann man sich dann auch um zu großes n kümmern. Es gibt zwei Möglichkeiten: Entweder Rangecheck-Fehler oder Abschneiden. Hier mal ein Codeschnipsel, der hoffentlich alle bisherigen Argumente berücksichtigt.
{$define Horner_RTE} {Fehler falls n>high(c), sonst wird n auf high(c) beschränkt}
...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by gammatester,
28. Jun 2009
Auch HornerFkt ist buggy. Wenn n ein integer ist, darf Result := c im Fall n<0 nicht ausgeführt werden, andernfalls gibt 'nen Rangecheckerror oder 'nen Crash. Am einfachsten via if n>=0 then Result := c else Result := 0.0;
Entsprechendes gilt selbstredend auch für HornerAbl.
Gammatester
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by gammatester,
28. Jun 2009
Leider ist HornerAbl völlig falsch für n=0, oder n=1!
n=0: y=c, y'=0, HornerAbl: c!! Das ist noch nicht mal definiert!
n=1: y=c+x*c, y'=c, HornerAbl: c + c*x!
Gammatester