วิธีการเปรียบเทียบคุณสมบัติของสองเส้นโค้ง?


11

ฉันต้องเปรียบเทียบสองเส้นโค้ง f (x) และ g (x) พวกเขาอยู่ในช่วง x เดียวกัน (พูด -30 ถึง 30) f (x) อาจมียอดแหลมหรือยอดแหลมและหุบเขาที่ราบเรียบ g (x) อาจมีจุดสูงสุดและหุบเขาเหมือนกัน ถ้าเป็นเช่นนั้นฉันต้องการวัดว่าคุณสมบัติเหล่านี้ตรงกันมากเพียงใดโดยไม่มีการตรวจสอบด้วยภาพ ฉันพยายามแก้ไขปัญหาด้วยวิธีต่อไปนี้

  1. ทำให้ทั้งสองฟังก์ชั่นปกติด้วยการหารแต่ละจุดข้อมูลตามพื้นที่รวมของฟังก์ชั่น ตอนนี้พื้นที่ของฟังก์ชั่นปกติคือ 1.0
  2. ในแต่ละ x รับค่าต่ำสุดจาก f (x) และ g (x) นี่จะทำให้ฉันมีฟังก์ชั่นใหม่ที่เป็นพื้นซ้อนกันระหว่าง f (x) และ g (x)
  3. เมื่อฉันรวมฟังก์ชั่นที่เกิดขึ้นของขั้นตอนที่ 2 ฉันได้รับพื้นที่ทับซ้อนทั้งหมดจาก 1.0

อย่างไรก็ตามสิ่งนี้ไม่ได้บอกฉันว่ายอดเขาและหุบเขาตรงกับหรือไม่ ฉันไม่แน่ใจว่าสิ่งนี้สามารถทำได้ แต่ถ้ามีคนรู้วิธีฉันจะขอบคุณความช่วยเหลือของคุณ

== แก้ไข == สำหรับการชี้แจงฉันได้รวมภาพ

ตัวอย่างโค้ง

ความแตกต่างระหว่างเส้นโค้งทั้งสอง (สีดำและสีน้ำเงิน) อาจไม่เหมือนกัน แต่จะมีรูปร่างที่สมบูรณ์

ความเป็นมา: ฟังก์ชั่นการฉายความหนาแน่นของสถานะ (PDOS) ของอะตอมของวงโคจรของสารประกอบ ดังนั้นฉันมีสถานะเป็น s, p, d orbitals ฉันต้องการตรวจสอบว่าวัสดุมีการผสมแบบ sp, pd หรือ dd (การผสมแบบวงโคจร) ข้อมูลเดียวที่ฉันมีคือ PDOS ถ้าบอกว่า PDOS ของ s orbital (ฟังก์ชั่น f (x)) มียอดเขาและหุบเขาเหมือนกันที่พลังงาน (ค่า x) ของ PDOS ของ p orbital (ฟังก์ชั่น g (x)) มี sp ผสมในวัสดุนั้น


1
อาจจะนำไปที่mathoverflow.net ?
ร่าเริง

1
ฉันสงสัยว่าคนเสียงดิจิตอลมีปัญหาคล้ายกันหรือไม่
Dan Pichelman

ขอบคุณ Euphoric ฉันจะถามคำถามที่ mathoverflow.net เช่นกัน
laalee

@laalee โปรดอย่าถามคำถามของคุณในเว็บไซต์มากกว่าหนึ่งแห่งในเครือข่าย Stack Exchange Math Overflow เป็นคณิตศาสตร์ระดับการวิจัย Math Stack Exchange เป็นระดับที่ไม่ใช่การวิจัย ฉันสามารถโยกย้ายสิ่งนี้ไปยังคณิตศาสตร์หรือที่อื่นได้ถ้าคุณต้องการ
วิศวกรโลก

ฉันขอโทษ. ฉันพยายามลบมันใน mathoverflow แต่ฉันหาทางไม่เจอ ฉันจะขอบคุณถ้าคุณสามารถลบได้ ขอบคุณ
laalee

คำตอบ:


4

นี่เป็นปัญหาที่พบบ่อยและยากในการวิเคราะห์ทางเคมีฟิสิกส์สเปกโตรสโคปี ฯลฯ วิธีการที่ใช้นั้นมีตั้งแต่การเปรียบเทียบ RMSD แบบง่ายไปจนถึงวิธีการที่ซับซ้อนมาก หากงานนั้นไม่ใช่เรื่องง่ายโดยการตรวจสอบด้วยภาพ (มนุษย์ได้รับการพัฒนาอย่างประณีตสำหรับการจดจำคุณสมบัติ) ดังนั้นจึงเป็นไปได้ยากที่จะทำการคำนวณ

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

