如何解决Matlab计算具有不同折现率的债券价格
我绝对是新程序员,我完全陷入Matlab中的一个问题。
我们需要计算不同折现率的债券价格。债券的价格由给定年份的现金流量(给定)之和除以折扣系数得出。
如果只有一个比率,这是一个相当简单的功能。但是,当存在比率向量时,由于矩阵大小,它会变得复杂,因此您需要使用for循环。我的代码如下:
function c = bond_price(DF,T,R)
c = sum(DF./(1+R).^T);
end
DF1 = [62.5 62.5 62.5 62.5 62.5 62.5 62.5]; %this is given
T1 = (1:7); %also given
R1 = (0 : 0.01 : 0.10); %also given
prices = zeros(1,length(R1);
for k = 1 : length(R1)
prices(k) = prices + vec_sum(DF1,T1,R1(k));
end
有人知道为什么这行不通吗?
解决方法
Q :“ ...为什么不起作用?”
第一个原因(可在此处修复):
syntax error
>>> prices = zeros(1,length(R1);
^
第二个原因(此处不确定):
function c = bond_price( DF,T,R )
c = sum( DF./( 1 + R ).^T );
end
DF1 = [62.5 62.5 62.5 62.5 62.5 62.5 62.5]; %% this is given
T1 = (1:7); %% also given
R1 = (0 : 0.01 : 0.10); %% also given
%% ---------------------------------<as-was>-state
%% syntax error
%%
%% >>> prices = zeros(1,length(R1);
%% ^
prices = zeros( 1,length( R1 ) );
for k = 1 : length( R1 )
prices(k) = prices + vec_sum( DF1,T1,R1(k) );
end
%% --------------------------------<syntax-repaired>-state
%% error: 'vec_sum' undefined near line 16 column 26
%%
随意修复您的代码并re-test问题,因为vec_sum()
应该位于源代码中的“附近”,不是吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。