ฉันประสบปัญหาใหญ่ในการใช้ฟังก์ชันใน Matlab ที่เรียกใช้ฟังก์ชันอื่นๆ ที่ฉันตั้งโปรแกรมไว้ในไฟล์ .m ที่แตกต่างกัน ส่วนที่ฉันติดอยู่คือส่วนที่นำผลรวมของค่าต่างๆ ที่ป้อนในฟังก์ชันอื่นมาใช้ โดยที่มีผลรวมในฟังก์ชันอื่นด้วย ขอบเขตล่างของผลรวมแรกคือขอบเขตบนของผลรวมที่สอง
ฉันมีฟังก์ชัน Hh(n,x) ทำงานอย่างถูกต้องสำหรับ n ที่ป้อนเป็นเวกเตอร์และ x ที่ป้อนเป็นสเกลาร์ เนื่องจากอินพุตแบบเวกเตอร์ของ n ผลรวมของ Hi ภายในฟังก์ชัน In จึงสามารถคำนวณได้อย่างรวดเร็วโดยการเรียกผลรวม (Hh(0:n,x))
ฉันต้องการทำเช่นเดียวกันกับฟังก์ชัน In แต่เนื่องจาก n ภายใน In ตอนนี้มีค่าตั้งแต่ 0 ถึง k-1 และในฟังก์ชันภายนอก k มีตั้งแต่ 1 ถึง n ฉันไม่รู้ว่าจะประเมินผลรวมสองเท่านี้อย่างไร โดยที่ค่าภายใน ผลรวมมีขอบเขตล่างของผลรวมภายนอกเป็นขอบเขตบน ฉันต้องการประเมินผลรวมสองเท่านี้อย่างมีประสิทธิภาพที่สุดเท่าที่จะเป็นไปได้ เนื่องจากในภายหลังฉันต้องการจำลองหลายๆ รายการด้วยสูตรเหล่านี้ ตอนนี้ฉันกำลังประเมินฟังก์ชันในจำนวน n ครั้ง โดยเก็บแต่ละค่าไว้ในเวกเตอร์ แล้วหาผลรวมซึ่งมีความเข้มข้นในการคำนวณมาก...
รหัส Matlab ของฉันสำหรับฟังก์ชัน In คือ:
function in = In(n,c,alphaa,betaa, delta)
ie = 0:n;
in = -(exp(alphaa*c)/alphaa)...
.*sum((betaa/alphaa).^(n-ie).*Hh(ie,betaa*c-delta))...
-(betaa/alphaa).^(n+1)
end
รหัส Matlab สำหรับฟังก์ชันภายนอก ให้เรียกมันว่าฟังก์ชัน f ในตอนนี้คือ:
function f = F(n,a,mu,sigma,eta1,T)
for k = 1: n
vector(k) = In(k-1,a-mu*T,-eta1,-1/(sigma*sqrt(T)),-(sigma*eta1*sqrt(T)));
end
f = sum(vector);
end
ฉันจะสร้างอินพุตของ n ข้างในในแบบเวกเตอร์ได้อย่างไร เพื่อที่ฉันจะได้ไม่ต้องเก็บค่า n ที่ป้อนทั้งหมดแยกจากกัน แล้วคำนวณผลรวม แต่คำนวณผลรวมโดยตรงสำหรับเวกเตอร์ที่ป้อน n
ขอขอบคุณความช่วยเหลือใด ๆ เนื่องจากฉันติดขัดอย่างจริงจังในขณะนี้! ขอบคุณล่วงหน้า!