Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
08.08.2001, 03:27
Retro



Topic is bestimmt etwas verwirrend, aber es ist eher ein generelles Problem, was aber in einem Programm umgesetzt werden soll (Delphi [aber es geht mir um den Rechenweg]).

Ich habe eine Kurve die nicht liniear is, so schaut die (z.B.) aus:

Ich möchte nun das man im Programm einen Zahlenwert für [V] angibt, und dass das Programm den Wert für [W] ausspuckt...

Die ganze Kurve hab ich auf nem Stück Papier, will aber wie gesagt nen Programm drauß machen was mir nen Wert rausgibt.

In der Schule haben wir sowas noch in keinster Weise gehabt, also so ziemlich 0 vorahnung, obwohl ich Logisch denken kann, ist mir keine Lösung eingefallen.
Tja, ich hoffe jemand kann mir weiterhelfen, wahrscheinlich is die Lösung eh beschähment einfach! ;D

Naja, Thx schonmal vorweg... hehe

P.S.: Auf dem Blatt Papier sieht die Kurve 'ganz' ander aus, und ich habe auch Zahleneinteilungen... hehe klar, oder? =)

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
001
08.08.2001, 10:50
Braindead



1. y = x*x <- die einfachste Form
2. y = e hoch x <- geht auch (e = 2,71..)
unsw.

PS mit delphi kenn ich mich nicht aus, sonst würde hier mehr stehen.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
08.08.2001, 11:09
Another1



das kann ja jede mögliche kurve sein =P
du brauchst einfach irgendne gleichung die eben auf diese kurve zutrifft
und wenn du wüsstest wie die grundform der Kurve aussieht, könntest du diese gleichung sogar füllen in dem du 2 punkte der Kurve nimmst und einsetzt

z.B.: P1(1|0.2) und P2(2|0.5)

so nu machst du 2 gleichungen draus ... naja ... keine ahnung ob dir das hilft ... wieso willst du das dingens eigentlich haben?

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
003
08.08.2001, 12:39
DarKnight



Hmm. Ich habe mal ein Programm zu quadratischen gleichungen mit MFC gemacht. Vielleicht kann ich dir ja vom Programmtechnischen her helfen =)

Das Programm gibts unter

http://deltaeagle.krawall.de/parabel.zip

Den genauen Code habe ich leider netmehr weil ich nen crash hatte der mir das meisste an Code was ich davor gemacht hatte entsorgt hat. Allerdings hat Kriz den Code glaube ich noch. Ich werde ihn mal fragen.

--

void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja?


Dieser Beitrag wurde am 08.08.2001 um 12:39 von DarKnight bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
08.08.2001, 15:56
Retro



Hmm, das Programm von Dark is schonmal schön, aber bei meiner Kurve hab ich oben son schönes Beispiel gepostet... die Kurve die ich meine sieht nämlich (in etwa) so aus:

Tja =(, und wenn ich dafür nen Programm schreiben würde könnte ich mir die Arbei erspaaren das jedesmal mit nem Lineal abzumessen, und außerdem wollte ich sowas in der Art schon länger mal proggen, aber ich glaub da hab ich mir was schwirieges ausgesucht...

Ich hoffe es gibt trotzdem ne Lösung, und schonmal Thx für die Antworten.

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
005
08.08.2001, 16:45
Seeker



Du brauchst doch irgendeine Quelle, wo du die Kurve her bekommst! Scannst du die ein? Oder ist die schon eine Bilddatei? Wenn sie nicht linear ist, fallen mir wenig andere Möglichkeiten ein. In diesem Fall kannst du einfach (nein, so einfach ist es garnicht) am untersten Pixel anfangen und hochzählen, bis ein anderer RGB-Wert kommt.

Vielleicht meinst du was ganz anderes, aber ich versteh das nicht so ganz...
Seeker

--

zum Seitenanfang zum Seitenende Profil || Suche
006
08.08.2001, 16:45
Gollum



hm. najo wenn die kurve ungefähr so ausschaut kann man ja keine formel aufstellen :)

