ฉันไม่ได้ใช้หลาม แต่ถ้าฉันเข้าใจถูกต้องแล้ว
F( r ) =∫R0Y( x ) dx
คุณกำลังคิดอะไรบางอย่างเช่น
F = i n t e g r a t e ( y , x )
ที่ไหน
F =[F1, . . . ,Fn] คือการสุ่มตัวอย่างเวกเตอร์อินทิกรัลเหนือกริด
x.
อย่างไรก็ตามคุณไม่มีตัวอย่างของ x และ Yแต่คุณมีตัวอย่างของ x^= บันทึก( x ) และ Y^= บันทึก( y).
แน่นอนวิธีการที่ง่ายที่สุดจะเป็น
F =ฉันn ทีอีกรัมR ทีอี (ประสบการณ์(Y^) , exp(x^) ) ,
แต่นี่อาจเป็นข้อผิดพลาดได้ง่ายเพราะ
Y( x ) ไม่ราบรื่นแม้ว่า
Y^(x^) คือ.
ทีนี้กฎรูปสี่เหลี่ยมคางหมูถือว่าอินพุตของคุณเป็นหลักY( x )เป็นเส้นตรงเชิงเส้น ดังนั้นการวางนัยทั่วไปจะให้คุณสมมติว่าY^(x^) เป็นเส้นตรงเชิงเส้น
ในกรณีนี้ให้นิยาม ΔFk=Fk + 1-Fk, คุณมี
ΔFk=∫xk + 1xkY( x ) dx =∫x^k + 1x^kอีY^(x^)อีx^dx^=∫x^k + 1x^kY~(x^) dx^
จากนั้นกำหนด t = (x^-x^k) / Δx^k, คุณมี
Y^k + t≈Y^k+ t ΔY^k
และ
Y~( t ) ≈ aอีขทีกับ
a =อีY^k+x^k และ
b = ΔY^k+ Δx^k.
ดังนั้นอินทิกรัลจึงกลายเป็น
ΔFk≈ a Δx^∫10อีขทีdt = a Δx^อีข- 1ข
ใน Matlab สิ่งนี้จะดูเหมือน
dlogx=diff(logx); dlogy=diff(logy); k=1:length(logx)-1;
b=dlogx+dlogy; a=exp(logx+logy);
dF=a(k).*dlogx.*(exp(b)-1)./b;
F=cumsum([0,dF]);
หวังว่านี่จะช่วยได้!
(แก้ไข: คำตอบของฉันเป็นคำตอบเดียวกับคำตอบที่กระชับกว่าที่ Damascus Steel ให้เมื่อฉันพิมพ์ความแตกต่างเพียงอย่างเดียวคือฉันพยายามให้คำตอบเฉพาะสำหรับกรณีที่ "เจาะจง" Y( x )"เป็นเส้นตรงจำนวนเต็ม Y^(x^) discretized กว่าไม่ต่อเนื่อง x^ ตาข่ายด้วย F(x^1) = 0.)