Themenbereiche Themenbereiche Profile Hilfe/Anleitungen Help    
Recent Posts Last 1|3|7 Days Suche Suche Tree Tree View  

Funktion aus n-Punkten?

ZahlReich - Mathematik Hausaufgabenhilfe » Universitäts-Niveau » Mathematik für Informatiker » Funktion aus n-Punkten? « Zurück Vor »

Das Archiv für dieses Kapitel findest Du hier.

Autor Beitrag
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Ueps (Ueps)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Neues Mitglied
Benutzername: Ueps

Nummer des Beitrags: 1
Registriert: 01-2005
Veröffentlicht am Samstag, den 22. Januar, 2005 - 11:19:   Beitrag drucken

Hallo,

ich studiere Wirtschaftsinformatik und bin zwar in Mathe immer sehr gut gewesen, aber im Moment komm ich einfach auf keine Lösung bei meinem Problem.

Für eine Anwendung sollte ich aus beliebig vielen Punkten eine Funktion erzeugen, mit Hilfe dieser Funktion sollen die Punkte im nachhinein wieder genau (exakt) die alten Werte annehmen.

Hab mir hierzu diverse Interpolationsverfahren angeschaut, aber 1. ist das eine Nummer zu hoch für meine alten Mathe-Abi Kenntnisse und 2. wie stelle ich da sicher das ich auch exakt! die gewünschten Punkte wieder erhalte? Bei den Punkten handelt es sich um Ganzzahlige Werte (Integer).

Bsp.

x-Achse:
0,1,2,3,4,5,6,7,8....
y-Achse:
0,8,15,22,0,8,15,3,4.....

Wie kann ich nun eine Funktion f(x) realisieren, die mir z.B. für f(2) = 15 liefert?

Bitte habt verständnis für meine geringes Matheniveau, aber das Gymnasium ist lange her und als WI-ler kämpf ich grad noch mit anderen Problemen bei meinem Projekt.

Gruß,

Tobi
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Friedrichlaher (Friedrichlaher)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Senior Mitglied
Benutzername: Friedrichlaher

Nummer des Beitrags: 2591
Registriert: 02-2002
Veröffentlicht am Samstag, den 22. Januar, 2005 - 11:53:   Beitrag drucken

Hallo, Tobi,
das
ist allerdings wirklich eine sehr "wilde" Funktion.
Meist
handelt es sich, wenn es Aufgaben aus der Praxis
sind ja um, mit Fehlern behaftete, Mess/Erhebungs Werte,
und man sollte wenigstens eine ungefähre Vorstellung
von der Art der Funktion haben, deren Paramter
dann so gewählt werden, daß die Kurve sich
möglichst gut an die Punkte "schmiegt". ("Least Square" Methode )
Eine exakte Übereinstimmung wird kaum erzielbar
sein.
Exakte Übereinstimmung ergibt sich aber
wenn man fü n Punkte ein Polynom (m=n-1)ten Grades ansetzt:
f(x) = am*xm+am-1*xm-1+am-2*xm-2...+a1*x+a0
und dann
das Gleichungssystem
f(0) = y0
f(1) = y1
...
aufstellt ( in obiges Polynom die x Werte 0,1,.. einsetzen ) und ( nach den Unbekanten ai )löst.
Wenn das Erlernen der Mathematik einigermaßen ihre Erfindung wiederspiegeln soll, so muß es einen Platz für Erraten, für plausibles Schließen haben.
[Aus dem Vorwort zu "Mathematik und plausibles Schliessen, Bd. 1 Induktion und Analogie in der Mathematik" von Georg Pólya]
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Orion (Orion)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Senior Mitglied
Benutzername: Orion

Nummer des Beitrags: 966
Registriert: 11-2001
Veröffentlicht am Samstag, den 22. Januar, 2005 - 14:35:   Beitrag drucken

Hallo Tobi,

Das folgende Verfahren geht auf Newton zurück.
Ich zeige es am Beispiel von 4 Punkten:

(0,0) , (1,8) , (2,15), (3,22).

Es gibt genau eine Polynomfunktion 3. Grades,

(1) f(x) = a + bx + cx2 + dx3

deren Graph (eine kubische Parabel) durch diese Punkte verläuft. Statt (1) macht man praktischerweise
den Ansatz

