มีอัลกอริทึมเชิงตัวเลขสำหรับการค้นหาความชันแบบอะซิมโทติกหรือไม่?


23

ฉันมีชุดของจุดข้อมูลซึ่งผมคาดว่าจะ (โดยประมาณ) เป็นไปตามฟังก์ชั่นที่ asymptotes กับเส้นที่มีขนาดใหญ่xโดยพื้นฐานแล้วเข้าหาศูนย์เมื่อและสิ่งเดียวกันอาจจะกล่าวได้ว่าอนุพันธ์ของ ,เป็นต้น แต่ฉันไม่รู้ว่ารูปแบบการทำงานของf (x)คืออะไรถ้ามันมีรูปแบบที่สามารถอธิบายได้ในแง่ของฟังก์ชันพื้นฐาน(xi,yi)y(x)xf(x)y(x)(ax+b)xf(x)f ( x )f(x)f(x)

เป้าหมายของผมคือการได้รับการประมาณการที่ดีที่สุดของความลาดชันเชิง วิธีหยาบอย่างเห็นได้ชัดคือการเลือกจุดข้อมูลไม่กี่ครั้งล่าสุดและทำการถดถอยเชิงเส้น แต่แน่นอนว่าสิ่งนี้จะไม่ถูกต้องหากf (x)ไม่กลายเป็น "แบนพอ" ภายในช่วงของxที่ฉันมีข้อมูล ชัดเจนน้อยกว่าวิธีหยาบคายคือการสมมติว่าf (x) \ about \ exp (-x) (หรือรูปแบบการทำงานเฉพาะอื่น ๆ ) และพอดีกับที่ใช้ข้อมูลทั้งหมด แต่ฟังก์ชั่นง่าย ๆ ที่ฉันได้ลองเช่น\ exp (-x)หรือ\ dfrac1 {x}ไม่ค่อยตรงกับข้อมูลที่xต่ำโดยที่f (x)af(x)xf(x)exp(x)exp(x)1xxf(x)มีขนาดใหญ่ มีอัลกอริทึมที่รู้จักกันดีในการกำหนดความชันแบบอะซิมโทติคที่จะทำได้ดีกว่าหรืออาจให้ค่าความชันพร้อมกับช่วงความมั่นใจเพราะฉันขาดความรู้ว่าข้อมูลเข้าใกล้เส้นกำกับอย่างไร


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

ข้อมูลเชิงเส้นกำกับ

(ดูเหมือนว่าจะมีเส้นโค้งลงเล็กน้อยที่ค่า x สูง แต่โมเดลเชิงทฤษฎีสำหรับข้อมูลนี้ทำนายว่ามันควรจะเป็นเชิงเส้นเชิงเส้นกำกับ)


นี่อาจจะเป็นประถมเกินไป - หรือคลุมเครือเกินไป - สำหรับไซต์นี้ แต่ฉันคิดว่าเบต้าส่วนตัวเป็นเวลาที่จะลองทำสิ่งเหล่านี้
David Z

ไม่ฉันคิดว่านี่เป็นคำถามที่ดีมาก ไม่ใช่ทุกอย่างจะต้องทันสมัยและหรูหรา การแก้ปัญหาอย่างง่ายเป็นสิ่งสำคัญ
โคลิน K

@Dan: ถูกแทนที่เป็นธรรมจริงเหรอ? exp
JM

การมีพี่เลี้ยงมักจะทำให้สิ่งต่าง ๆ ยากขึ้นสำหรับฉันที่จะอ่าน แต่ฉันจะยอมรับว่ามันเล็กพอที่ฉันไม่ควรทำ
Dan

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

คำตอบ:


13

มันเป็นอัลกอริธึมที่ค่อนข้างหยาบ แต่ฉันจะใช้ขั้นตอนต่อไปนี้สำหรับการประมาณคร่าวๆ: ถ้าอย่างที่คุณบอกว่าที่อ้างถึงเกือบจะเป็นเส้นตรงแล้วเมื่อเพิ่มขึ้น d do คือรับความแตกต่างจากนั้นใช้อัลกอริทึมการประมาณเช่นการแปลงแชสต์เพื่อประเมินขีด จำกัด ของความแตกต่าง ผลที่ได้ก็คือการคาดคะเนความชันของซีมโทติคที่ดีนี้( x i , y i ) x y i + 1 - y if(x)(xi,yi)xyi+1yixi+1xi


สิ่งที่ตามมาคือการสาธิตMathematica วิลเลียมขั้นตอนวิธีการดำเนินงานที่เป็นความสะดวกสบายของการเปลี่ยนแปลงพระสาทิสลักษณ์และมันถูกสร้างขึ้นในขณะที่ (แอบ) ฟังก์ชั่น เราลองขั้นตอนในฟังก์ชั่นϵSequenceLimit[]

4x2+3+2x+e4x+3
xdata = RandomReal[{20, 40}, 25];
ydata = Table[(3 + 13*E^(4*x) + 6*E^(4*x)*x + x^2 + 3*E^(4*x)*x^2 + 
      2*E^(4*x)*x^3)/(E^(4*x)*(3 + x^2)), {x, xdata}];

SequenceLimit[Differences[ydata]/Differences[xdata],
              Method -> {"WynnEpsilon", Degree -> 2}]
1.999998

ฉันเช่นกันอาจแสดงให้เห็นว่าอัลกอริทึมง่ายแค่ไหน:

wynnEpsilon[seq_?VectorQ] := 
 Module[{n = Length[seq], ep, res, v, w}, res = {};
  Do[ep[k] = seq[[k]];
   w = 0;
   Do[v = w; w = ep[j];
    ep[j] = 
     v + (If[Abs[ep[j + 1] - w] > 10^-(Precision[w]), ep[j + 1] - w, 
         10^-(Precision[w])])^-1;, {j, k - 1, 1, -1}];
   res = {res, ep[If[OddQ[k], 1, 2]]};, {k, n}];
  Flatten[res]]

Last[wynnEpsilon[Differences[ydata]/Differences[xdata]]]
1.99966

การดำเนินการนี้จะดัดแปลงมาจากกระดาษ Weniger ของ


แค่อยากรู้ แต่ทำไมรูปแบบเดิมของฟังก์ชั่นแทนที่จะรวมคำทั้งหมด?
rcollyer

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

คะแนนที่ได้จะใกล้เคียงกันมากเพียงใดเพื่อให้อัลกอริทึมมีประสิทธิภาพ
rcollyer

2
โอเคคำถามสุดท้าย (ฉันสาบาน) คุณสามารถสร้างข้อผิดพลาดที่ถูกประเมินได้หรือไม่?
rcollyer

1
นั่นเป็นเรื่องยุ่งยากเล็กน้อย ฉันเคยเห็นวิธีการที่แนะนำในเอกสารบางฉบับ แต่ฉันยอมรับที่จะไม่ทำการทดลองกับพวกเขา (บางทีฉันควรได้สักวันหนึ่ง) หนังสือของ Brezinski และ Redivo-Zagliaมีตัวชี้บางอย่างที่คุณอาจต้องการดู
JM
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.