Eine Zeile wird angegeben und eine Reihe von Punkten wird angegeben. Ich muss einen Punkt auf der Linie finden, für den die Summe der Abstände von den gegebenen Punkten minimal ist. Ich konnte keinen Algorithmus in c zu implementieren finden. Bitte helfen Sie, danke im Voraus.Wie finde ich einen optimalen Standort auf einer Linie?
Antwort
Ohne Einschränkung der Allgemeinheit ist die Linie die X-Achse (andernfalls die gesamte Geometrie drehen). Dann sind Sie
Sum √[(X - Xk)² + Yk²]
minimieren möchten, welche Sie durch Aufheben der ersten Ableitung
tun könnenSum (X - Xk)/√[(X - Xk)² + Yk²] = 0
Leider ist dies eine nicht-lineare Gleichung, die numerische Methoden erfordern.
Als Ausgang Näherung Sie die Minimierer der Summe der Quadrate der Abstände verwenden können,
Sum [(X - Xk)² + Yk²]
durch Lösen
Sum (X - Xk) = 0
, die einfach den Punkt (X*, 0)
gibt, wo die durchschnittlichen Abszisse .
Solange keiner der angegebenen Punkte auf der Linie ist, scheint die Verwendung von Newton-Raphson gut zu funktionieren. Wenn jedoch einige der Punkte auf der Linie sind, dann ist das Ziel nicht differenzierbar (an diesen Punkten) und die Dinge sind nicht so nett. – dmuir
- 1. Wie finde ich die Reflexion einer Linie über eine Linie?
- 2. Redis Wie finde ich den optimalen Wert für IOCP?
- 3. Wie finde ich den Standort des Benutzers?
- 4. Wie finde ich Objekte nach geografischem Standort?
- 5. Wie finde ich einen optimalen Betriebsmodus mit Matlab und Matlab Optimization Toolbox?
- 6. Beschleunigung einer optimalen Pfadfunktion
- 7. Wie finde ich automatisch den Standort eines Nutzers?
- 8. Einen Punkt auf einer Linie finden
- 9. Wie finde ich einen Musterhintergrund?
- 10. Wie finde ich den Standort des Benutzers in swift?
- 11. Wie hole ich einen Punkt von einer Linie ab?
- 12. Finde den optimalen Vektor, der die Funktion minimiert
- 13. Wie zeichne ich einen Teil einer Linie in SVG?
- 14. Regex Wie finde ich zwei oder mehr identische Linien mit einer Linie zwischen in einer Datei
- 15. Teer auf einer Linie?
- 16. Wie finde ich eine Schildkröte, die einen bestimmten Punkt oder eine Linie überschreitet?
- 17. Wie Bilder auf einer langen Linie bleiben?
- 18. Wie finde ich einen allgemeinen Typ einer Haskell-Definition?
- 19. tsql Wie finde ich einen Nachnamen in einer Textzeichenfolge?
- 20. Wie finde ich einen HTML-Code?
- 21. Wie finde ich einen verschobenen Arbeitsbereich?
- 22. Wie finde ich die Genauigkeit einer Tracing-Aufgabe?
- 23. Wie finde ich heraus, welches Skript auf einer Website funktioniert?
- 24. Wie finde ich einen deaktivierten Index auf SQL Server 2008
- 25. Wo finde ich einen Filecontroller innerhalb einer Federanwendung?
- 26. Wie finde ich einen Breakpoint in C#?
- 27. Wie finde ich einen R-Fehler?
- 28. Erstellen einer optimalen Graphenbeziehung in PostgreSQL
- 29. Wie bekomme ich einen globalen Standort von MouseDown?
- 30. einen Header mit einer vertikalen Linie definiert
Es ist ein klassisches * Minimierungsproblem *. Sie sollten darüber erfahren. –
Beginnen Sie mit dem Finden des Rechtecks, das alle Punkte einschließt. Damit erhalten Sie einen ungefähren Suchbereich für X und Y. – user3386109
@ user3386109 Dieses Rechteck enthält nicht unbedingt einen Teil der Linie. –