aber die kurve wird sich doch wahrscheinlich eh nach einer formel ergeben... dann brauchst du ja eigentlich nur w = formel(v) berechnen, und den jeweiligen wert dann ausgeben...

oder gehts um was anderes? :)

--

[url="http://www.thelordoftherings.com/cgi-bin/get-image.pl?ID=alan-lee-058 "]-N/A-[/url]
[url="http://www.microsoft.com/germany/ms/unternehmensinformationen/historie.htm "]Mean cats eat parakeets![/url]

zum Seitenanfang zum Seitenende Profil || Suche
007
08.08.2001, 17:03
Retro



lol nee, geht schon darum! :)

Ich such jetzt nochmal nach der Formel aus der sich die Kurve ergibt, aber ich glaube da hab ich wenig Erfolg! =\

Ansonsten hab ich nur das Bild als Grundlage...

Ich hab mir auch schon überlegt das ich die Kurve einscanne und ganz fein mit 1px schwarz/weiß nachzeichne. Und darauß nen Programm mache... aber die feine art ist das ja nicht... ;)

Na gut, ich werd nochmal nach ner Formel dafür suchen...

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
008
08.08.2001, 18:59
Kriz



In der Mathema-Shit spricht man von solchen Fällen von Approximation und Interpolation. Aus einer Kurve heraus wird zurück auf eine Formel geschlossen. Leider ist das Thema echt zum DAU's treten, will heißen, es füllt ganze Bücher. Einen Algorithmus dazu habe auch ich nie zu Gesicht bekommen.

Wer Lust hat, kann ja mal seinen Matheverbrecher fragen, ob er ihm im Crashkurs Approximation und Interpolation (samt Vorwissen) beibringt (Falls der gute Mann/die gute Frau in seinem/ihrem L2/L3-Studium sowas überhaupt gelehrt bekommen hat).

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
009
08.08.2001, 19:23
Retro



Hmm, wenn ich meinen Mathelehrer das Frage hält er mich für irre, weil er die Wörter garnicht kennt! =\ (ich kannte sie auch noch nicht... aber thx)

Jo, auf die weise ist man getraft wenn man 'nur' zur Realschule geht...

Ich glaub zwar kaum das ich mein Problem dann so einfach gelöst bekomme, aber ich werd mich in der Uni-Bücherei mal nach nem Buch darüber umgucken. Für mehr durchblick sorgts auf jeden fall! Thx!

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
010
08.08.2001, 20:35
TheTinySteini



Erm... und da sind keine Werte angegeben? Denn wenn da Werte angegeben wären, dann könnte man wenigstens versuchen, mit den üblichen Funktionen ax^4 + bx^3 + cx^2 + dx + e und ähnlichen dranzukommen. Wo haste denn das her, was bezeichnet denn die Kurve?
Wenn sich die natürlich nicht mit ner Potenzfunktion beschreiben lässt, dann wird's echt kompliziert. Schon bei Potenzfunktionen is das was für die Oberstufe (die einfacheren Sachen davon haben wir in der 11. gemacht), aber wenn das komplett aussem Rahmen fällt -> Mathestudium *g*

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
011
08.08.2001, 20:58
Prefect



Genau so wie TTT das nun angibt, würde ich das auch machen. Du mußt dir praktisch ein Gleichungssystem aufstellen, mit dem du eine Gleichung n-ten Grades aus n+1 Punkten der Kurve erstellen kannst.

Dann erhöhst du n (also praktisch die Anzahl der Samples von der Originalkurve) solange, bis sie einigermaßen der auf dem Papier ähnelt.

Du kannst das Ergebnis sicherlich optimieren, indem du die Sample geschickt wählst, d.h. die wichtigen Punkte sollten irgendwie nahe Extrema und Wendepunkten oder so auftreten.

Das ist allerdings jetzt nur so daher geraten, ich hab sowas auch noch nie gemacht.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
012
08.08.2001, 21:41
Retro



Hmm, ich noch weniger! Aber ich hab verstanden worums geht!

Nu werde ich mal markante Punkte raussuchen - die Sache ist nämlich auch das die Original-Kurve auf nem DIN-A2 Blatt ist... und erm, mein Scanner ist nur DIN-A4 ;)

