Tugas Anda adalah memprogram fungsi matematika s
, yang mengambil set A
poin hingga tidak terbatas pada bidang 2D, dan menghasilkan skor tidak lingkaran s(A)
yang memenuhi properti berikut:
- Positive Definiteness : Jika ada lingkaran atau garis lurus yang berisi semua titik
A
, makas(A) = 0
. Jika tidaks(A) > 0
Surjektivitas: Ini adalah perkiraan untuk bilangan real non-negatif, yang berarti untuk setiap bilangan real non-negatif
r
ada subset terbatasA
dari pesawat sedemikian rupa sehinggas(A) = r
.Penerjemahan Invarian:
s
adalah terjemahan invarian jikas(A) = s(A + v)
untuk setiap vektorv
dan untuk semuaA
.Scale Invariance:
s
adalah skala invarian, jikas(A) = s(A * t)
untuk setiapt≠0
dan semuaA
.Kontinuitas.
s
dikatakan kontinu jika fungsif(p) := s(A ∪ {p})
(pemetaan titikp
ke bilangan real) kontinu menggunakan nilai absolut standar pada bilangan real, dan norma euclidean standar pada titik-titik pesawat.
Secara intuitif, skor ketidakselarasan ini dapat dianggap sebagai sesuatu yang mirip dengan koefisien korelasi dalam regresi linier.
Detail
Fungsi Anda dalam teori harus bekerja dalam real, tetapi untuk tujuan tantangan ini Anda dapat menggunakan angka floating point sebagai pengganti. Harap berikan penjelasan tentang kiriman Anda dan argumen mengapa kelima properti itu berlaku. Anda dapat mengambil dua daftar koordinat atau daftar tupel atau format serupa sebagai input. Anda dapat mengasumsikan bahwa tidak ada titik di input yang diulang yaitu semua titik adalah unik.
s
tidak unik. Satu-satunya hal yang dapat Anda buat contohnya adalahs(A) = 0
yang sepele untuk dilakukan menggunakan properti pertama.Jawaban:
Python 2 dengan numpy, 116 byte
Mengambil x dan y sebagai vektor kolom 2d dan mengembalikan array yang berisi jawabannya. Perhatikan bahwa ini akan memberikan array kosong untuk garis lurus sempurna atau dengan 3 atau lebih sedikit poin. Saya pikir lstsq tidak memberikan residu jika ada yang cocok.
Penjelasan
Pada dasarnya, ini menemukan lingkaran paling cocok dan mendapatkan residu kuadrat.
Kami ingin meminimalkan
(x - x_center)^2 + (y - y_center)^2 - R^2
. Ini terlihat jahat dan nonlinear, tapi kita dapat menulis ulang bahwa sebagaix_center(-2x) + y_center(-2y) + stuff = x^2 + y^2
, di manastuff
masih jahat dan nonlinear dalam halx_center
,y_center
, danR
, tapi kita tidak perlu peduli tentang hal itu. Jadi kita bisa menyelesaikannya[-2x -2y 1][x_center, y_center, stuff]^T = [x^2 + y^2]
.Kami kemudian dapat mundur R jika kami benar-benar ingin, tetapi itu tidak banyak membantu kami di sini. Untungnya, fungsi lstsq dapat memberi kita residual, yang memenuhi sebagian besar kondisi. Mengurangkan pusat dan penskalaan dengan
(R^2)^2 = R^4 ~ x^4
memberi kami invariansi translasi dan skala.sumber
f(array([[1.0],[2.0],[3.0],[4.0]]),array([[0.0],[0.0],[0.0],[t]]))
tampaknya memberi sayaarray([ 0.00925926])
untuk semua yang bukan nolt
. (Saya tahu Anda mengatakan ini istirahat untuk t = 0, tetapi hasilnya setidaknya harus mendekati 0 untuk t → 0.) Apakah saya salah menyebutnya?Python, 124 byte
Membawa A sebagai urutan bilangan kompleks (
x + 1j*y
), dan merangkum Im ( r ) 2 /2 | r | untuk semua lintas-rasio kompleks r dari empat poin di A .Properti
Kepastian Positif. Semua istilah adalah tidak negatif, dan semuanya nol persis ketika semua rasio silang adalah nyata, yang terjadi ketika titik-titiknya adalah collinear atau concyclic.
Surjektivitas. Karena jumlah dapat dibuat besar secara sewenang-wenang dengan menambahkan banyak poin, surjektivitas akan mengikuti dari kontinuitas.
Penerjemahan Invarian. Rasio silang adalah terjemahan-invarian.
Skala Invarian. Rasio silang adalah skala-invarian. (Faktanya, itu tidak berubah di bawah semua transformasi Mobius.)
Kontinuitas. Salib-rasio adalah peta yang terus-menerus ke pesawat kompleks diperpanjang, dan r ↦ Im ( r ) 2 /2 | r | (dengan ∞ ↦ 0) adalah peta kontinu dari bidang kompleks yang diperluas ke real.
(Catatan: Peta yang secara teoritis lebih cantik dengan properti yang sama adalah r ↦ (Im ( r ) / ( C + | r | 2 )) 2 , yang garis konturnya mencakup keempat titik rasio silang adalah lingkaran. Jika Anda benar-benar perlu ukuran tidak melingkar, Anda mungkin menginginkan itu.)
sumber