在Matlab中使用symsum函数

时间:2014-01-21 20:40:27

标签: matlab

我需要解决这个等式来找到Y的值,因为我有所有其他参数。

功能是:

enter image description here

我已经用这种方式实现了这个功能。

f = @(x)-bond_price - accruedinterest + (principal/(1+x/200)^(N-1+(differenceindays/E)) + symsum((couponrate/2)/(1+x/200)^(k-1+(differenceindays/E)),k,2,N) + (couponrate/2)/((1+x/200)^(differenceindays/E)));
yield = fzero(f,0);

我得到的错误是:未定义的函数或变量'k'。

btw如何找到解决方案,使其等于零?

不确定我是否正确实施。需要一些指导。

1 个答案:

答案 0 :(得分:1)

您可以将symsum替换为sum并执行以下操作:

differenceindays = ...
E = ...
bond_price = ...
accruedinterest = ...
principal = ...
couponrate = ...
N = 100;
k = 2:N;
DSC_E = differenceindays/E;
f = @(x)-bond_price-accruedinterest+principal./(1+x/200).^(N-1+DSC_E) ...
        +sum(0.5*couponrate./(1+x/200).^(k-1+DSC_E)) ...
        +0.5*couponrate./(1+x/200).^DSC_E;

我还删除了一堆多余的括号以提高可读性。这应该与fzero一起使用(假设等式具有一个或多个写的根)。但当然我们无法测试它,因为它是所有未知的变量。