Polynominterpolation

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Coffee

Betreff: Polynominterpolation

BeitragSo, Aug 10, 2008 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
*off* Mein erster CodeArchiv-Eintrag Smile *off*
Immer mal wieder nützlich, hier eine Funktion zur Polynominterpolation die nicht auf das R^2 oder R^3 beschränkt ist...

Code: [AUSKLAPPEN]

Const max = 15
Local x#[max]
Local y#[max]

Function interpolate#(x#[max], y#[max], n,ges_x#)
fx# = 0.0 : l# = 1.0
For i = 0 To n Step 1
   l = 1.0
   For j = 0 To n Step 1
      If j <> i Then
         l = l * ((ges_x - x[j])/(x[i]-x[j]))
      EndIf
   Next
   fx# = fx# + (l#*y[i])
Next
Return fx#
End Function


So funktioniert der Aufruf:
Code: [AUSKLAPPEN]

Const max = 15
Local x#[max]
Local y#[max]


n = Input("Grad des Polynoms: ")
For i = 0 To n
x[i] = Input("x"+Str(i)+": ")
y[i] = Input("y"+Str(i)+": ")
Next

ges_x# = Input("Gesucht / x:")

test# = interpolate#(x,y,n,ges_x)
Print test#




Function interpolate#(x#[max], y#[max], n,ges_x#)
fx# = 0.0 : l# = 1.0
For i = 0 To n Step 1
   l = 1.0
   For j = 0 To n Step 1
      If j <> i Then
         l = l * ((ges_x - x[j])/(x[i]-x[j]))
      EndIf
   Next
   fx# = fx# + (l#*y[i])
Next
Return fx#
End Function


MfG
Coffee

btw. das MAX dient nur Initialisierung und weil ja die übergebenen Arrays und die von der Funktion erwarteten Arrays gleich groß sein müssen... das Programm kommt auch > 15 klar...
  • Zuletzt bearbeitet von Coffee am Mi, Aug 13, 2008 0:42, insgesamt einmal bearbeitet

Triton

BeitragDi, Aug 12, 2008 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine etwas bessere aufarbeitung wäre wohl schöner gewesen. Viel nützlicher für die meisten Coder ist außerdem eine direkte grafische Ausgabe oder auch eine Wertetabelle.

Zumindest aber wäre es besser gewesen, wenn alle Werte für die verschiedenen x aus- und zurückgegeben würden.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Nova

BeitragDi, Sep 16, 2008 0:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was macht der Code nun? Eine Erklärung für Anfänger wäre nicht schlecht! Smile
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit
 

Coffee

BeitragDi, Sep 16, 2008 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, das Beispiel ist wenig hilfreich. Die Funktion dient dazu, eine Funktion zu interpolieren. Bzw eigentlich ermittelt sie einen Punkt auf einer Funktion, und zwar auf einer Funktion, auf der die übergebenen Punkte liegen. ges_x# ist die Stelle (Die x-Koordinate des gesuchten Punktes), zu dem der y-Wert zurückgegeben wird.

MfG
*Mjam*

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group