Archivlink: javarea.de Forum > JavaScript > JAVA Methode zum setzen aller Objekteigenschaft optmieren
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > JAVA Methode zum setzen aller Objekteigenschaft optmieren
Pages: [1]
| geschrieben von Micha am 16.05.2006 - 10:38 |
Hi,
ich habe ein ganz kleines Programm in JAVA [SUN] geschrieben, das mir 13 Parameter berechnet.
Diese gehören zu einem Objekt Clothoid. Der User kann einen Parameter eingeben und das Tool berechnet die zugehörigen 12 anderen. Problem ist, das man nur aus zwei (drei) Parametern einen direkte Umkehrrechnung machen kann.
Sollte ein anderer Parameter gegeben sein, so löse ich das iterativ, wobei ich einen der drei direkten Parameter bestimme und dann eine normale Rechnung starte.
Das funktioniert auch alles, sieht aber augescheinlich recht Quci&Dirty aus und man kann erkennen, das gewisse regelmäßigkeiten auftauchen.
Der User gibt einen der Paramert ein, die nur iterativ zu einer Lösung kommen, dann rechne ich so:
| HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
| public void getParametersFromSigma(double value){
int loop = 0;
while (Math.abs(this.end_index - this.start_index)>this.tol && ++loop < stop_loop && this.end_index > this.start_index){
this.getParametersFromL( 0.5*(this.start_index + this.end_index) );
if (this.sigma > value){
this.end_index = 0.5*(this.start_index + this.end_index);
}
else if(this.sigma < value){
this.start_index = 0.5*(this.start_index + this.end_index);
}
else {
break;
}
}
} |
Der User hat hier SIGMA eingegeben. Der Parameter L ist _immer_ der Parameter, auf den ich meine ganze Rechnung zurückführe. Mit L kann man also SIGAM berechnen aber nicht umgedreht. Ich habe eine ober und eine untere Grenze für L, die ich solange verschiebe, bis für mein L ein SIGMA kommt, das nahe an dem liegt, was der User eingegeben hat = Lösung.
Diese oben gezeigte Methode habe ich nun noch 9mal in meinem Dokument kopiert. Sie sieht für alle "indirekten" Parameter gleich aus zB für X:
| HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
| public void getParametersFromX(double value){
int loop = 0;
while (Math.abs(this.end_index - this.start_index)>this.tol && ++loop < stop_loop && this.end_index > this.start_index){
this.getParametersFromL( 0.5*(this.start_index + this.end_index) );
if (this.x > value){
this.end_index = 0.5*(this.start_index + this.end_index);
}
else if(this.x < value){
this.start_index = 0.5*(this.start_index + this.end_index);
}
else {
break;
}
}
} |
Das einzige was sich ändert ist die Bedingung bzw. die Objektvariable, die eingehalten werden muss bspw.:
| HTML-Quelltext | 1:
| if (this.x > value){ } else if(this.x < value){ } |
Diese Objektvariable wird in der Methode immer erst durch die Methode: getParametersFromL() erzeugt und ist vorher nicht bekannt.
Ist es irgenwie möglich, statt immer wieder die Methode zu kopieren, eine allg. zu verfassen?
Micha
|
| geschrieben von Micha am 18.05.2006 - 17:51 |
Hallo,
ich habe mir erlaubt, die Frage im SELF-Forum erneut zu stellen und wurde nun bedient:
http://forum.de.selfhtml.org/?t=129....p;m=838074
es scheint, als müsste ich noch viel lernen 
Trotzdem Danke!
Micha |
| geschrieben von zippy am 18.05.2006 - 23:42 |
Naja, zumindest hab ich nachgeschlagen, was ein Clothoid ist.
Vielleicht wertest du das als Zeichen ehrlichen, wenn auch vergeblichen Bemühens... |
| geschrieben von Micha am 19.05.2006 - 08:11 |
Hi Zippy,
ja, auch wenn es in die falsche Richtung gegangen wäre, da ich die Klasse nur so genannt habe. Klothoiden sind Übergangsbögen, die vorranging im Starßenbau eingesetzt werden. Hierbei als Verbindung zwischen einer Geraden und einem Kreisbogen um zu verhindern, das man ruckartig in eine Kurve (Kreisbogen) einlenken muss.
Die Krümmung wird also kontinuierlich (linear) erhöht, bis man den Radius (bzw. die Krümmung) des anschließendes Bogens erreicht hat...
Mein Problem hatte weniger mit der Klothoide zu tun. Es war viel mehr eine Aufgabe der Programmiertechnik - "Wie macht man das?".
Kurzum, ich habe zunächst erstmal eine Lösung und das Wissen, noch nicht viel zu Wissen (in Java) 
Mich würde mal interessieren, wieviele Leute hier JAVA können um abzuschätzen, ob sich das Fragen auf diesem Gebiet hier lohnt?
Liebe Grüße Micha |
| geschrieben von René am 19.05.2006 - 09:27 |
Hallo Micha,
Java kenne ich nur als Kaffeetasse . |
| geschrieben von zippy am 19.05.2006 - 14:19 |
Leider ist mein alter PC so voll, dass sich die Java-Entwicklungsumgebung nicht mehr ausgeht. Dennoch verfolge ich solche Threads und hab zB auch deine Debatte auf self.... gelesen. Man bekommt dadurch ein bisserl intuitiven Zugang zum Thema.
Bei (mehr oder weniger) komplexen Berechnungen erscheint mir die Kenntnis irgendeiner Programmiersprache nur als einer der Aspekte des Programmiererfolges. Bild ich mir das nur ein, oder haben Programme wirklich eine Metastruktur HINTER der Ebene konkreter programmiersprachlicher Umsetzung? |
| geschrieben von Micha am 19.05.2006 - 15:58 |
| Zitat | | | Original geschrieben von René am 19.05.2006 - 09:27
Java kenne ich nur als Kaffeetasse . |
*hehe*
@ Zippy: könntest Du Deine Ausführungen noch einmal anders beschreiben? Ich bin kein Informatiker und konnte Dir nur soweit folgen, das Du den entsprechenen Beitrag im SELF-Forum gelesen hast....
Micha
|
| geschrieben von zippy am 19.05.2006 - 22:32 |
| Zitat | | | @ Zippy: könntest Du Deine Ausführungen noch einmal anders beschreiben? Ich bin kein Informatiker und konnte Dir nur soweit folgen, das Du den entsprechenen Beitrag im SELF-Forum gelesen hast.... |
Bin doch auch kein Infotiker...

