Der Betrag



  • Du könntest die Koordinatenachsen logarithmisch zeichnen. Wenn die "Länge der repräsentierenden Pfeile" (mit dem Lineal gemessen) dann immernoch der Betrag sein soll, bekommst du eine andere Metrik. Die Berechnung läuft dann nicht mehr (nur) nach Pythagoras...

    Oder du rechnest in Zylinderkoordinaten oder Kugelkoordinaten. Die Länge eines vectors ist dann wieder anders zu berechnen, der Abstand zweier Punkte erst recht.



  • SeppJ schrieb:

    Du kannst das gerne anders formulieren, aber das ist alles äquivalent und du gewinnst durch Trickserei auch keine Vorteile beim Rechnen.

    Du meinst das also alles auf den Satzes von Pythagoras zurückführt?



  • 82kolu schrieb:

    Weil ich herausfinden soll wie es noch geht.

    Na Wahnsinnsaussage! Warum willst du herausfinden, wie es noch geht?


  • Mod

    82kolu schrieb:

    Du meinst das also alles auf den Satzes von Pythagoras zurückführt?

    Wenn du den Betrag in euklidischer Geometrie berechnen willst, dann: Jain. Das ist alles äquivalent zum Satz des Pythagoras. Du kannst es aber nicht notwendigerweise auf diesen zurückführen, da es durchaus noch allgemeinere Prinzipien gibt, mit denen du den Betrag formulieren könntest und von denen der Satz des Pythagoras dann selber nur ein Spezialfall ist. Aber du kannst zeigen, dass wenn dein Betrag so wie in euklidischer Geometrie üblich gegeben ist, dann gilt der Satz des Pythagoras und umgekehrt.



  • eine probabilistische Methode:

    man erzeugt n Zufallszahlen, gleichverteilt auf einem Intervall, und bildet dieses durch lineare Transformation auf eine Strecke s ab, die den fraglichen Vektor v (genauer: Strecke, die im Koordinatenursprung beginnt) enthält.

    für n -> oo konvergiert der Quotient

    q(n) := (#Punkte, die auf v liegen) / (#alle Punkte)

    gegen |v|/|s|, also

    lim(n->oo) |s|*q(n) = |v|



  • Drehung des Koordinatensystems, so dass der Vektor parallel zu einer Achse liegt, dann die von Null verschiedene Komponente ablesen.



  • !rr!rr_. schrieb:

    eine probabilistische Methode:

    man erzeugt n Zufallszahlen, gleichverteilt auf einem Intervall, und bildet dieses durch lineare Transformation auf eine Strecke s ab, die den fraglichen Vektor v (genauer: Strecke, die im Koordinatenursprung beginnt) enthält.

    für n -> oo konvergiert der Quotient

    q(n) := (#Punkte, die auf v liegen) / (#alle Punkte)

    gegen |v|/|s|, also

    lim(n->oo) |s|*q(n) = |v|

    Nett, aber woher bekommst du s und |s|? Und wenn du s und |s| einmal hast, dann gilt laut deiner Voraussetzung v=Ls für irgendeinen reellen Faktor L, also auch für jede Koordinate v_i = L*s_i. Sobald einmal s_i != 0 ist hast du L = v_i / s_i und damit |v|=L*|s|.



  • Bashar schrieb:

    Nett, aber woher bekommst du s und |s|?

    mit binärer Suche beispielsweise. s solange verlängern, bis man über v hinaus ist, dann wieder um die Hälfte verkürzen usw.

    Alles was man dazu braucht, ist ein Orakel für die Aufgabe "gegeben Strecke v und Punkt p, liegt p auf v?".

    und das dürfte sich mit linearer Programmierung lösen lassen.



  • !rr!rr_. schrieb:

    Bashar schrieb:

    Nett, aber woher bekommst du s und |s|?

    mit binärer Suche beispielsweise. s solange verlängern, bis man über v hinaus ist, dann wieder um die Hälfte verkürzen usw.

    Da setzt du Kenntnis eines initialen s voraus. Woher hast du das und dessen Länge?

    Alles was man dazu braucht, ist ein Orakel für die Aufgabe "gegeben Strecke v und Punkt p, liegt p auf v?".

    und das dürfte sich mit linearer Programmierung lösen lassen.

    Zeigen, bitte.



  • Hallo,

    du kannst den Weg über Vektoren gehen.
    v1 und v2 seien Vektoren, die sich aus den zwei gegebenen Punkten P1 und P2 ergeben. Man berechnet zuerst den Winkel zwischen den Vektoren:
    cosλ = v1v2 / (|v1||v2|)

    Die Länge von c ergibt sich dann wie folgt:
    c²=|v1|² + |v2|² - 2*|v1|*|v2|*cosλ

    Grüße,
    Rew.

    P.S. Warum funktioniert Latex nicht?



  • [Rewind] schrieb:

    Die Länge von c ergibt sich dann wie folgt:
    c²=|v1|² + |v2|² - 2*|v1|*|v2|*cosλ

    Grüße,

    Da geschieht ein interessanter Effekt, wenn λ ein rechter Winkel ist. Dann ist cosλ=0 und es ergibt sich
    c²=|v1|² + |v2|² - 2*|v1|*|v2|*0
    also
    c²=|v1|² + |v2
    Und wir sind wieder daheim beim Pythagoras.



  • volkard schrieb:

    Und wir sind wieder daheim beim Pythagoras.

    Ja und? Dieser spezielle Fall macht die Ansätze nicht gleich.
    Volkard, warum postest du denn nicht den perfekten Ansatz? Ich denke, der Threadautor wäre sehr dankbar.



  • [Rewind] schrieb:

    Volkard, warum postest du denn nicht den perfekten Ansatz?

    Weil SeppJ auf
    http://www.c-plusplus.net/forum/296096-3
    schon alles gesagt hat.


  • Mod

    @Rewind:
    1. Du hast während deiner Rechnung die Längen der Vektoren benutzt. Wie bekommst du diese?
    2. Das ist der Kosinussatz den du benutzt. Dieser kann mit Hilfe von Pythagoras gezeigt werden und umgekehrt.



  • Ich verstehe.



  • SeppJ schrieb:

    2. Das ist der Kosinussatz den du benutzt. Dieser kann mit Hilfe von Pythagoras gezeigt werden und umgekehrt.

    Ergänzend möchte ich hinzufügen: Und beide sind äquivalent zum Parallelenpostulat. Also mit der Euklidischen Geometrie liefert die Aufgabenstellung den Pythagoras mit. Alle Ansätze müssen benutzen, daß es sich um die Euklidische Geometrie handelt. Es dürfte kaum möglich sein, die Satzgruppe des Pythagoras sinnvoll zu umschiffen.

    Aber darum gehts auch nicht. Wenn der Lehrer so eine Aufgabe stellt, muß man eben flexibel sein und Hirnfick produzieren. Also mit einer Formel aus z.B der Vektorrechnung anfangen (Kosinussatz). Dann mal mit dem Sinussatz anfangen. Mit irgendeiner Flächenberechnungsformel (die zum Höhensatz führt, ha, vorbei am Pythagoras). Aber es muß bewußt bleiben, daß es nur eine Übung inm Vortäuschen und Blenden ist.
    Wenns keine Punkte bringt, sondern freiwillige Lernaufgabe war, würde ich sie abbrechen und verwerfen. Sich selber zu blenden bringt ja nichts.



  • Bashar schrieb:

    Da setzt du Kenntnis eines initialen s voraus. Woher hast du das und dessen Länge?

    schätzen ... ? Oder bei 1 anfangen, dann 2, 4, 8, ..., 2^n bis man drüber hinaus ist. dann liegt das Ende zwischen 0.5*2^n und 2^n, also neuer Startpunkt 0.75*2^n und in diesem Intervall weitersuchen.

    Zeigen, bitte.

    eine Strecke ist ein Polyeder (Schnitt von 4 Halbräumen), und "Punkt-in-Polyeder?" ist eine Standardaufgabe der linearen Programmierung.

    mein Vorschlag war ja eher als Parodie gemeint. Sollte ich dabei versehentlich was wichtiges entdeckt haben, werden Preise und Auszeichnungen jederzeit gerne entgegengenommen :xmas2:



  • !rr!rr_. schrieb:

    Bashar schrieb:

    Da setzt du Kenntnis eines initialen s voraus. Woher hast du das und dessen Länge?

    schätzen ... ?

    Wie schätzt man denn einen Vektor?

    Oder bei 1 anfangen, dann 2, 4, 8, ..., 2^n bis man drüber hinaus ist.

    Vektor! Das Grundproblem das du mit deiner Idee hast ist: Du hast einen Vektor v mit unbekannter Länge, und willst einen dazu parallelen Vektor s erzeugen, dessen Länge bekannt ist. Wenn das ginge, wäre die Aufgabe trivial (jedenfalls ohne Satz des Pythagoras) gelöst, weil du dann das Längenverhältnis von s und v an einer einzigen nicht verschwindenden Komponente bestimmen kannst. Du hast aber überhaupt keinen Ansatz, um diesen parallelen Vektor mitsamt seiner Länge zu bekommen. Du kannst v selbst oder skaliert nehmen, dann weisst du die Länge nicht. Du kannst v normieren, dazu brauchst du die Länge. (Jetzt hab ich im Prinzip nochmal wiederholt, was ich vorhin schon geschrieben habe.)

    Zeigen, bitte.

    eine Strecke ist ein Polyeder (Schnitt von 4 Halbräumen), und "Punkt-in-Polyeder?" ist eine Standardaufgabe der linearen Programmierung.

    Ach so, das hörte sich im Zusammenhang so an, als würdest du damit das s finden wollen.

    mein Vorschlag war ja eher als Parodie gemeint.

    Naja, es wäre schon gut, wenn sie auch funktionieren würde :p



  • sie funktioniert ja. Effizienz war nicht gefragt.

    übrigens ist es kein Kunststück, einen bekannten Vektor (Repräsentant von 0 nach p) unbekannter Länge in einen bekannten Vektor mit bekannter Länge (Repräsentang von 0 nach q) einzufassen - man beginnt mit q := p und erweitert/verkleinert q mit binärer Suche in logarithmisch vielen Orakelanfragen.



  • !rr!rr_. schrieb:

    sie funktioniert ja.

    Das hast du bisher nicht gezeigt. Da du meinen gezielten Nachfragen jedesmal ausweichst, bezweifle ich das inzwischen.

    Effizienz war nicht gefragt.

    Du versuchst abzulenken. Effizient war tatsächlich nicht gefragt, also fang doch damit jetzt nicht an.

    übrigens ist es kein Kunststück, einen bekannten Vektor (Repräsentant von 0 nach p) unbekannter Länge in einen bekannten Vektor mit bekannter Länge (Repräsentang von 0 nach q) einzufassen - man beginnt mit q := p und erweitert/verkleinert q mit binärer Suche in logarithmisch vielen Orakelanfragen.

    Versteh ich nicht. Wenn du q := p setzt hat q keine bekannte Länge und bekommt auch keine bekannte Länge, wenn du es skalierst. Könnte sein, dass du dich verschrieben hast und eigentlich p := q meinst. Dann wäre das das Verfahren, was du weiter oben schon beschrieben hast. Die Frage ist dann nach wie vor, woher du q (oben hieß es noch s) nehmen willst.

    Versuch mal, mich zu überraschen, indem du die offenen Punkte nicht weiterhin ignorierst :xmas2:


Anmelden zum Antworten