หลังจากลบพื้นฐานคุณสามารถทำให้ปกติและสร้างสิ่งที่เหลืออยู่หรือทำ RMSD (แนวทางแบบง่าย ๆ ) หรือลองตรวจสอบคุณสมบัติของยอดเขา / หุบเขาด้วยการปรับแบบเกาส์ หากคุณสามารถพอดีกับจุดสูงสุดคุณสามารถเปรียบเทียบตำแหน่งสูงสุดและครึ่งความกว้าง

ดู SciPy ถ้าคุณรู้จัก Python โชคดี.


ขอบคุณสำหรับคำตอบ. อย่างไรก็ตามฉันยังไม่ชัดเจนเกี่ยวกับวิธีการหาพื้นฐาน แต่ละกรณีจะมีฟังก์ชั่นที่แตกต่างกันซึ่งฉันไม่สามารถคาดการณ์ล่วงหน้าได้
laalee

3

นี่เป็นเพียง "ปิดส่วนหัวของฉัน" ดังนั้นฉันจึงสามารถเข้าใจปัญหาได้ทั้งหมด แต่บางทีคุณอาจใช้ระยะห่างจากรูท - เฉลี่ย - จัตุรัส (RMSD) กับฟังก์ชั่น หากคุณเพียงแค่สนใจยอดเขาและหุบเขาจากนั้นนำไปใช้กับบริเวณรอบ ๆ ยอดเขาและหุบเขา (นั่นคือสำหรับ x +/- เอปไซลอนบางตัวที่อนุพันธ์ของฟังก์ชันใดฟังก์ชันหนึ่งเป็นศูนย์) ถ้า RMSD ของช่วงนั้นใกล้ศูนย์แสดงว่าคุณมีคู่ที่ดีฉันคิดว่า


สิ่งนี้พิจารณาความแตกต่างระหว่างค่าซึ่งอาจไม่เป็นศูนย์แม้ว่ารูปร่างจะคล้ายกัน
laalee

3

ข้อมูลที่คุณกำลังค้นหานั้นถูกถ่ายทอดโดยฟังก์ชั่น“ tableau des แปรปรวน” - ฉันเสียใจอย่างยิ่งที่ฉันไม่รู้ชื่อภาษาอังกฤษสำหรับสิ่งนี้!

ตารางนี้เชื่อมโยงกับฟังก์ชั่น differentiable fและคุณสร้างมันโดยค้นหารากของf 'และกำหนดเครื่องหมายของf'ในแต่ละช่วงเวลาระหว่างศูนย์เหล่านี้

ดังนั้นถ้าค่าศูนย์ของf 'และg'มากหรือน้อยกว่ากันและสัญญาณของฟังก์ชั่นเหล่านี้เห็นด้วยพวกเขาจะมีโปรไฟล์ที่คล้ายกัน

สิ่งแรกที่ฉันจะลองโปรแกรมก็คือ:

  1. เลือกขนาดเล็กε
  2. วาดแบบสุ่มจำนวนมากยังไม่มีจุดx [ผม]ในช่วงเวลาที่ฟังก์ชั่นที่มีการกำหนดไว้

  3. สำหรับแต่ละโหนดให้คำนวณความแตกต่างF [i] = f (x [i] + ε) - f (x [i] - ε)และG [i] = g (x [i] + ε) - g (x [ผม] - ε)

  4. หากแต่ละโหนดF [i]และG [i]ทั้งคู่มีขนาดเล็กกว่าε²หรือมีทั้งเครื่องหมายเดียวกันสรุปได้ว่าทั้งสองฟังก์ชั่นเกือบจะมีโปรไฟล์เดียวกัน

มันใช้งานได้หรือไม่


ขอบคุณ michipili สำหรับคำตอบที่ลึกซึ้งของคุณ ขณะนี้ฉันกำลังพยายามทำตามกำหนดเวลา แต่ฉันจะใช้สิ่งนี้โดยเร็วที่สุดเท่าที่จะทำได้และแจ้งให้คุณทราบ
laalee

1

กำลังเดียรัจฉาน: หาค่าทศนิยมที่ไม่เป็นศูนย์ที่เล็กที่สุดด้วยค่านี้เป็นขั้นตอนไปยังโดเมนทั้งหมดและตรวจสอบว่าค่าเท่ากันหรือไม่

== แก้ไข ==

