Saya mengalami kesulitan besar dalam mengimplementasikan fungsi di Matlab yang memanggil fungsi lain yang telah saya program dalam file .m yang berbeda. Bagian di mana saya terjebak adalah bagian di mana jumlah dari nilai-nilai berbeda yang dimasukkan dalam fungsi lain diambil, di mana ada juga jumlah di dalam fungsi lainnya. Batas bawah penjumlahan pertama adalah batas atas penjumlahan kedua.
Saya memiliki fungsi Hh(n,x) yang berfungsi dengan baik untuk n yang dimasukkan sebagai vektor dan x yang dimasukkan sebagai skalar. Karena masukan vektor n, jumlah Hi di dalam fungsi In dapat dihitung dengan cepat dengan memanggil sum(Hh(0:n,x)).
Saya ingin melakukan hal yang sama untuk fungsi In, tetapi karena n di dalam In sekarang berkisar dari 0 hingga k-1 dan di fungsi luar k berkisar dari 1 hingga n, saya tidak tahu bagaimana cara mengevaluasi jumlah ganda ini, di mana bagian dalam jumlah memiliki batas bawah dari jumlah terluar sebagai batas atas. Saya ingin mengevaluasi jumlah ganda ini seefisien mungkin, karena nanti saya ingin melakukan banyak simulasi dengan rumus ini. Sekarang saya mengevaluasi fungsinya dalam n kali, menyimpan setiap nilai dalam sebuah vektor dan kemudian mengambil jumlahnya, yang sangat intens secara komputasi...
Kode Matlab saya untuk fungsi In adalah:
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
Kode Matlab untuk fungsi luar, sebut saja fungsi f untuk saat ini adalah:
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
Bagaimana cara membuat input n di dalam In menjadi vektor, sehingga saya tidak perlu menyimpan semua nilai n yang dimasukkan secara terpisah lalu menghitung jumlahnya, tetapi menghitung langsung jumlah untuk vektor n yang dimasukkan.
Bantuan apa pun dihargai karena saya benar-benar terjebak saat ini! Terima kasih sebelumnya!