DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Sums, Products: Einfügen weiterer Underscripts

Hallo,

was k"onnte wohl die build-in Funktion InterpolatingPolynomial[]
machen ? Wenn Sie f"ur n Punkte ein Polynom n-1 Grades erzeugt (??)
Kaffee kochen ? Probieren wir es doch mal aus

ip = InterpolatingPolynomial[{{x0, f0}, {x1, f1}, {x2, f2}}, x];

mypoly[lst : {{_, _} ..}, t_] :=
  Block[{n = Length[lst]},
    Sum[
      lst[[i, 2]]*
        Product[If[k == i, 
            1, (x - lst[[k, 1]])/(lst[[k, 1]] - lst[[i, 1]])], {k, 1,
n}], {i,
         1, n}]
    ]


und

ip - mypoly[{{x0, f0}, {x1, f1}, {x2, f2}}, x] // FullSimplify

ergibt 0. Weil InterpolatingPolynomial[] gar nichts anderes als eine
Lagrange Interpolation machen *kann* denn das Polynom ist eindeutig 
bestimmt.

Nat"urlich ist die Formel oben, die der Deinen entspricht 
nicht die g"unstigste um ein Lagrange-Interpolationspolynom 
zu erhalten. Sondern man berechnet das mit einem Neville
Algorithmus der z. B. im Stoer und  den Numerical Recipes
oder im Stegun als Aitken Iteration (25.2.23) drin steht.
Dann tritt das Problem gar nicht erst auf -- das sollte man
aber in der Numerik-Ausbildung gelernt haben.

.. und auch die Variante von Thomas Hahn hat eine Komplexit"at
 2^n, w"ahrend ein Neville Algorithmus nur mit n^2 w"achst.
Und 2^n ist so happig, das schon f"ur 10 Punkte diese Version
10 mal l"anger dauert als ein Neville Algorithmus.

Wer also nicht InterpolatingPolynomial[] schreiben kann, sollte
es mit

myPolynomial[lst : {{_, _} ..}, t_] :=
  Module[{x, y, n, Aitken},
    n = Length[lst];
    {x, y} = Transpose[lst];
    Aitken[{i_, j_}] := 
      Aitken[{i, j}] = (y[[j]]*(x[[i]] - t) - y[[i]]*(x[[j]] - t))/
                        (x[[j]] -  x[[i]]);
    Aitken[{other__, i_, j_}] := 
      Aitken[{other, i, j}] = (Aitken[{other, j}]*(x[[i]] - t) - 
Aitken[{other, i}]*(x[[j]] - t))/
                              (x[[j]] - x[[i]]);
    If[EvenQ[n], -1, 1]*Aitken[Table[i, {i, 1, n}]]
    ]

probieren.

Gruss
  Jens


Winfried Bilgic wrote:
> 
> Hallo ihr MailingUser von Dmug,
> 
> möcht mich erstmal kurz vorstellen, bin Student an der Universität Duisburg und befasse mich im Rahmen meiner 
> Diplomarbeit mit FDTD (Finite Differenzen im Zeitbereich). Dabei konzentriere ich mich derzeit auf die linearen 
> Interpolationen von Ableitungoperatoren, genauer um die Lagrange Interpolation. Jene möchte ich in Mathematica 
> einpflegen, weiß allerdings nicht wie ich weitere Underscripts einfügen kann, wie sie die Lagrange Interpolation 
> Formel von mir verlangt.
> 
> Lagrange'sche Interpolationsformel:
> p(x)=Sum (von i=0 über n) fi * Product(von k ungleich i UND k=0 über n) (x-xk) / (xi-xk)
> 
> Bezogen auf die obige Formel besteht mein Problem darin, wie ich die UND Verknüpfung in dem Product hinbekomme. Jede 
> Art von Hilfe ist wünschenswert.
> 
> Mit freundlichen Grüßen aus Duisburg
> 
> Winfried Bilgic
> 
> P.S.: Es ist meine erste Mailingsliste, so möge man mir Amateurverhalten mit einem grinsenden Schmunzeln entschuldigen
> ______________________________________________________________________________
> Ihr FreeMail-Postfach kann von jedem Telekom Festnetzanschluss erreicht
> werden? Mit der Voicebox - http://freemail.web.de/features/?mc=021163


Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html