Naja, und ich glaube das mit dem Mathestudium... hehe kein Kommentar! :D,
Wie gesagt, ich such mal die Punkte - und versuche damit anzustellen was TTT gesagt hat! Thx

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
013
08.08.2001, 22:02
TheTinySteini



Jo, du brauchst vor allem die Koordinaten solcher Punkte wie die vom Wendepunkt, den man dort sieht (dort, wo die Rechtskrümmung in eine Linkskrümmung übergeht - ungefähr bei (2;1) ). Naja, eine Koordinate haste ja schon, P(0;0). Mal angenommen, es ist ne Kurve 4.Grades, dann brauchste aber noch 4 weitere Punkte (einschließlich dem Wendepunkt).
Sind da Zahlen am Koordinatensystem? Wenn nich is schlecht...

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
014
08.08.2001, 22:06
Another1



also, is es nur eine kurve oder wird die kurve zur laufzeit erstellt?

naja, auf jeden fall könntest du vorher nen großes lustiges array machen
float points[MAX_X_VALUES]; so nu gehst du einfach die x - länge ab, immer so das du alles points[] mit der entsprechenden Y value "füllst" und dann hast du ne genauere näherung, je mehr MAX_X_VALUES du machst, du kannst dann die fehlenden Y values durch interpolieren rausbekommen ... naja das war jetzt sicher scheisse erklärt aber so würd ichs erstmal machen =P

theoretisch zerlegst du deine kurve in n Lineare Functionen, die sich alle aneinander reihen, je mehr, desto genauer =P

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
015
08.08.2001, 22:11
TheTinySteini



Rah! Wir bereden hier hochmathematisch (erm... naja :| ) wie man die Formel der Kurve rekonstruieren kann und er kommt mit nem plumpen Array an. Sowas gehört erschlagen! Erschlagen gehört sowas! Jahaa!

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
016
08.08.2001, 23:22
Another1



ne, sowas is einfach programmiertechnisch am besten *G*
*nochmalTTTabschleckDamitErMichWiederMag*

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
017
09.08.2001, 17:16
TheTinySteini



Ack! Sag bloß, dass du dann bei deiner Arbeit irgendeine Flugkurve auch mit Arrays berechnest... dann hätte der deutsche Steuerzahler mal wieder viel Geld innen Sand gesetzt. =)

*ZurückschleckDamitAnother1NichtSauerIst*

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
018
09.08.2001, 23:50
static_caster



