Vektor normieren ohne Wurzelziehen?



  • Hi, ich programmier grade was für mein Handy, da muss ich einen gegebenen Vektor auf die Länge 1 bringen, das Problem ist nur, dass ich keine Wurzelfunktion zur Verfügung habe, auch keine Kommazahlen... Muss auch nicht sehr genau sein, ich hab Beträge die bis ca 10000 gehen, da darfs auch ungenauer sein...

    Edit: Ich muss die Komponenten halt durch die Länge des Vektors teilen, und um die länge rauszukriegen brauch ich halt eine Wurzel... Gibts eine andere möglichkeit Ungefähr auf die Länge des Vektors zu kommen?



  • ich dacht handy-programme werden mittels java programmiert. wieso gibts dann da keine wurzel?



  • DEvent schrieb:

    ich dacht handy-programme werden mittels java programmiert. wieso gibts dann da keine wurzel?

    Die werden mittels Java programmiert, aber es gibt verschiedene MIDP Versionen, einige Handy unterstützen halt keine Kommazahlen, da gibts dann auch keine Wurzel. Leider hab ich eines der älteren Handys...



  • Auch wenn das jetzt nicht mehr ins Mathematikforum passt, aber da du in J2ME programmierst und eine Wurzel ziehen möchtest, könnte ich dir diese Seite empfehlen: http://henson.newmail.ru/j2me/Float.htm .



  • TheToast schrieb:

    Die werden mittels Java programmiert...da gibts dann auch keine Wurzel...

    das ist eben Java! 😃 👍



  • freshman schrieb:

    TheToast schrieb:

    Die werden mittels Java programmiert...da gibts dann auch keine Wurzel...

    das ist eben Java! 😃 👍

    Was hat das denn mit Java zu tun?



  • TheToast schrieb:

    Hi, ich programmier grade was für mein Handy, da muss ich einen gegebenen Vektor auf die Länge 1 bringen, das Problem ist nur, dass ich keine Wurzelfunktion zur Verfügung habe, auch keine Kommazahlen... Muss auch nicht sehr genau sein, ich hab Beträge die bis ca 10000 gehen, da darfs auch ungenauer sein...

    Wenn du keine Kommazahlen hast, gibt es nicht allzuviele Möglichkeiten für einen Vektor der Länge 1. Ich würd in dem Fall einfach die Dimension mit dem maximalen Wert bestimmen, den auf 1 und alle anderen auf 0 setzen :p



  • Bashar schrieb:

    TheToast schrieb:

    Hi, ich programmier grade was für mein Handy, da muss ich einen gegebenen Vektor auf die Länge 1 bringen, das Problem ist nur, dass ich keine Wurzelfunktion zur Verfügung habe, auch keine Kommazahlen... Muss auch nicht sehr genau sein, ich hab Beträge die bis ca 10000 gehen, da darfs auch ungenauer sein...

    Wenn du keine Kommazahlen hast, gibt es nicht allzuviele Möglichkeiten für einen Vektor der Länge 1. Ich würd in dem Fall einfach die Dimension mit dem maximalen Wert bestimmen, den auf 1 und alle anderen auf 0 setzen :p

    Naja, an den Fall habe ich grade nicht gedacht, aber ich brauch die Prazision nunmal nicht, da ich die Koordinaten alle mit 100 multiplizieren, nur zu der anzeige teile ich die wieder durch 100. Im Prinzip hab ich damit Zahlen mit 2 Kommastellen, ich will also einen Vektor der Länge 100... Ich hatte halt nur 1 gesagt, aber grade nicht an diesen Fall gedacht 😃



  • Schreib dir doch selber ne Wurzel-Funktion (Newton-Verfahren) für deine Fixkommazahlen. Dann würd ich aber (wenigstens in der Wurzelfkt.) mit mehr als nur 2 Nachkommastellen rechnen. Probier mal aus, wie genau genug ist. Wird höchstens pi-mal-daumen passen...

    Iteration:
    x_0 := a;
    x_(n+1) := 1/2*(x_n + a/x_n);
    Konvergiert gegen sqrt(a).
    

    Edit: Besser beschrieben mit ein paar kleinen Tipps wird das Verfahren unter
    http://de.wikipedia.org/wiki/Newton_Verfahren



  • hmm also lookuptable scheidet beim handy vermutlich aus... fällt mir dann spontan nur approximation der wurzel durch ein polynom ein... weiss gerade nicth auswendig obs da nen guten algo für gibt an sonsten gilt

    ab=e(b*ln(a))... und e^x und ln(x) könntest du in Taylorreihen entwicklen...



  • Windalf schrieb:

    hmm also lookuptable scheidet beim handy vermutlich aus...

    Warum, haben die nur so wenig Speicher? Wo liegen denn dann die ganzen Klingeltöne? 😉 Man kann ja auch ne LUT mit Linearer Interpolation nehmen, also so das Thema ist das eigentlich nicht.



  • Bashar schrieb:

    Windalf schrieb:

    hmm also lookuptable scheidet beim handy vermutlich aus...

    Warum, haben die nur so wenig Speicher? Wo liegen denn dann die ganzen Klingeltöne? 😉 Man kann ja auch ne LUT mit Linearer Interpolation nehmen, also so das Thema ist das eigentlich nicht.

    Naja, die Klingeltöne liegen ja nicht alle im Arbeitsspeicher... Außerdem hab ich ein etws älteres Handy... Wobei ich auch schon an eine Lookuptable gedacht habe, wie gesagt, so genau muss es nicht sein...


Anmelden zum Antworten