ตั้งโปรแกรมคะแนนความไม่แน่นอน


15

งานของคุณคือการเขียนโปรแกรมฟังก์ชั่นทางคณิตศาสตร์sที่ใช้ชุดAจุดที่ไม่มีขอบเขต จำกัดในระนาบ 2D และส่งออกคะแนนไม่เป็นวงกลมs(A)ที่ตรงตามคุณสมบัติต่อไปนี้:

  1. บวกความชัดเจน : ถ้ามีเป็นวงกลมหรือเป็นเส้นตรงที่มีทุกจุดแล้วA s(A) = 0มิฉะนั้นs(A) > 0
  2. Surjectivity:มันเป็น surjective กับตัวเลขจริงไม่เป็นลบหมายความว่าจำนวนจริงทุก nonnegative rมีเซต จำกัดของเครื่องบินดังกล่าวว่าAs(A) = r

  3. แปล Invariance: sคงที่แปลถ้าs(A) = s(A + v)ทุกเวกเตอร์และสำหรับทั้งหมดvA

  4. ชั่ง Invariance: sเป็นขนาดคงที่ถ้าs(A) = s(A * t)ทุกและสำหรับทั้งหมดt≠0A

  5. ความต่อเนื่อง sว่ากันว่าต่อเนื่องถ้าฟังก์ชั่นf(p) := s(A ∪ {p})(การทำแผนที่จุดหนึ่งpไปยังจำนวนจริง) นั้นต่อเนื่องโดยใช้ค่าสัมบูรณ์มาตรฐานกับจำนวนจริงและมาตรฐานปริภูมิแบบยุคลิดบนจุดของระนาบ

การพูดอย่างไร้เหตุผลในระดับคะแนนนี้สามารถคิดได้ว่าเป็นสิ่งที่คล้ายกับค่าสัมประสิทธิ์สหสัมพันธ์ในการถดถอยเชิงเส้น

รายละเอียด

หน้าที่ของคุณในทางทฤษฎีต้องทำงานใน reals แต่เพื่อความท้าทายนี้คุณสามารถใช้ตัวเลขทศนิยมแทน โปรดระบุคำอธิบายของการส่งของคุณและการโต้แย้งว่าทำไมคุณสมบัติทั้งห้านี้ถือ คุณสามารถใช้สองรายการพิกัดหรือรายการของ tuples หรือรูปแบบที่คล้ายกันเป็นอินพุต คุณสามารถสันนิษฐานได้ว่าไม่มีการใส่จุดในอินพุตซ้ำนั่นคือทุกจุดจะไม่ซ้ำกัน


1
คุณช่วยเพิ่มกรณีทดสอบได้ไหม?
Shaggy

มันหมายความว่าอะไรวงกลมที่จะมีทุกจุดของ?
H.PWiz

@ H.PWiz พิจารณาวงกลมเป็นส่วนย่อยของระนาบ 2d จุดจะอยู่ในวงกลมถ้ามันเป็นองค์ประกอบของเซตย่อยนี้
ข้อบกพร่อง

@Shaggy ไม่เป็นไปไม่ได้เนื่องจากsไม่ซ้ำกัน สิ่งเดียวที่คุณสามารถทำเป็นตัวอย่างได้ก็s(A) = 0คือเรื่องเล็กน้อยที่จะใช้คุณสมบัติแรก
ข้อบกพร่อง

ข้อผิดพลาดของโปรแกรมของเราไม่น่าเป็นไปได้ในทางทฤษฎี (ความน่าจะเป็นที่แท้จริงนั้นไม่ใช่ศูนย์เพราะเลขทศนิยมนั้นไม่ต่อเนื่อง) / คุณอนุญาตให้ละเว้นจุดลอยตัวที่ไม่แน่นอนหรือไม่? เมตาดาต้าที่เกี่ยวข้อง
user202729

คำตอบ:


2

Python 2 ที่มีจำนวน 116 ไบต์

from numpy import*
def f(x,y):a=linalg.lstsq(hstack((x,y,ones_like(x))),(x*x+y*y)/2);return a[1]/sum((x-a[0][0])**4)

รับค่า x และ y เป็นเวกเตอร์คอลัมน์ 2d และส่งกลับอาร์เรย์ที่มีคำตอบ โปรดทราบว่าสิ่งนี้จะให้อาร์เรย์ที่ว่างเปล่าสำหรับเส้นตรงที่สมบูรณ์หรือมี 3 จุดหรือน้อยกว่า ฉันคิดว่า lstsq ไม่เหลือสิ่งใดหากมีขนาดที่พอดี

คำอธิบาย

โดยพื้นฐานแล้วสิ่งนี้จะพบว่าวงกลมที่เหมาะสมที่สุดและรับส่วนที่เหลือเป็นรูปสี่เหลี่ยม