(2) f(x) =

A + B(x-0) + C(x-0)(x-1) +

+D(x-0)(x-1)(x-2)

Damit kann man die Koeffizienten A,B,C,D rekursiv
berechnen (als Informatiker wird Dir das sicher sympatisch sein):

f(0)=0 <=> A = 0

f(1)=8 <=> A+B=8 => B = 8

f(2) = 15 <=> A + 2B + 2C = 15 =>

C = - 1/2

f(3) = 22 <=> A + 3B + 6C + 6D = 22

=> D = 2/3

Also

f(x) = 8x - (1/2)x(x-1) + (2/3)x(x-1)(x-2)

Das kann man nun noch ausmultiplizieren und nach
Potenzen von x ordnen.
Allgemein : sind (x0,y0),...,(xn,yn) die
gegebenen Punkte (wobei yi ‡ yk für
i ‡ k), so macht man den Ansatz

f(x) = A0 + A1(x-x0) + A2(x-x0)(x-x1)

+ ... + An(x-x0)(x-x1)*...*(x-xn-1)

und bestimmt der Reihe nach A0 = y0 ,
A1 = (y1-y0)/(x1-x0), ....
mfG Orion
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Christian_s (Christian_s)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Senior Mitglied
Benutzername: Christian_s

Nummer des Beitrags: 1715
Registriert: 02-2002
Veröffentlicht am Samstag, den 22. Januar, 2005 - 14:56:   Beitrag drucken

Hallo Tobi

Man kann auch das sogenannte Langrange'sche Interpolationspolynom benutzen. Mit den Bezeichnungen von Orion erhält man das Polynom f mit
f(x)=Sn i=1yi*P(x-xj)/(xi-xj), wobei das Produkt über j=1,..,n läuft mit j¹i.
Du kannst sofort nachrechnen, dass dann f(xk)=yk gilt für k=1,..,n.
Für die Praxis ist aber wohl das von Orion angegebene Verfahren von Newton das bessere.

MfG
Christian
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Ueps (Ueps)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Neues Mitglied
Benutzername: Ueps

Nummer des Beitrags: 2
Registriert: 01-2005
Veröffentlicht am Mittwoch, den 02. Februar, 2005 - 15:15:   Beitrag drucken

Danke für eure Antworten.

Ich hab die verschiedenen Versionen mal versucht und dass klappt auch. Was mich jedoch noch interssieren würde:

Für eine Funktion für n-Punkte bräuchte man ja folglich (nach dem Beispiel von Orion) eine Polynomfunktion (n-1)ten Grades, oder?

Angenommen ich hätte 100 Punkte, Ziel meiner Überlegungen war es, eine Funktion zu bekommen, die möglichst "klein" ist und mir zu jedem x Wert den passenden y-Wert der Punkte liefert. Aber so wäre die Funktion genauso lang wie die Anzahl der Punkte.

Vielleicht beschreib ich mein Problem mal noch genauer.

Ich habe 16 verschiedene Zeichen. Die Zeichen können unterschiedlich hintereinander gereit werden und auch beleib oft vorkommen. Sagen wir mal insgesamt sollen 5000 Zeichen aneinander gereiht werden.

Diesen Sachverhalt wollte ich nun mit möglichst geringem Aufwand reproduzieren. D.h. wenn die Positionen der einzelnen Zeichen bekannt sind, will ich die Position des Zeichens in der Kette (y-Wert) und die Nummer des Zeichens (Aktuelle Wiederholung) als Punkt ansehen und aus diesen Punkten quasi pro Zeichen eine Funktion generieren.

Bsp:

ABCDDDDDAAAABBBEDDEADEEFA

Zeichen A hätte also die Punkte:
(1,1) (2,9) (3,10) (4,11) (4,12) (5,20) (6,25)

Also wär die z.B. die Polynomfunktion 6ten Grades geeignet, aber in dem Fall genauso lang oder länger als sich die Punkte einzeln zu "merken".

Hoffe das war jetzt nicht zu konfus?
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Orion (Orion)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Senior Mitglied
Benutzername: Orion

Nummer des Beitrags: 974
Registriert: 11-2001
Veröffentlicht am Mittwoch, den 02. Februar, 2005 - 15:39:   Beitrag drucken

