Formel zu Graph
-
Hallo
ich habe eine Punktmenge (x,y; ganzzahlig) für einen Bereich 0 bis n.
Gibt es irgendein Programm, welches in der Lage ist, eine Funktion f(x) zu erzeugen, welche mit identische Werte für meine x-Werte liefert?
-
Wirklich identisch? Oft sind die Größen fehlerbehaftet.
Allerdings muss man zuerst immer ein Modell annehmen. Willst du ein Polynom durch deine Punkte legen? Welchen Grades? E-Funktion? ...
Als nächstes kann man dann eine Regressionsrechnung durchführen. Gnuplot kann eine Funktion die von Parametern abhängt numerisch an Messwerte fitten. Wenn du ein Polynom n-tes Grades durch n+1 Messwerte legen willst, kannst du einfach ein lineares Gleichungssystem aufstellen, das mit MuPad, Derive, Matlab, Octave, Maxima und Konsorten leicht lösbar ist (die beiden letzteren sind gratis, genau wie Gnuplot).
Als Alternative kann man aber auch natürliche Splines verwenden. Da werden Polynome 3. Grades so aneinandergeheftet, dass sie an den Punkten selbst differenzierbar sind und "natürlich" aussehen. Da hättest du dann aber eine zusammengesetzte Funktion, die aus so vielen Polynomen 3. Grades besteht, wie du Messwerte hast.
Wenn du konkreter wirst (wieviele Punkte, wo kommen diese her, was willst du mit der Funktion anstellen) kann man dir besser helfen.
-
Konkret:
Ich habe 10 y-Werte zwischen 0 und 256 im Bereich 0 bis 10.
D.h. z.B.
0: 100
1: 1
2: 233
...
8: 42
9: 56Ich will jetzt nur _irgendeine_ Funktion, welche mir für die 10 Werte (wirklich nur die) die passenden Y-Werte liefert. Die Y-Werte für alle Stellen unter 0 und über 9 sind mir egal...
-
Wenn dir die Werte zwischen zb 4 und 5 auch egal sind, bietet sich ein Polynom 9ten Grades an. Gnuplot dürfte da keine Probleme machen.
Schreib die Werte spaltenweise in eine Datei "data" und gib in Gnuplot diese Befehle ein:
f(x) = a+b*x+c*x**2+d*x**3+e*x**4+f*x**5+g*x**6+h*x**7+i*x**8+j*x**9
fit f(x) "data" via a,b,c,d,e,f,g,h,i,j
plot f(x)Allgemein hast du 10 lineare Gleichungen der Form f(x_i) = y_i mit i=0,...,9.
Das gibt ein inhomogenes, lineares 10-10 Gleichungssystem und lässt sich bspw mit dem Gaußalgorithmus lösen (Octave kann das gut).
-
Fobb schrieb:
Ich will jetzt nur _irgendeine_ Funktion, welche mir für die 10 Werte (wirklich nur die) die passenden Y-Werte liefert. Die Y-Werte für alle Stellen unter 0 und über 9 sind mir egal...
so ein schwachsinn.
das erfüllt auch
f(x) = y_i falls x = x_i 0 sonst
du musst schon irgendwelche a priori annahmen reinstecken, wie stetigkeit, differenzierbarkeit von f usw. sonst ist deine fragestellung nicht sinnvoll.
-
Hi !
Ich will jetzt nur _irgendeine_ Funktion, welche mir für die 10 Werte (wirklich nur die) die passenden Y-Werte liefert. Die Y-Werte für alle Stellen unter 0 und über 9 sind mir egal...
#include <stdio.h> int _irgendeine_Funktion( int x ) { int y[10]; y[0] = 100; y[1] = 1; y[2] = 233; // ... y[8] = 42; y[9] = 56; return y[x]; } int main() { printf( "%d\n", _irgendeine_Funktion( 2 ) ); return 0; }
-
proggingmania schrieb:
int _irgendeine_Funktion( int x ) { int y[10]; y[0] = 100; y[1] = 1; y[2] = 233; // ... y[8] = 42; y[9] = 56; return y[x]; }
int _irgendeine_Funktion (unsigned int x) { static int y[] = {100, 1, 233, ...}; if (x > 9) return INVALID_PARAMETER; return y[x]; }
-
Aaaber wozu static ?