(x - x_center)^2 + (y - y_center)^2 - R^2เราต้องการที่จะลด มันดูน่ารังเกียจและไม่เชิงเส้น แต่เราสามารถเขียนว่าx_center(-2x) + y_center(-2y) + stuff = x^2 + y^2ที่stuffยังคงเป็นที่น่ารังเกียจและไม่เชิงเส้นในแง่ของx_center, y_centerและR, แต่เราไม่จำเป็นต้องดูแลเกี่ยวกับเรื่องนี้ ดังนั้นเราสามารถแก้ปัญหา[-2x -2y 1][x_center, y_center, stuff]^T = [x^2 + y^2]ได้

เราสามารถย้อนกลับไปหา R ได้ถ้าเราต้องการจริงๆ แต่นั่นก็ไม่ได้ช่วยอะไรเรามากนัก โชคดีที่ฟังก์ชัน lstsq สามารถให้สิ่งที่เหลือกับเราซึ่งเป็นไปตามเงื่อนไขส่วนใหญ่ การลบจุดศูนย์กลางและการขยายด้วยการ(R^2)^2 = R^4 ~ x^4ให้ค่าคงที่และการแปล

  1. นี่คือค่าบวกแน่นอนเนื่องจากค่าเศษกำลังสองไม่เชิงลบและเราหารด้วยกำลังสอง มันมีแนวโน้มเป็น 0 สำหรับวงกลมและเส้นเนื่องจากเราใส่วงกลมให้พอดี
  2. ฉันค่อนข้างแน่ใจว่ามันไม่ได้ยอดเยี่ยม แต่ฉันไม่สามารถผูกมัดได้ดี หากมีขอบเขตบนเราสามารถแมป [0 ถูกผูกไว้) กับค่าที่ไม่ใช่เชิงลบ (ตัวอย่างเช่นด้วย 1 / (ผูกคำตอบ) - 1 / ผูก) อีกสองสามไบต์
  3. เราลบศูนย์ออกไปดังนั้นมันจึงไม่แปรเปลี่ยนแปล
  4. เราหารด้วย x ** 4 ซึ่งกำจัดการพึ่งพาสเกล
  5. มันประกอบด้วยฟังก์ชั่นต่อเนื่องดังนั้นมันจึงต่อเนื่อง

คุณสามารถอธิบายสิ่งที่คุณส่งมาคำนวณได้จริงหรือไม่?
ข้อบกพร่อง

@flawr แก้ไขแล้วว่าใน

ผมพยายามที่จะทดสอบในวันที่ {(1, 0), (2, 0), (3, 0), (4, t)} สำหรับ t → 0 แต่f(array([[1.0],[2.0],[3.0],[4.0]]),array([[0.0],[0.0],[0.0],[t]]))ดูเหมือนว่าจะให้ฉันสำหรับภัณฑ์ทั้งหมดarray([ 0.00925926]) t(ฉันรู้ว่าคุณพูดว่าตัวแบ่งนี้สำหรับ t = 0 แต่ผลลัพธ์อย่างน้อยควรเข้าใกล้ 0 สำหรับ t → 0. ) ฉันเรียกมันผิดหรือเปล่า
Anders Kaseorg

2

Python ขนาด 124 ไบต์

lambda A:sum(r.imag**2/2**abs(r)for a in A for b in A for c in A for d in A if a!=d!=b!=c for r in[(a-c)*(b-d)/(a-d)/(b-c)])

ใช้เวลาเป็นลำดับของตัวเลขที่ซับซ้อน (ก) และสรุปอิ่ม ( R ) 2 /2 | r | สำหรับทุกความซับซ้อนข้ามอัตราส่วน- rของสี่จุดในx + 1j*y

คุณสมบัติ

  1. ความชัดเจนเชิงบวกคำศัพท์ทั้งหมดนั้นไม่จำเป็นและเป็นศูนย์ทั้งหมดเมื่ออัตราส่วนข้ามทั้งหมดเป็นของจริงซึ่งเกิดขึ้นเมื่อคะแนนเป็นเส้นตรงหรือเส้นตรง

  2. Surjectivity เนื่องจากผลรวมสามารถทำให้มีขนาดใหญ่โดยพลการโดยการเพิ่มหลาย ๆ คะแนนความดุเดือดจะตามมาจากความต่อเนื่อง

  3. ค่าคงที่การแปล ข้ามอัตราส่วนคือการแปลคงที่

  4. สเกลค่าคงที่ ข้ามอัตราส่วนคือขนาดคงที่ (อันที่จริงมันคงที่ภายใต้การแปลงMöbiusทั้งหมด)

  5. ความต่อเนื่อง ข้ามอัตราส่วนแผนที่อย่างต่อเนื่องเพื่อซับซ้อนเครื่องบินขยายและR ↦อิ่ม ( R ) 2 /2 | r | (กับ∞↦ 0) เป็นแผนที่ต่อเนื่องจากระนาบเชิงซ้อนที่ขยายออกไปถึง reals

(หมายเหตุ: แผนที่ที่สวยกว่าตามทฤษฎีที่มีคุณสมบัติเหมือนกันคือr ↦ (Im ( r ) / ( C + | r | 2 )) 2ซึ่งมีเส้นชั้นความสูง wrt ทั้งสี่จุดของอัตราส่วนข้ามเป็นวงกลมถ้าคุณต้องการ คุณอาจต้องการอันนั้น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.