อืม ... ถ้าโดย "รูปร่างเดียวกัน" คุณหมายถึง g (x) = c * f (x) วิธีนี้ควรแก้ไข - สำหรับแต่ละองค์ประกอบของโดเมนที่คุณคำนวณ f (x) / g (x) และตรวจสอบว่า ผลลัพธ์จะเหมือนกันสำหรับแต่ละจุด (แน่นอนถ้า g (x) == 0 คุณตรวจสอบว่า f (x) == 0 คุณไม่ได้พยายามหาร)

ถ้า "รูปร่างเดียวกัน" หมายถึง "การปรับแต่งและจุดดัดในท้องถิ่นให้เหมือนกัน" ... ดีแล้วหาค่าที่เหมาะสมและจุดดัดในท้องถิ่นสำหรับ f (x) และ g (x) (เป็นชุดขององค์ประกอบของโดเมน) และตรวจสอบว่าสิ่งเหล่านั้น เซตเท่ากัน

ตัวเลือกที่สาม: f (x) = g (x) + c เพียงตรวจสอบว่าแต่ละองค์ประกอบของโดเมนมีความแตกต่างกัน f (x) -g (x) มันเกือบจะเหมือนกันเป็นกรณีแรก แต่แทนที่จะแบ่งคุณมีความแตกต่าง

== ยังแก้ไขได้อีก ==

ดี ... วิธีที่สองจากการแก้ไขข้างต้นอาจมีประโยชน์ นอกจากนี้คุณยังสามารถรวมมันเข้ากับการเปรียบเทียบสัญญาณแรกของ dervative (ไม่ใช่สัญลักษณ์ แต่คำนวณเป็น df (x) = f (x) - f (x-step)) หากทั้งสองฟังก์ชั่นมีสัญลักษณ์อนุพันธ์เดียวกันในโดเมนทั้งหมดให้ตรวจสอบออพติมัลและจุดดัดเพื่อให้แน่ใจ ฉันว่าเงื่อนไขนี้น่าจะเพียงพอที่จะทำสิ่งที่คุณต้องการ


ขอบคุณ Filip สำหรับคำตอบของคุณ แต่ฟังก์ชั่นอาจไม่มีค่าเท่ากัน แต่มีรูปร่างเหมือนกัน
laalee

ฉันย้ายความคิดเห็นนี้เพื่อตอบว่าเป็นการแก้ไข ลองดูสิ
Filip Malczak

ขอบคุณ Filip สำหรับคำตอบของคุณ ฉันได้เพิ่มภาพเพื่อชี้แจงปัญหาของฉัน
laalee

1

คุณสมบัติเหล่านี้มีความสอดคล้องกันมากเพียงใดโดยไม่มีการตรวจสอบด้วยภาพ

น่าจะเป็นวิธีที่ง่ายที่สุดคือการคำนวณค่าสัมประสิทธิ์สหสัมพันธ์เพียร์สัน นั่นคือใช้ f (x) ของคุณเป็น X และ g (x) เป็น Y อย่างมีประสิทธิภาพ "plot g (x) เป็นฟังก์ชันของ f (x) และดูว่ามันเป็นเส้นตรง" ได้ดีเพียงใด

ค่าสัมประสิทธิ์สหสัมพันธ์นั้นเป็นที่นิยมเพราะง่ายต่อการคำนวณและมักจะเป็นธรรมโดยการโบกมือ มันอาจเป็นการประมาณเริ่มต้นที่ดีสำหรับการใช้งานบางอย่าง แต่ไม่ใช่ยาครอบจักรวาล

เพื่อให้ได้ผลลัพธ์ที่ดีขึ้นในการใช้งานจริงคุณต้องเข้าใจสิ่งที่เกิดขึ้นในข้อมูลเช่นกระบวนการที่สร้างข้อมูล บ่อยครั้งที่มีพื้นหลังบางประเภทและคุณสมบัติที่น่าสนใจขึ้นไปบนพื้นหลังนั้น หากคุณโยนข้อมูลทั้งหมดลงในกล่องดำคุณอาจเปรียบเทียบพื้นหลังส่วนใหญ่ได้: กล่องดำไม่รู้ว่าส่วนใดของข้อมูลที่เป็นส่วนที่น่าสนใจ ดังนั้นเพื่อให้ได้ผลลัพธ์ที่ดีกว่ามักจะเป็นความคิดที่ดีที่จะลบพื้นหลังอย่างใดอย่างหนึ่งแล้วเปรียบเทียบสิ่งที่คุณมี การติดตั้งเส้นหรือเส้นโค้งหรือค่าเฉลี่ยและการลบหรือหารด้วยตัวกรองการกรองความถี่ต่ำแบนด์แบนด์หรือสูงการป้อนข้อมูลผ่านฟังก์ชั่นไม่เชิงเส้นบางอย่าง ... คุณตั้งชื่อมัน

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

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