Ihre Aufgabe ist es, eine mathematische Funktion zu programmieren s
, die eine nicht leere endliche Menge A
von Punkten in der 2D-Ebene verwendet und eine Unrundheitsbewertung ausgibt s(A)
, die die folgenden Eigenschaften erfüllt:
- Positive Bestimmtheit : Wenn es einen Kreis oder eine gerade Linie gibt, die alle Punkte von enthält
A
, danns(A) = 0
. Andernfallss(A) > 0
Surjektivität: Es ist für die nichtnegativen reellen Zahlen surjektiv, dh für jede nichtnegative reelle Zahl
r
gibt es eine endliche TeilmengeA
der Ebene, so dasss(A) = r
.Übersetzungsinvarianz:
s
Ist die Übersetzungsinvarianzs(A) = s(A + v)
für jeden Vektorv
und für alleA
.Maßstabsinvarianz:
s
ist skaleninvarianten, wenns(A) = s(A * t)
für jedent≠0
und für alleA
.Kontinuität.
s
wird als stetig bezeichnet, wenn die Funktionf(p) := s(A ∪ {p})
(Abbildung des a-Punktsp
auf eine reelle Zahl) stetig ist, wobei der Standardabsolutwert für die reellen Zahlen und die euklidische Standardnorm für die Punkte der Ebene verwendet werden.
Intuitiv kann man sich diese Unrundheitsbewertung als etwas vorstellen, das dem Korrelationskoeffizienten in der linearen Regression ähnlich ist.
Einzelheiten
Ihre theoretische Funktion muss im Real funktionieren, aber für diese Aufgabe können Sie Gleitkommazahlen als Ersatz verwenden. Bitte erläutern Sie Ihre Übermittlung und begründen Sie, warum diese fünf Eigenschaften zutreffen. Sie können zwei Listen mit Koordinaten oder eine Liste mit Tupeln oder ähnlichen Formaten als Eingabe verwenden. Sie können davon ausgehen, dass kein Punkt in der Eingabe wiederholt wird, dh alle Punkte sind eindeutig.
s
es nicht eindeutig ist. Das einzige, wofür Sie Beispiele anführen könnten, ists(A) = 0
die Verwendung der ersten Eigenschaft.Antworten:
Python 2 mit Numpy, 116 Bytes
Nimmt x und y als 2D-Spaltenvektoren und gibt ein Array mit der Antwort zurück. Beachten Sie, dass dies ein leeres Array für eine perfekt gerade Linie oder mit 3 oder weniger Punkten ergibt. Ich denke, LSTSQ gibt keine Residuen, wenn es eine perfekte Passform gibt.
Erläuterung
Im Wesentlichen findet dies den Kreis der besten Anpassung und erhält die quadratischen Residuen.
Wir wollen minimieren
(x - x_center)^2 + (y - y_center)^2 - R^2
. Es sieht böse und nicht - lineare, aber wir können umschreiben , dass wiex_center(-2x) + y_center(-2y) + stuff = x^2 + y^2
, wo dasstuff
noch böse und nicht - lineare in Bezug auf istx_center
,y_center
undR
, aber wir haben nicht darüber brauchen zu kümmern. Also können wir einfach lösen[-2x -2y 1][x_center, y_center, stuff]^T = [x^2 + y^2]
.Wir könnten dann R rausholen, wenn wir es wirklich wollten, aber das hilft uns hier nicht viel. Glücklicherweise kann uns die lstsq-Funktion die Residuen geben, was die meisten Bedingungen erfüllt. Das Subtrahieren des Zentrums und das Skalieren durch
(R^2)^2 = R^4 ~ x^4
ergibt eine Translations- und Skaleninvarianz.quelle
f(array([[1.0],[2.0],[3.0],[4.0]]),array([[0.0],[0.0],[0.0],[t]]))
scheint, als ob ich diesarray([ 0.00925926])
für alle ungleich Null gebet
. (Ich weiß, dass Sie sagten, dies bricht für t = 0, aber das Ergebnis sollte sich mindestens 0 für t → 0 nähern.) Nenne ich es falsch?Python, 124 Bytes
Nimmt A als eine Folge von komplexen Zahlen (
x + 1j*y
) und summiert Im ( r ) 2 /2 | r | für alle komplexen Quer Verhältnisse r von vier Punkten in A .Eigenschaften
Positive Bestimmtheit. Alle Terme sind nichtnegativ und genau dann Null, wenn alle Kreuzverhältnisse real sind. Dies geschieht, wenn die Punkte kollinear oder konzyklisch sind.
Surjektivität. Da die Summe durch Addition vieler Punkte beliebig groß gemacht werden kann, folgt die Surjektivität aus der Kontinuität.
Übersetzungsinvarianz. Das Kreuzverhältnis ist translationsinvariant.
Skaleninvarianz. Das Kreuzverhältnis ist skalierungsinvariant. (Tatsächlich ist es bei allen Möbius-Transformationen unveränderlich.)
Kontinuität. Das Quer Verhältnis ist eine kontinuierliche Karte zur erweiterten komplexen Ebene, und r ↦ Im ( r ) 2 /2 | r | (mit ∞ ↦ 0) ist eine kontinuierliche Karte von der erweiterten komplexen Ebene zu den Realwerten.
(Hinweis: Eine theoretisch schönere Karte mit denselben Eigenschaften ist r r (Im ( r ) / ( C + | r | 2 )) 2 , deren Konturlinien in allen vier Punkten des Kreuzungsverhältnisses kreisförmig sind. Wenn Sie dies tatsächlich benötigen ein Unrundheitsmaß, das wollen Sie wahrscheinlich.)
quelle