mal ne neue anregung:
die kurve scheint ja einen sattelpunkt zu haben - d.h, daß erste und zweite ableitung der fkt erstma null sind, die dritte aber != null. (in dem punkt)
das grenzt schonmal ein.
desweiteren geht sie durch den nullpunkt, es gibt also kein linearglied, daß auf der y-achse nach oben verschiebt.
und die fkt hat ne wendestelle, also f''(xw) = 0; f'''(xw) != 0. (wieder im punkt)

jetzt isses noch wichtig zu wissen, was dat ding im unendlichen macht. also, obs da n limes gibt, maxima/minima usw.

und du mußt mal ganz genau die punkte haben, in denen die fkt sowas macht. denn ansonsten wirds ne parametergleichung und das ist noch viel viel viel reudiger, als das, was du jetzt machen willst!

/*edit:
was mir noch einfällt:
du kannst die gesamtfunktion auch noch aus mehreren teilfunktionen zusammensetzen.

mit dem sattelpunkt z.B. ist ne fkt vom typ x^3.
das stück, das dann weiter geht (vom wendepunkt an, falls das einer ist), kann mit etwas fantasie ne exponential / logarithmus-fkt sein.
und du machst das einfach so, daß du x^3 bis zum WP definierst, und ab da die andere fkt laufen läßt.

im code läßt sich das auch realisieren, indem du z.B. 3 funktionen benutzt (wirklich NUR beispiel!!!)

wobei die erste fkt die hauptfunktion ist, die entscheidet, wann die beiden unterfunktionen aufgerufen werden.
(sorry, daß ich jetzt keine delphi-semantik kann, aber ich bin froh, daß ich die wieder vergessen hab:)

double draw_main( double x )
{ // ruft unter-fkt auf
return yWert; //oder sonst was!
}

double draw_xhoch3( double xStart, xEnd )
{ //zeichnet x^3 im intervall von xStart bis xEnd, wobei xStart sicher
//weggelassen werden kann, da es bei ungefähr -unendlich liegen dürfte
return irgendwas;
}

double draw_log( double xStart, xEnd )
{//gleiches, wie oben, nur möglicherweise ohne xEnd
return immernochwas;
}

ich gehe davon aus, daß jede dieser unter-fkt selbstständig graphen zeichnet.
alternativ kannst natürlich auch so machen (ist vielleicht besser - kannst fkt-code möglicherweise inline generieren!), daß die unterfunktionen nur y-werte zu x-werten liefern, welche dann von der hauptfunktion gezeichnet werden. (is echt besser, merk ich grad:)

sooo, und die umschalt-parameter ergeben sich aus den bedingungen, die ich oben schon genannt hab (wendepunkt).
dat pakste in ne if-dings rein, oder besser ne select...case...of (hieß doch so, oder? halt switch()!) in der die unter-fkts dann aufgerufen werden, und DAS ganze wiederum in ne while-schleife.
müßte gehen.

he, wenn du aber nen algorithmus willst, mit dem man das filtern kann, das wird so sau-schwer, daß es für uns nicht-mathematiker eigentlich schier unmöglich ist!
*/

--


Dieser Beitrag wurde am 10.08.2001 um 00:25 von static_caster bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
019
10.08.2001, 13:24
fs



worum gehts hier?

er will einfach Funktionswerte berechnen, dazu muss er den Funktionstherm aufstellen..

Das heisst du willst die allgemeint Formel für diese jene Kurve, so daß du für jedes x, sofern in Definitionsbereich, das zugehörige projizierte f(x) berechnen kannst..

also brauchste schomma f(x)=e^x oder so..

ohne die kannst du nichts machen

generell gilt, bei ganzrationalen Funktionen:

stell fest, was die höchste Potenz ist -> Extrema... , nehmen wir an die höchste Pozent sei n

Stelle die allgemeine Form des Graphen auf :

Beispel 3tten Grades

f(x) = a*x^3 +b*x^2 +c*x +d
f'(x) = 3ax^2 +2bx +c (+f'(d) =0) <- ableitung von kostantin ist null, die haben selten ne steigung..

(davon natürlich auch die ableitungen f' und f''))

Dann suche dir n+1 Informationen über den Graphen, wie z.B.: Nullstellen, Extrema, Wendepunkte, Sattelpunkte, etc, etc (hat die funktion minima oder maxima? nullstellen, wenn ja, wo? lies die informatioen aus)

Mögiche Informationsquellen sind auch einfaches abmessen einer Wertes proportionalverhalten, etc

Das heisst, miss den y-wert für x=2

daraus würdest du dann eine information erhalten -> f(2) = ... <- was du halt misst

Wenn keine Skalierungen vorgegeben sind, musst du erfragen, ob die achsen linear oder logarithmisch sind.. aber ich denke, wenigstens irgendeine beziehung ist angegeben, an der du eine Skalierung der x- bzw y-Achse erkenne kannst..

Danach bilde ein Gleichungssystem

Beispiel: bei einer funktion dritten Grades hiesse die information f(0) = 0 ->

ax^3+bx^2+cx+d = 0

in der art stellst du aus n+1 gleichungen ein Gleichungssystem auf
eliminiere, additionsverfahren, etc (du weisst wie man das macht oder?)

lös es auf, setz ein und du hast den Funktionsterm

Dann kannste deinem Rechensklaven (Pc..) sagen, er soll einfach immer, um für bespielsweise x=5 den zugehörigen y-wert zu errechnen, x=5 in diese Funktion "einsetzen" und berrechnen

Falls dir grundlegende Begriffe der Differentialrechnung femd sind (Ableitung, Extrema.. etc), kann keiner von dir verlangen, sowas zu machen

PS: einscannen wird dir nichts helfen, der computer kann mit einem (für ihn) strukturlosen verlauf von pixel nichts anfangen..., denn er wird weder fähig sein selbstständig eine struktur daraus zu entwickeln noch irgendeine Struktur fortzusetzen

cya

--


Dieser Beitrag wurde am 10.08.2001 um 13:28 von fs bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
020
10.08.2001, 13:33




(none)

--

zum Seitenanfang zum Seitenende Profil || Suche
021
10.08.2001, 13:41
TheTinySteini



Nene, die Art, wie es fs beschrieben hat, is schon die professionellste Variante, mathematisch am besten.
Problem: Das ganze lernt man inner 11. Klasse (zumindest hab ich das da gelernt) und es ist die Frage, ob Retro das mit 16 Jahren und Realschule (wenn ich das richtig gelesen hab) gebacken kriegt. Ich meine, es ist ja auch noch was anderes, ob man im Mathebuch gesagt bekommt, welchen Grades die Funktion ist und man auch die genauen Werte für die Extrema, Nullstellen und Wendepunkte bekommt oder ob man alle diese Angaben selber rausfinden muss (vor allem, welchen Grad die Funktion hat (also x^5 oder x^3 oder etwa x^11?) - man müsste jede einzeln durchrechnen und schauen, ob ein vernünftiges Ergebnis zustande kommt. Viel Spaß!)

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
022
10.08.2001, 13:59
fs



naja

gubmle wir machen hier keinen hausfrauenkurs...

und "dann das ganze möglichst pasend umschreiben" ist kein mathemarischer ausdruck, das ist milchmädchenrechnung...

sag mir doch ma die ungefähre gleichung des Graphen oben.. es geht definitiv net

es könnte aus graphenausschnitt sein, der stark skapiert ist, den weiteren Verlauf kannst du NUR über die allgemeine Formel bestimmen..

und mit den Werten von 20 Punkten kannst du nicht den Wert des 21ten Punktes berechnen, sofern du nicht f(x) aufstellst für alle x element |D

und dass ist einfach deshalb so, weil in der höheren Analysis die Kurven eben nicht mehr ganz so gradlinig verlaufen wie in der 10ten Klasse...

und es ergibt sich eben nicht ein lineares System sobald man 3 Punkte ausrechnet und sie sich anguckt..

Das system oben wird evt 3ten grades sein

eine Funktion ist nicht "einschätzbar" oder "abschätzbar"..

Sie ist akkurat zu definieren.. sofern es auch eine funktion ist (d.h. es gibt für jedes X nur EIN f(x)) kann man das immer machen, nicht so einfach wie ich es oben geschildert habe, aber es geht

c'ya

--


Dieser Beitrag wurde am 10.08.2001 um 14:00 von fs bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
023
10.08.2001, 14:08
Retro



Ja, das mit der Realschule stimmt...

Und wir hatten sowas noch überhaupt nicht!
Dadurch dass ich mir nen paar Bücher besorgt habe versteh ich die Formeln hier schon, aber ich kann sie absolut nicht anwenden...

Nu habe ich damit angefangen die Kurve zu 'digitalisieren' im Klartext heist das dass ich jeden punkt in ne hübsche Datei schreibe, nachdem ich es mit dem Lineal ausgemessen hab (sind nut etwa ~1000 =).

Das ist zwar keine sehr genaue Lösung, aber wahrscheinlich die am besten zu realisierende! Wenn ich die [verfluchte] Formel hätte, aus der such die Kurve ergibt währe das ja garkeine sache, aber bisher habe ich die noch nirgends gefunden! =\

Und die Kurve zurück zu rechnen is nen bissel viel für mich, weil ich auch nicht weis wie ich die Richtigkeit überprüfen könnte, weil ich als Grundlage nur den riesen Fetzen Papier mit der Kurve hab.

Aber danke für die Hilfe!

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
024
10.08.2001, 17:04
TheTinySteini



@fs: Nein, es geht nicht immer, eine Formel zu einer Funktion zu finden. Vielleicht theoretisch, aber zumindest praktisch nicht. Bestes Beispiel: Arbeitslosenzahlen. Finde eine Formel dafür und du wirst Präsident in allen Ländern der Erde.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche