Der Betrag
-
!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.
-
@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:
-
lies es doch einfach noch mal durch.
hast du mal einen Kaufmann mit einer Balkenwaage abwiegen gesehen? Man legt rechts erstmal so viele große Gewichte drauf, bis die Waage rechts herunterfällt. Dann nimmt man so viele von den Gewichten weg, bis sie rechts wieder raufschnellt. Jetzt legt man rechts ein halbes Gewicht drauf, und wenn das nicht reicht, noch eins. Die Waage fällt wieder rechts nach unten. Das halbe Gewicht wird wieder runtergenommen, und durch eins oder zwei Viertelgewichte ersetzt. usw. Achtelgewichte ...
damit dürfte nun aber genug Support geleistet worden sein.
-
!rr!rr_. schrieb:
damit dürfte nun aber genug Support geleistet worden sein.
Nein. Binäre Suche kennt Bashar natürlich bestens.
Du hast Lücken so groß wie Scheunentore.
Du antwortest nicht auf seine Fragen.
Und Du weichst aus. Mit unangebrachter Textfülle über Triviales und indem Du deine Lücken als trivial hinstellst und Bashar sei einfach doof, wenn er nachfragt.Daraus schleiße ich:
Du hast einfach unrecht und magst es nicht zugeben.
-
So, und dasselbe jetzt bitte in 2D, sodass Du die Länge des Vektors stets kennst und dazu nicht den Pythagoras bemühen mußt. Wenn man die x oder y-Richtung um 2^-n verlängert, woher weiß man dann die neue Länge des Vektors ohne sowas wie Pythagoras zu verwenden? Klar, 1D ist das kein Problem, aber nicht alles was da funktioniert überträgt sich auch auf 2D...
-
!rr!rr_. schrieb:
lies es doch einfach noch mal durch.
Wozu? Ich frage doch nach den Sachen, zu denen du dich noch nicht geäußert hast.
hast du mal einen Kaufmann mit einer Balkenwaage abwiegen gesehen?[...]
Das z.B. hast du schon ein- oder zweimal geschrieben, das wäre jetzt wirklich nicht mehr notwendig gewesen.
Ansonsten was volkard geschrieben hat.
-
ach.
wie immer gilt: Wahrheit wird nicht demokratisch entschieden ... sorry
-
Das heißt Du ziehst den Einwurf zurück?