Toby,

Müsste es nicht heissen

(1,1),(2,9),(3,10),(4,11),(5,12),(6,20),(7,25) ?
mfG Orion
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Friedrichlaher (Friedrichlaher)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Senior Mitglied
Benutzername: Friedrichlaher

Nummer des Beitrags: 2618
Registriert: 02-2002
Veröffentlicht am Mittwoch, den 02. Februar, 2005 - 15:46:   Beitrag drucken

auweh, Tobi, als digitales Kompressionsverfahren
ist das natürlich total ungeeignet. Google nach
kompressions.
Wenn das Erlernen der Mathematik einigermaßen ihre Erfindung wiederspiegeln soll, so muß es einen Platz für Erraten, für plausibles Schließen haben.
[Aus dem Vorwort zu "Mathematik und plausibles Schliessen, Bd. 1 Induktion und Analogie in der Mathematik" von Georg Pólya]
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Murray (Murray)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Erfahrenes Mitglied
Benutzername: Murray

Nummer des Beitrags: 243
Registriert: 10-2001
Veröffentlicht am Mittwoch, den 02. Februar, 2005 - 18:09:   Beitrag drucken

Hallo Tobi,

Du kannst Dir mal das LZW-Verfahren anschauen, wenn Du Deine Daten nicht unbedingt in ein Polynom packen mußt.

http://informatik.uibk.ac.at/users/c70301/teaching/ss2003/material/compress/stolz.pdf

Dein Alphabet ist dann nur 16 Zeichen groß, nicht 256 wie in diesem Beispiel und wenn Du nur die Positionen von "A" speichern muß, dann könntest Du Dein Alphabet auf zwei Zeichen kürzen.

Bsp:
ABCDDDDDAAAABBBEDDEADEEFA
1000000011110000000100001

Die letzte Zeile kann man nun noch mittels LZW verkürzen (siehe Doku).

Onkel Murray
Seitenanfangvoriger Beitragnächster BeitragSeitenende Link zu diesem Beitrag

Ueps (Ueps)
Suche alle Beiträge dieser Person in dieser Hauptrubrik
Neues Mitglied
Benutzername: Ueps

Nummer des Beitrags: 3
Registriert: 01-2005
Veröffentlicht am Donnerstag, den 10. Februar, 2005 - 13:45:   Beitrag drucken

Hi,

@Orion: ja da hab ich mich wohl vertippt es müsste
(1,1),(2,9),(3,10),(4,11),(5,12),(6,20),(7,25) heissen!

@Murray: ja das ginge natürlich, wenn es denn nur die Position vom A wäre.

Von LZW hab ich natürlich auch schon mal was gehört, mich aber gefragt ob es nicht auch möglich wäre, aus n-Punkten eine Funktion zu erstellen, die eben in der Summe kleiner an Bytes ist, als die Punkte normal aufzuschreiben. Da ja die 16 verschiedenen Zeichen 0-F in "regelmäßigen" abstanänden auftauchen und sich so eine evtl. vorhandene Struktur mittels einer kürzeren Formel beschreiben lässt.

z.B. man hat eine Datei die nur aus AAAAAAAAAA... besteht. Der Abstand von einem A zum anderen beträgt genau 1. Also wäre die funktion f(a) = a

2. Beispiel:

ABABABABABABABABAB....

f(a) = 2a
f(b) = 2b+1

Die Funktionen wären kürzer wenn die Datei z.B. mehrere MByte groß wäre.

So gesehen hab ich überlegt ob andere Zusammenhänge die nicht so trivial erscheinen, mathematisch erfassbar sind, wenn alle "Punkte" bekannt sind.

War nur mal eine Vermutung, wie es scheint wohl eine falsche.

Gruß,

Tobi

(Beitrag nachträglich am 10., Februar. 2005 von ueps editiert)

(Beitrag nachträglich am 10., Februar. 2005 von ueps editiert)

Beitrag verfassen
Das Senden ist in diesem Themengebiet nicht unterstützt. Kontaktieren Sie den Diskussions-Moderator für weitere Informationen.

ad

Administration Administration Abmelden Abmelden   Previous Page Previous Page Next Page Next Page