Das war auch eher ein strukturell-linguistisches Statement, als ein informatisches:
Wenn du die Lösungsstruktur einer Aufgabe verstanden hast, wirst du sie mehr oder weniger schlecht oder gut in jede Programmiersprache übersetzen können, die du verstehst. Um zB eine statistische Faktorenanalyse zu programmieren, musst du erst mal Statistik können. Dann schaffst du es sowohl in VB, in c++, und wahrscheinlich auch in Java. Bei Klothoiden gilt wahrscheinlich ähnliches.
Die jeweilige Programmiersprache zu verstehen und anwenden zu können, reicht nicht. |
| geschrieben von Micha am 19.05.2006 - 22:43 |
Hi,
...eine zu "können" reicht, um andere leichter zu erlernen. Um ein konkretes mathematisches Problem zu lösen, sind fungierende Kenntnisse auf dem Gebiet immer nötig. Der beste Informatiker(+) wird nichts nutzen, wenn er den Kern nicht versteht; da gebe ich Dir recht.
Hier war es afaik anders. Ich hatte eine Lösung, die mich unzufrieden stimmte und suchte etwas zur Optimierung des Codes. Ich wäre im Leben nie auf einen der gezeigen Wege gekommen, weil ich sie noch nie gehört habe. Einen Informatiker wäre vll im Ansatz schon das folgende Problem aufgefallen?!
Micha
* Informatiker sollen hier auch Menschen sein, die auf dem Gebiet sich ausreichend belesen haben und stellt keine Berufsgruppe dar! |
|