用牛頓迭代法計算附息式國債的收益率(matlab函式版)
阿新 • • 發佈:2019-02-10
用牛頓迭代法計算附息式國債的收益率(matlab函式版)
- main函式
%main.m
clear;
a=155.45;
b=11.83;
d=100.0;
k=6;
e=0.85;
f=1.1;
g=0.00001;
x=gznewton(a,b,d,k,e,f,g)-1;
fprintf('SYL is %f\n',x);
- gznewton函式
%gznewton.m
%gznewton(a,b,d,k,e,f,g)
function product=gznewton(p0,c,m,n,t,y0,wc)
done=0;
y=y0;
while 1
fy=p0*power(y,n+t)-c-m;
fy1=p0*(n + t)*power(y,n+t-1 );
for i=0:1:n-1
fy=fy-c*power(y,n-i);
fy1=fy1-c*(n-i)*power(y,n-i-1);
end
if fy1 ~= 0
newton=y-fy/fy1;
if(abs(newton-y)<wc || abs(newton-y0)>0.2)
done=1;
else
y=newton;
end
else
done=1;
fprintf('down=%d\n' ,done);
end
if done
break;%跳出迴圈
end
end
%return newton;
product=newton;